Gerald12: Verzweigung nach Prüfung auf mobiles Endgerät

Eine html-Datei (index. html) soll prüfen, ob die Seite durch ein mobiles Endgerät aufgerufen wird. Dazu soll der php-Code aus dem Forum verwendet werden: http://aktuell.de.selfhtml.org/artikel/css/mobile-endgeraete/.

Mir ist jetzt nicht klar, wie ich den Code sinnvoll einbaue. Als separate php-Datei funktioniert es ja.

Im Prinzip soll  verzweigt werden - wenn es kein mobiles Gerät ist, soll die index.html weiter ausgeführt und wenn doch, am besten eine separate Datei (mobile.html) ausgeführt werden.

Geht das? Besten Dank für Eure Hilfe.

  1. Mir ist jetzt nicht klar, wie ich den Code sinnvoll einbaue. Als separate php-Datei funktioniert es ja.

    Und Du weißt jetzt nicht, wie Du php-code in eine HTML Datei einfügst oder wie muß ich Dein Post deuten?

    Gruß, Silvester

    1. Mir ist jetzt nicht klar, wie ich den Code sinnvoll einbaue. Als separate php-Datei funktioniert es ja.

      Und Du weißt jetzt nicht, wie Du php-code in eine HTML Datei einfügst oder wie muß ich Dein Post deuten?

      Gruß, Silvester

      Hallo Silvester,

      doch, das ist natürlich klar. Ich weiß aber nicht, wie ich das Ausführen der "normalen" index.html verhindern soll, wenn "mobile" erkannt wird. Deshalb dachte ich, ich setze eine index.php die prüft und dann jeweils eine der beiden html-Dateien aufruft (s. u.). Und zum Aufrufen fehlt mir halt der richtige Befehl - oder funktioniert das so gar nicht??? Bzw. wie kann ich den php-Code in die html-Datei einbinden und dort die 2 Wege darstellen??

      VG gerald

      --------------------
      <?php
      function check_mobile() {
        $agents = array(
          'Windows CE', 'Pocket', 'Mobile',
          'Portable', 'Smartphone', 'SDA',
          'PDA', 'Handheld', 'Symbian',
          'WAP', 'Palm', 'Avantgo',
          'cHTML', 'BlackBerry', 'Opera Mini',
          'Nokia'
        );

      // Prüfen der Browserkennung
        for ($i=0; $i<count($agents); $i++) {
          if(isset($_SERVER["HTTP_USER_AGENT"]) && strpos($_SERVER["HTTP_USER_AGENT"], $agents[$i]) !== false)
            return true;
        }

      return false;
      }

      if(check_mobile()) { Aufruf "mobile.html";}
      else {Aufruf "nicht_mobile.html";}

      ?>

      1. if(check_mobile()) { Aufruf "mobile.html";}
        else {Aufruf "nicht_mobile.html";}

        Ah, ok. Jetzt hab ich verstanden, was Du suchst.

        Gruß, Silvester

        1. Vielen Dank, sieht ja erstmal gut aus ...

        2. Hallo,

          habe nach Deinem Tipp:

          <?php
          if(check_mobile()) {
          header( "Location: http://www.xx.de/mobile.html" );
          exit;
          }
          else {
          header( "Location: http://www.xx.de/index.html" );
          exit;
          }
          ?>

          eingebaut, leider funktioniert es aber nicht. Hast Du noch ne Idee??

          1. Hi,

            <?php
            if(check_mobile()) {
            header( "Location: http://www.xx.de/mobile.html" );
            exit;
            }
            else {
            header( "Location: http://www.xx.de/index.html" );
            exit;
            }
            ?>

            eingebaut, leider funktioniert es aber nicht.

            was heißt "funktioniert nicht"?

            Typischer Fehler: Du hast vor der header-Anweisung schon eine Ausgabe an den Client gesendet, und sei es nur ein Zeilenumbruch oder eine BOM. Dann würdest du allerdings eine Fehlermeldung bekommen, die etwas wie "Headers already sent" enthält.

            Abgesehen davon: Warum willst du erst noch eine Weiterleitung? Warum nicht die gewünschten Inhalte je nach Bedingung direkt ausgeben?

            So long,
             Martin

            --
            Soziologen sind nützlich, aber keiner will sie haben.
            Bei Informatikern ist es gerade umgekehrt.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Hallo Martin,

              danke für die Hilfe. Das vor "Header" nichts kommen darf, hatte ich gelesen - jedoch ein ähnliches Beispiel gefunden, naja. Wie würde es denn mit "Header" funktionieren?

              Im Prinzip weiß ich auch nicht, wie man in einer html-Datei verzweigen kann - nach der obigen Prüfung mit php (ich weiß,ich weiß da nicht viel ...)

              Grüße

          2. eingebaut, leider funktioniert es aber nicht. Hast Du noch ne Idee??

            Ist schon so, wie Martin schrieb. Typischerweise hast Du schon irgendwas zuvor an den Client gesendet.

            Die Frage ist aber tatsächlich: Warum erst groß umleiten? Und warum eine index.html, wenn Du doch eben so gut eine index.php nutzen kannst?

              
            <?php  
            if(check_mobile()) {  
            // bla  
            //blub  
            //blub  
            exit;  
            }  
            else {  
            // bla blub blub  
            exit;  
            }  
            ?>  
            
            

            Aber auch die Verzweigung funktioniert, wenn korrekt angewendet.

              
            <?php  
            if(check_mobile()) {  
            header( "Location: http://localhost/mobile.html" );  
            exit;  
            }  
            else {  
            header( "Location: http://localhost/index.html" );  
            exit;  
            }  
              
              
            function check_mobile() {  
              $agents = array(  
                'Windows CE', 'Pocket', 'Mobile',  
                'Portable', 'Smartphone', 'SDA',  
                'PDA', 'Handheld', 'Symbian',  
                'WAP', 'Palm', 'Avantgo',  
                'cHTML', 'BlackBerry', 'Opera Mini',  
                'Nokia'  
              );  
              
              // Prüfen der Browserkennung  
              for ($i=0; $i<count($agents); $i++) {  
                if(isset($_SERVER["HTTP_USER_AGENT"]) && strpos($_SERVER["HTTP_USER_AGENT"], $agents[$i]) !== false)  
                  return true;  
              }  
              
              return false;  
            }  
            ?>  
            
            

            Gruß, Silvester