Mobile Switch / Redirect

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von webdesignberlin; 15.03.2011, 11: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. ;-)

    Kommentar


    • #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');
      ?>

      Kommentar


      • #4
        Runde Klammern!

        Kommentar


        • #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?

          Kommentar


          • #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. ;-)

            Kommentar


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

              Kommentar


              • #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?

                Kommentar

                Lädt...
                X