• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mobile Seite mit switch auf Desktop Ansicht

AzRaIL

Mitglied
Nabend,

ich soll eine Mobile Seite erstellen mit der Möglichkeit für den Nutzer auf die Desktop Ansicht zu wechseln.
Habe Online schon einige Lösungsvorschläge gefunden und versucht in meinen Code zu implementieren. Jedoch klappt es noch nicht ganz.

Mein Ansatz bisher:

index.php
PHP:
session_start();
require_once 'php/Mobile_Detect.php';

if (isset($_GET['v']) && $_GET['v'] == 'desktop') {
    $_SESSION['v'] == 'desktop';
    header('Location: http://www.root.com');
}
if (!isset($_SESSION['v']) || (isset($_SESSION['v']) && $_SESSION['v'] != 'desktop')) {
    $detect = new Mobile_Detect;
    if ($detect->isMobile()) {
        header('Location: mobile/mobile.php');
    }
}

In der mobile.php starte ich ebenfalls eine Session.
Dazu steht in dem Quelltext dann noch ein link mit folgender Adresse

<a href="http://root.com?v=desktop">Zur Desktopansicht</a>

So wie ich das bisher verstehe übergebe ich den Parameter "v" mit dem Inhalt "desktop" über die URL und frage dann in meiner index Datei ab ob eben genau dieser Parameter gesetzt ist. Wieso ich dann $_SESSION benutze weiß ich nicht mehr.

Falls der Parameter nicht vorhanden ist soll ganz normal zur mobilen Seite redirected werden, was auch klappt.
Kann mir jemand erklären was es mit dem $_SESSION auf sich hat und was es in meinem Beispiel bewirken soll.
Wenn der Parameter v gesetzt ist sollte ja eigentlich nicht mehr zur mobilen Seite weitergeleitet werden...

lg
 
Werbung:
Eine Session dient dazu, Daten temporär zu speichern und zwischen den einzelnen Unterseiten weiterreichen zu können. Sie endet in dem Moment, wo der Browser geschlossen wird. Wenn die Entscheidung des Users permanent gespeichert werden soll, müsstest du zusätzlich ein Cookie setzen.

Überlege aber vorher, ob die Unterteilung in Desktop und mobile Seite wirklich sinnvoll ist. Das träfe z.B. dann zu, wenn bereits eine umfangreiches Portal vorhanden wäre, das sich nicht oder nur schwer an mobile Auflösungen anpassen ließe, ansonsten wäre eine responsive Seite der bessere Weg.

Das Problem mit diesen "Mobile Detect Frameworks" besteht darin, dass so etwas wie Mobile Device Detection per Browser afaik gar nicht möglich ist. Tatsächlich handelt es sich nur um eine Sammlung von User Agent String zzgl. Erkennung der Viewport Size und die Useragents ändern sich mit jeder neuen Browserversion. Um hier auf dem aktuellen Stand zu bleiben, müsste so ein Framewok ständig upgedatet werden.
 
Also die Seite an sich ist schon komplett vorhanden mit allen Unterseiten etc. (Ist in Joomla gemacht).
Soll auch nicht responsive sein sondern lediglich eine Seite für mobile Geräte (mobile.php) mit etwas Inhalt.
Das klappt ja auch soweit.

Was du meinst ist wahrscheinlich das hier:
PHP:
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|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|\-[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|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
header('Location: http://mywebsite.com/mobile');?>

Es gab auch ein Beispiel bei dem Cookies verwendet wurden, was nach Angaben des Authors auch funktioniert haben soll.
PHP:
<?php

if (isset($_COOKIE['nomobile'])) {
   $version ="desktop";}
else {
   if(preg_match('/iPhone|(...etc...)/', $_SERVER['HTTP_USER_AGENT'])){
      $version ="mobile";
   }
}

if($version =="mobile"){
   header('Location: http://yourwebsite.com/mobile');
}

?>

PHP:
<?php
setcookie('nomobile','true');
header('Location: http://yourwebsite.com');?>

Jedoch verstehe ich hierbei die Logik nicht wo ich das Cookie setzen soll und wie ich es per Klick auf den Link auf der mobilen Seite machen kann.
 
Werbung:
Zurück
Oben