Mobile Switch / Redirect

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mobile Switch / Redirect

    Hallo, ich habe ein Problem. Folgenden Code nutze ich für eine Weiterleitung auf meine Mobile Variante:
    PHP Code:
    <?
    $isMobile = false;
    $isBot = false;

    $op = strtolower($_SERVER['HTTP_X_OPERAMINI_PHONE']);
    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
    $ac = strtolower($_SERVER['HTTP_ACCEPT']);
    $ip = $_SERVER['REMOTE_ADDR'];

    $isMobile = strpos($ac, 'application/vnd.wap.xhtml+xml') !== false
            || $op != ''
            || strpos($ua, 'sony') !== false 
            || strpos($ua, 'symbian') !== false 
            || strpos($ua, 'nokia') !== false 
            || strpos($ua, 'samsung') !== false 
            || strpos($ua, 'mobile') !== false
            || strpos($ua, 'wap1.') !== false
            || strpos($ua, 'wap2.') !== false;

            $isBot =  $ip == '66.249.65.39' 
            || strpos($ua, 'googlebot') !== false 
            || strpos($ua, 'chtml generic') !== false
            || strpos($ua, 'nokia6230i/. fast crawler') !== false;
            
    if($isMobile){
        header('Location: /mobile/');
        exit();
    }
    ?>
    Das Problem ist, das ich leider nicht in der Lage bin, von der Mobilen auf die Desktop Variante zu linken, ohne das ich sofort zurück geschmissen werde. Ich leite im Moment von der Mobilen per Link auf nen Cookie der Weiterleitet:

    PHP Code:
    <?php
    $appname 
    "seilermobile";
    setcookie("DV"$appnametime()+60*60*24*365);

    session_start();
    $_SESSION['DV'] = true;
    header('Location: http://normale-version.com');
    ?>
    Kann mir jemand sagen wie ich das hinbekomme, dass ich von der Mobilen auf die Desktop komme ohne gleich immer wieder weitergeleitet zu werden?

    mein gedanke war nun zu sagen
    wenn du ismobile bist und den cookie DV nicht besitzt, dann gehe auf mobile- aber das bekomme ich nicht gebacken, ich dachte das geht so:

    PHP Code:
    if($isMobile) && ($_COOKIE['DV'] != 'true'){header('Location: /mobile/');
        exit();

    funktioniert nur leider nicht
    Beste Grüße
    Last edited by webdesignberlin; 15-03-2011, 10:10.

  • #2
    Session und Cookie? Entweder willst du es nur für diesen Besuch, dann Session, oder du willst es als quasi-dauerhafte Einstellung, dann Cookie. Beides zusammen ist Käse.

    Und bei dem letzten Code-Schnipsel fehlen Klammern um die If-Bedingungen. ;-)

    Comment


    • #3
      Danke für die Antwort, was wäre denn sinnvoller? Wahrscheinlich ein Cookie oder?

      du meist so?
      PHP Code:
      if{($isMobile) && ($_COOKIE['DV'] != 'mobilecookie')}{header('Location: /mobile/');
          exit();

      und bei der cookie.php die session weg?
      PHP Code:
       <?php
      $appname 
      "mobilecookie";
      setcookie("DV"$appnametime()+60*60*24*365);
      header('Location: http://normale-version.com');
      ?>

      Comment


      • #4
        Runde Klammern!

        Comment


        • #5
          ups, ja falsche klammern:
          PHP Code:
          if(($isMobile) && ($_COOKIE['DV'] != 'mobilecookie')){
              
          header('Location: /mobile/');
             exit(); 
          mein browser hat auch den Cookie gespeichert, jedoch leitet er immer noch auf den Pfad /mobile weiter. Hab ich einen Denkfehler?
          Ich sage doch gerade: Wenn du ein mobiles Gerät bist, und einen Cookie DV hast ungleich mobilcookie, dann leite weiter. Aber ich habe doch einen Cookie der DV = mobilecookie ist, dann dürfte er mich doch nicht weiterleiten oder?

          Comment


          • #6
            Wenn
            PHP Code:
            (($isMobile) && ($_COOKIE['DV'] != 'mobilecookie')) 
            wahr wird, kann das nur zwei Ursachen haben: Entweder ist $isMobile false oder $_COOKIE['DV'] hat nicht den Wert "mobilecookie".

            Beides lässt sich mit var_dump() leicht herausfinden. ;-)

            Comment


            • #7
              hmmm, ich glaube das funktioniert alles nicht. der cookie wird schon gesetzt, leider scheint wordpress diesen nicht zu erkennen -.-

              Comment


              • #8
                Ich kenne Wordpress nicht so genau. Es könnte eine Sicherheitsvorkehrung sein. Vielleicht entfernt WP alle Superglobals, die es nicht kennt. Wenn das so ist, gibt es aber bestimmt eine WP-Methode, das Cookie zu setzen. Schon mal nach Wordpress + Cookie gegoogelt?

                Comment

                Working...
                X