Mobiele website
Quote:
Hallo,
Ik ben bezig met een mobiele pagina en zit met het volgende probleem.
Ik heb onderstaand script en dat zet ik op mijn normale website, dit werkt goed.
Alleen wil ik nu dat je als je op de mobiele website zit je op een linkje kan klikken om naar de gewone website te gaan. Dit werkt niet omdat, je dan weer direct wordt terug gestuurd door het script. Nou was mijn vraag hoe ik dit kon omzeilen....
Ik ben bezig met een mobiele pagina en zit met het volgende probleem.
Ik heb onderstaand script en dat zet ik op mijn normale website, dit werkt goed.
Alleen wil ik nu dat je als je op de mobiele website zit je op een linkje kan klikken om naar de gewone website te gaan. Dit werkt niet omdat, je dan weer direct wordt terug gestuurd door het script. Nou was mijn vraag hoe ik dit kon omzeilen....
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if (isset($useragent))
{
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)))
{
header('http://mobiele versie/');
//echo 'u heeft een mobieltje';
}
else
{
header('http://desktop versie/');
//echo "u heeft geen mobieltje";
}
}
?>
$useragent=$_SERVER['HTTP_USER_AGENT'];
if (isset($useragent))
{
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)))
{
header('http://mobiele versie/');
//echo 'u heeft een mobieltje';
}
else
{
header('http://desktop versie/');
//echo "u heeft geen mobieltje";
}
}
?>
Gewijzigd op 20/02/2012 13:54:14 door Raymond van Os
Kijk of er een $_GET['mobile'] is gezet met waarde '1' en laat iedereen dan in elk geval de desktop versie bekijken. Dit kan je opslaan in een cookie, zodat ze bij de volgende pagina niet weer worden doorverwezen.
Quote:
Hoi,
Allereerste bedankt voor je reactie.
Ik heb nu het volgende. Alleen slaat hij naar mijn idee de cookie niet op want, als ik hem aanroep op de pagina waar hij naar toe gaat door het linkje is er steeds geen cookie gezet.
Allereerste bedankt voor je reactie.
Ik heb nu het volgende. Alleen slaat hij naar mijn idee de cookie niet op want, als ik hem aanroep op de pagina waar hij naar toe gaat door het linkje is er steeds geen cookie gezet.
Mobiel index.php-----
Code (php)
Desktop index.php-----
Code (php)
Verder zou ik overwegen of je wel gebruik van een cookie wilt maken. Ik ben zelf altijd fan van een sessions(). Een sessie is server side data en is lastiger te manipuleren. Bij een cookie kunnen gebruikers er allerlei data in stoppen, als ze weten hoe dat moet. (vraag is natuurlijk wel of het in dit geval uitmaakt).
Gewijzigd op 20/02/2012 15:18:34 door Bas IJzelendoorn
Ik maak gebruik van een cookie omdat, ik een gebruiker wil laten kiezen
of hij voor bijvoorbeeld een uur lang standaard de desktop versie wil krijgen.
maar toch bedankt.
dannog is het een goed idee om het op te slaan in een sessie. het gebruik van een sessie is vrijwel gelijk aan die van een cookie. daarnaast heb jij alle controle, een gebruiker kan dit niet zomaar aanpassen. bij een cookie is dat veel makkelijker. zoals bas het aangaf, het is de vraag of het wel uitmaakt, maar ik vind het een goede gewoonte om gewoon altijd sessies te gebruiken
Zo is er bij een volgend bezoek ook direct de gewenste versie te zien.
Deze cookie wordt pas geset als iemand ?mobile=true of ?mobile=false wordt aangeroepen (dmv de linksjes onderaan op de mobiele én desktop-versie).
Daarnaast is er vaak ook heel veel te doen met media-queries. Dan is er geen schakelen tussen versies, maar verschilt alleen de CSS. En dat is genoeg.
Dan werkt het ook bij kleinere/smallere vensters op de dekstop.
Zunflappie hoe zou je dit dan doen met een sessie en een cookie? En hoe doe je dat dan met die twee linkjes? Is dat iets met onclick.doe dit.
Bestaat hij? Laat de site zien.
Bestaat hij niet? Ga dan naar de mobiele!
Toevoeging op 20/02/2012 18:32:26:
Code (php)
Gewijzigd op 20/02/2012 18:33:18 door - Diov -
In de desktopversie: index.php?mobile=true >> gaat dus naar mobiele versie
In de mobiele versie: index.php?mobilie=false >> gaat dus naar PC-versie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
function get_var($var)
{
// globaal beschikbaar maken van $_SESSION (als deze dat nog niet is)
if(!isset($_SESSION))
{
global $_SESSION;
}
// $_GET override altijd $_SESSION en $_COOKIE, want die is nieuw
if(isset($_GET[$var]) AND !empty($_GET[$var]))
{
// is deze $var met true of equavalent gevuld?
if($_GET[$var] == true OR $_GET[$var] == 1 OR $_GET[$var] == 'ja')
{
$_SESSION[$var] = true;
}
elseif($_GET[$var] == false OR $_GET[$var] == 0OR $_GET[$var] == 'nee')
{
$_SESSION[$var] = false;
}
// set cookie/sessie
if(!isset($_COOKIE[$var]))
{
setcookie($var, $_SESSION[$var], time()+365*24*60*60);
}
}
// geen GET, wel een COOKIE, dus pak die
elseif(isset($_COOKIE[$var]))
{
$_SESSION[$var] = $_COOKIE[$var];
}
// geen GET, geen COOKIE, dus php kijkt of het een mobiel apparaat is
else
{
$_SESSION[$var] = is_mobile(); // andere functie dus
}
// niet nodig, aangezien deze GLOBAL is, maar altijd iets teruggeven!
return $_SESSION[$var];
}
// kijk naar $mobile hoe deze staat
$var = get_var('mobile');
echo $var; // geeft false of true
?>
De functie die ik gebruik gebruik ik voor andere variabelen ook.
Onderaan wel iets aangepast (bij de functie is_mobile() ).
function get_var($var)
{
// globaal beschikbaar maken van $_SESSION (als deze dat nog niet is)
if(!isset($_SESSION))
{
global $_SESSION;
}
// $_GET override altijd $_SESSION en $_COOKIE, want die is nieuw
if(isset($_GET[$var]) AND !empty($_GET[$var]))
{
// is deze $var met true of equavalent gevuld?
if($_GET[$var] == true OR $_GET[$var] == 1 OR $_GET[$var] == 'ja')
{
$_SESSION[$var] = true;
}
elseif($_GET[$var] == false OR $_GET[$var] == 0OR $_GET[$var] == 'nee')
{
$_SESSION[$var] = false;
}
// set cookie/sessie
if(!isset($_COOKIE[$var]))
{
setcookie($var, $_SESSION[$var], time()+365*24*60*60);
}
}
// geen GET, wel een COOKIE, dus pak die
elseif(isset($_COOKIE[$var]))
{
$_SESSION[$var] = $_COOKIE[$var];
}
// geen GET, geen COOKIE, dus php kijkt of het een mobiel apparaat is
else
{
$_SESSION[$var] = is_mobile(); // andere functie dus
}
// niet nodig, aangezien deze GLOBAL is, maar altijd iets teruggeven!
return $_SESSION[$var];
}
// kijk naar $mobile hoe deze staat
$var = get_var('mobile');
echo $var; // geeft false of true
?>
De functie die ik gebruik gebruik ik voor andere variabelen ook.
Onderaan wel iets aangepast (bij de functie is_mobile() ).