• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

mobile Version einer Website (Erkennung und Speicherung)

J

j-l-n

Guest
[GELÖST] mobile Version einer Website (Erkennung und Speicherung)

Ich möchte - wie auf vielen Webseiten eingesetzt (z.B. FAZ, Spiegel, etc.) - mobile Geräte erkennen und diese auf eine vereinfachte Version umleiten.
Die Erkennung soll so funktionieren, dass im navigator-Namen nach Ausdrücken wie "Android/iPhone/usw." gesucht wird. Das bekomme ich schon ganz gut hin. Zum Test wird einfach bei einem mobilen Browser eine alert-Meldung angezeigt.
Wie speichere ich nun in einem Cookie, dass es ein mobiles Gerät ist?
Außerdem soll bei einem Klick auf "Volle Version anzeigen" dies in einem Cookie gespeichert werden. Dieser Link soll nur auf der mobilen Version angezeigt werden.
Wenn dann der Besucher eine Seite weitergeht, soll geprüft werden, ob die Cookies existieren und ausgelesen werden, ob es sich um ein mobiles Gerät handelt und ob der Besucher trotzdem die volle Version angezeigt haben möchte.
Wenn das Cookie nicht existiert, soll wie oben per navigator-Auslese geprüft werden und bei einem mobilen Gerät in einem Cookie gespeichert werden.
Ich weiß nicht genau, wie ich das mit dem Cookiesetzen/-auslesen machen soll...
 
Zuletzt bearbeitet:
Hi,

Cookies auslesen/setzen wird hier ganz gut beschrieben: SELFHTML: JavaScript / Objektreferenz / document oder Galileo Computing :: JavaScript und AJAX – 12.3 Cookies mit JavaScript

Ich habe das bisher wie folgt gemacht:
- Prüfung ob der Cookie existiert und ob dort der gewünschte Wert drin steht (z.B. mobile=true)
- Wenn ja: Weiterleitung via location.href auf die Mobile Version
- Wenn nein: Prüfung des Headers, inkl. eventueller Weiterleitung bei einem Mobilen Endgerät
- Wenn man in der Mobilen Version auf den Link "Zur Desktop Version" klickt, wird der Cookie gelöscht oder überschrieben (mobile=false).


Ich hoffe das hilft dir schon mal weiter.


Gruß
 
Ich habe das bisher wie folgt gemacht:
- Prüfung ob der Cookie existiert und ob dort der gewünschte Wert drin steht (z.B. mobile=true)
- Wenn ja: Weiterleitung via location.href auf die Mobile Version
- Wenn nein: Prüfung des Headers, inkl. eventueller Weiterleitung bei einem Mobilen Endgerät
- Wenn man in der Mobilen Version auf den Link "Zur Desktop Version" klickt, wird der Cookie gelöscht oder überschrieben (mobile=false).

Ich hoffe das hilft dir schon mal weiter.

Ja, dankeschön :D
So hab ich's mir vorgestellt. Jetzt muss ich nur noch das mit den Cookies hin bekommen...
 
Ich würde die Umleitung ja nicht auf der Clientseite machen. Die Umleitung, das setzten der Cookies und der zusätlich Link lassen sich sehr gut auch auf der Serverseite angehen und sind dann nicht vom Client abhängig.
 
Ich würde die Umleitung ja nicht auf der Clientseite machen. Die Umleitung, das setzten der Cookies und der zusätlich Link lassen sich sehr gut auch auf der Serverseite angehen und sind dann nicht vom Client abhängig.

Hatte ich auch schon überlegt. Dann könnte ich es z.B. über $_SESSION weitergeben...
Aber irgendwie bin ich gerade so drauf fixiert, das ich es nicht sehe: Wie suche ich in PHP nach dem Navigator-Namen oder gibt es eine andere Erkennungsmöglichkeit?
 
Erkennungsmöglichkeit $_SERVER['HTTP_USER_AGENT']
PHP:
$agent = $_SERVER['HTTP_USER_AGENT'];
function getSystem($useragent=$agent) {
	if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) { 
		return true;
	}
}
$mobile = getSystem();

Nicht gerade ein gut aussehender Weg aber so sollte es klappen
PHP:
if($mobile){
 header("location: angepassteSeite.php");
} else { 
echo "du bist nicht Mobil"; 
}

Grüße,

Hikaze
 
Nicht gerade ein gut aussehender Weg aber so sollte es klappen

Trotzdem vielen Dank, es kommt ja nur darauf an, ob es funktioniert, nicht wie es aussieht ;)

Jetzt fehlt nur noch das mit der Cookie Speicherung oder Weitergabe per $_SESSION, wenn ein mobiler Besucher die volle Seite sehen möchte...
 
PHP:
<?php
if($mobile){
 header("location: angepassteSeite.php");
 $_COOKIE["mobil"] = true;
} else { 
echo "du bist nicht Mobil"; 
}
//Irg. wo wo du dein "wechseln" haben möchtest
?>
Zur <a href="DEINESEITE.tld?switch_desktop">Desktop Ansicht</a>wechseln

if($_COOKIE["mobil"] === true && isset($_GET["switch_desktop"])){
 $_COOKIE["mobil"] = false;
 $_COOKIE["mobil_back"] = true;
 header("location: deineDesktopSeite.??");
}

