Weiterleitung auf mobile Version mit Cookie

unwohltaeter

Mitglied
Hallo!

Habe eine (Wordpress-)Seite bei der ich eine Weiterleitung für mobile Geräte gesetzt habe.
Nun möchte ich aber, dass der Besucher auf der mobilen Seite, auf die er am Anfang weitergeleitet wurde, einen Link anklicken kann, durch den er wieder auf die normale Version kommt.

Die Adresse der normalen Seite sieht etwa so aus: http://www.blabla.de / blabla.de
Die Adresse der der mobilen Version sieht so aus: m.blabla.de

Der Code für die Weiterleitung:
PHP:
function is_mobile(){
	$regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
	$regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
	$regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";	
	$regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
	$regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
	$regex_match.=")/i";		
	return isset($_SERVER['HTTP_X_WAP_PROFILE']) or
	isset($_SERVER['HTTP_PROFILE']) or 
	preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT'])
	);
}

Das Ganze sollte eigentlich irgendwie per Cookies zu lösen sein, nur komme ich leider nicht auf die Lösung.
Kann mir jemand weiterhelfen?

Gruß, unwohltaeter
 
einfach in der index.php (oder auch index.html, je nach dem), die in dem virtuellen Host für m.blabla.de im DocumentRoot liegt den Link einbauen. Wozu sollte man da Cookies benötigen?
 
Weil:
Die Seite soll Besucher, die mit Handy bzw. Smartphone auf die Seite gelangen automatisch auf die Mobilversion weiterleiten. Wenn der Besucher das aber nicht wünscht, kann er einen Link anklicken, der ihn wieder auf die normale Seite zurückführt und die automatische Weiterleitung deaktiviert. Dazu braucht man vermutlich wirklich Cookies.
 
Stimmt, jetzt wo ich den Plan sehe:

Du rufst in einem PHP-Script, was im DocumentRoot von http://www.blabla.de liegt diese Funktion is_mobile() auf bzw. packst sie in eine if-Condition. Im Falle von true leidest du mittels header()-Funktion zu http://m.blabla.de/ um.

Auf m.blabla.de (was ein anderer virtueller Host sein dürfte, man kann mich hier aber auch gern korrigieren) wird in einem Script ein Link hinterlegt, der zu einem lokalen Script von m.blabla.de führt. Dieses lokale Script hat nun die Aufgabe eine Session-Variable für blabla.de oder auch ein Cookie, sollte beides funktionieren, zu setzen und anschließend mittels header-Funktion auf http://www.blabla.de zurück.

Dann müsste man zu der is_mobile()-Prüfung nur noch die UND_NICHT-Verknüpfung hinzufügen, ob eine bestimmte Session-Variable oder ein Cookie gesetzt ist.
 
Habe es nun selbst lösen können:

Weiterleitung
PHP:
function is_mobile(){
    $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
    $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
    $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";    
    $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
    $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
    $regex_match.=")/i";        
    return isset($_SERVER['HTTP_X_WAP_PROFILE']) or
    isset($_SERVER['HTTP_PROFILE']) or 
    preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT'])
    );
}

Cookies
PHP:
setcookie('mobile',$_GET['mobile'], time()+604800);
if (!isset($_COOKIE["mobile"]) && is_mobile() OR $_COOKIE["mobile"] == "yes" && is_mobile()) { header ("Location: http://m.blabla.de/"); }
else if (isset($_COOKIE["mobile"])) OR $_COOKIE["mobile"] == "no" {}

Die letzte Zeile ist eigentlich nicht nötig aber ich habe sie trotzdem gerne im Code, falls ich mal was daran ändern müsste.
 
Zuletzt bearbeitet:
Dann steuer mal was Vernünftiges zur Problemlösung bei. :P

Übrigens: Mit dem Emulator aus dem Android-SDK funktioniert es bestens. Komisch.
Dennoch: Ich brauch etwas, dass auch mit 'nem z.b. in Firefox emulierten User-Agent funktioniert.
 
Zuletzt bearbeitet:
Zurück