Umleitung auf mobile Seite

achterbahnfreak

Erfahrenes Mitglied
Hi,

ich suche einen (einfachen - wirklich einfachen) Php Code, der mir die Besucher auf meine Seite http://www.test.de/mobile umleitet, wenn sie ein mobiles Gerät besitzen. Ich habe schon gegoogelt, aber irgendwie verwirrt mich alles :(
Hat jemand ne simple Lösung für mich, die ich in meine index.php einpacken könnte (besteht größtenteils aus HTML.

Danke :)
 
Letztlich geht es darum, den Header abzufragen und danach zu entscheiden, ob Smartphone/Mobilgerät oder Desktop-System.

Hier ist ein wirklich einfaches Beispiel, wie es für iPhone aussieht
http://www.mobilewebdesign.de/?p=55

Über einen Einzeiler wirst Du es nicht hinbekommen, das sollte klar sein. Für die höchstmögliche Absicherung müsste man nach mehr als dem Header fragen, denn auch Mobilbrowser dürfen ihre wahre Identität verschleiern ;)
http://phpforum.de/forum/showthread.php?t=264692

mfg chmee
 
Du musst für jedes Device eine neue else-if-Bedingung setzen:

Code:
<?php
if(eregi(”iPhone”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location: http://m.mwxp.de/iweiche/iphone.php”);
} else if(eregi(”Android”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location: http://m.mwxp.de/iweiche/android.php”);
}
...

Beachte aber, dass eregi() seit PHP 5.3.0 DEPRECATED (also veraltet) ist, und es u.U. zu fehlern kommen kann..
Darum arbeite besser mit preg_match()...
Code:
if(preg_match(”iPhone”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location: http://m.mwxp.de/iweiche/iphone.php”);
} else if(preg_match(”Android”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location: http://m.mwxp.de/iweiche/android.php”);
}
...

Genauere Infos siehe hier
 
Zuletzt bearbeitet:
Natürlich nicht, du kannst zum Abschluss der else-if-Bedingungen noch per
Code:
} else { header(”Location: http://m.mwxp.de/iweiche/normaleseite.php”); }

Einen Fallback für alle anderen Devices setzen.
 
Also passt das so? Funkitoniert es jetzt, dass ich mit einem Samsung Handy auf die mobile Seite umgeleitet werde?

<?php
if(preg_match(”iPhone”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”Android”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”Blackberry”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”Nokia”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”Google”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”Samsung”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
} else if(preg_match(”HTC”,$_SERVER[”HTTP_USER_AGENT”])){
header(”Location:
?>
 
Zuletzt bearbeitet:
Ok. Das war aus deiner Frage schon ersichtlich. Ich werd trotz Deines Wunsches nach eine kurzen und knappen Antwort, ein bisschen ausholen, wirst nicht der Einzige sein, der etwas dazu erfahren will :)

Der Code sucht im Header, genauer, dem User-Agent nach dem Begriff iphone.
Code:
Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
So sieht der User-Agent eines Firefox auf einem Windows-System aus.
Und darunter der Browser eines IPhone.
Code:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3

And then Google built Chrome, and Chrome used Webkit, and it was like Safari, and wanted pages built for Safari, and so pretended to be Safari. And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to be Mozilla, and Chrome called itself Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13, and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded.
http://webaim.org/blog/user-agent-string-history/

So :) Sorry, abgeschweift. Nun zum php-Code. Die Abfrage mehrerer Begriffe müsste mit einem kombinierten logischen Oder gemacht werden, ob nun als php-code oder als Regexpattern.

Da ich keine Ahnung habe, wie sich die ganzen Geräte verhalten - und wieviel es sind, gebe ich Dir nur ein Beispiel für Android und Iphone, soweit einfach, dass Du selbst hinzufügen kannst, was benötigt wird - bisschen lesen wird aber wohl nötig sein..

PHP:
<?php
$regex = "/(android|iphone)/i";
# getrennt durch den Strich 
preg_match ($regex, $_SERVER['HTTP_USER_AGENT'], $output);

if($output)
{
  header('Location: http://m.mwxp.de/mobil/index.php');
} else {
  header('Location: http://m.mwxp.de/index.php');
}
?>
Dass dies eben nicht immer zum Erfolg führt, sollte klar sein, wenn man sieht, wieviele verschiedene Kennungen für verschiedene Gerät/Browser-Kombinationen existieren. Deswegen gibt es Klassen, die einem das Tohuwabohu abnehmen. Siehe oben, zweiter Link oder Hier

mfg chmee
 
Zuletzt bearbeitet:
Zurück