// Damit der Mobile Benutzer WIEDER zurück wechseln kann nun

if($_COOKIE["mobil_back"] === true && $mobile){?>

Zur <a href="DEINESEITE.tld?switch_mobil">Mobilen Ansicht</a>wechseln

<?php
if($_COOKIE["mobil_back"] === true && $mobile && isset($_GET["switch_mobil"])){
 $_COOKIE["mobil"] = true;
 $_COOKIE["mobil_back"] = false;
 header("location: angepassteSeite.php");
}
}

?>
Immer noch nicht der schönste Weg aber es geht hier ja um die Funktionalität

Grüße
 
PHP:
<?php
if($mobile){
 header("location: angepassteSeite.php");
 $_COOKIE["mobil"] = true;
} else { 
echo "du bist nicht Mobil"; 
}
//Irg. wo wo du dein "wechseln" haben möchtest
?>
Zur <a rel="nofollow" href="DEINESEITE.tld?switch_desktop">Desktop Ansicht</a>wechseln

if($_COOKIE["mobil"] === true && isset($_GET["switch_desktop"])){
 $_COOKIE["mobil"] = false;
 $_COOKIE["mobil_back"] = true;
 header("location: deineDesktopSeite.??");
}

// Damit der Mobile Benutzer WIEDER zurück wechseln kann nun

if($_COOKIE["mobil_back"] === true && $mobile){?>

Zur <a rel="nofollow" href="DEINESEITE.tld?switch_mobil">Mobilen Ansicht</a>wechseln

<?php
if($_COOKIE["mobil_back"] === true && $mobile && isset($_GET["switch_mobil"])){
 $_COOKIE["mobil"] = true;
 $_COOKIE["mobil_back"] = false;
 header("location: angepassteSeite.php");
}
}

?>
Immer noch nicht der schönste Weg aber es geht hier ja um die Funktionalität

Grüße

Danke dir! :D Das Skript werde ich jetzt erstmal 1:1 über nehmen.
 
Die Logik stimmt aber noch nicht so 100%ig. Am Anfang wird das Cookie "mobil" immer auf true gesetzt, wenn in der Variablen $mobil true drin steht - es lässt sich also nicht "schalten".
 
Die Logik stimmt aber noch nicht so 100%ig. Am Anfang wird das Cookie "mobil" immer auf true gesetzt, wenn in der Variablen $mobil true drin steht - es lässt sich also nicht "schalten".
Stimmt habe das vergessen dafür ist ja Mobil back da
PHP:
 <?php
// Korrigiert 
if($mobile && $_COOKIE["mobil_back"] === false){
 header("location: angepassteSeite.php");
 $_COOKIE["mobil"] = true;
} else { 
echo "du bist nicht Mobil"; 
}
//Irg. wo wo du dein "wechseln" haben möchtest
?>
Zur <a rel="nofollow" href="DEINESEITE.tld?switch_desktop">Desktop Ansicht</a>wechseln

if($_COOKIE["mobil"] === true && isset($_GET["switch_desktop"])){
 $_COOKIE["mobil"] = false;
 $_COOKIE["mobil_back"] = true;
 header("location: deineDesktopSeite.??");
}

// Damit der Mobile Benutzer WIEDER zurück wechseln kann nun

if($_COOKIE["mobil_back"] === true && $mobile){?>

Zur <a rel="nofollow" href="DEINESEITE.tld?switch_mobil">Mobilen Ansicht</a>wechseln

<?php
if($_COOKIE["mobil_back"] === true && $mobile && isset($_GET["switch_mobil"])){
 $_COOKIE["mobil"] = true;
 $_COOKIE["mobil_back"] = false;
 header("location: angepassteSeite.php");
}
}

?>
 
Bitte helfen! ;)
Irgendwas stimmt da überhaupt nicht - habe das Skript heute eingebaut und es wird nur eine weiße Seite angezeigt...
Testlink: (EDIT: alte Version, Link entfernt. Testlink im aktuellen Beitrag)
 
Zuletzt bearbeitet:
Helfen läßt sich da wenig, du musst zuerst die Fehlermeldungen im PHP Skript aktivieren. Normlaerweise geht das mit error_reporting(E_ALL);
 
Ich hab jetzt mal die ganze Erkennung rausgenommen; jetzt zeigt die Seite zumindest was an...

Edit: Sobald ich den Teil mit der Erkennung wieder einfüge, bleibt die Seite weiß. :(
 
Zuletzt bearbeitet:
Nachdem ich's ein paar Mal ausprobiert habe: Der Teil mit der Erkennung des Useragent muss irgendwie - zumindest bei mir - Probleme machen. Nehme ich ihn raus, wird etwas angezeigt; lasse ich ihn im Skript, bleibt die Seite weiß. Hat irgendjemand eine Idee, was dafür verantwortlich sein könnte?
 
Und den dazugehören PHP-Code brauchen wir natürlich auch...

PS: PHP sollte dir aber trotzdem irgendwo auf dem Server sagen, was denn jetzt genau sein Problem ist. Irgendein Error-Log-File sollte da schon sein.
 
Zurück
Oben