[RESOLU] resolution screen et variable php

Eléphant du PHP | 163 Messages

22 août 2014, 11:55

Bonjour,

Je cherche le moyen de détecter la résolution de mes internautes. Je sais qu'on ne peut pas faire ça en php seul. En soit rien de méchant sauf que je dois récupérer cette valeur de hauteur et largeur en php et vous savez comme moi que php s'exécute avant javascript donc impossible de manipuler mes variables. J'ai vu une technique qui marche et qui consiste à poster les infos en méthode GET mais je ne suis pas fan du principe, je trouve que ça fait bidouille. Il n'existe vraiment pas de méthode simple et fiable pour faire cela ? Je pensais à l'Ajax. Est-ce possible selon vous ? Jquery ?

Merci de votre aide.

do_ok

ViPHP
xTG
ViPHP | 7331 Messages

22 août 2014, 11:58

En Ajax c'est faisable mais c'est le même principe.
Tu n'auras côté client que la mise à jour du code serveur réactualisé qu'à la prochaine requête.

Le plus simple reste encore de stocker le résultat en variable de session.
Si quand tu ouvres la session tu n'as pas l'information, tu exécutes un script JS qui récupère l'information et qui effectue une redirection avec les infos en GET.
Puis tu stockes l'info en session.
C'est un minimum transparent pour l'utilisateur.

Tu peux aussi utiliser les cookies à la place d'une variable de session si tu souhaites garder l'information plus longtemps. (bien que c'est relatif vu que certains clients vident leurs cookies à la fermeture)

Eléphant du PHP | 163 Messages

22 août 2014, 13:01

Slt xTG,

En ajax je pensais faire le ping pong au load de la page tu m'suis ? mais je ne sais faire/si c'est possible :-k
Transparent ? On voit quand même les infos dans l'url, non ? Ca fait pas trop "cracra" ?
apparemment c'est celle qui semble la plus répandue :?

ViPHP
xTG
ViPHP | 7331 Messages

22 août 2014, 17:23

Tu fais un ping-pong de quoi ?
Si tu utilises de l'ajax je suppose que ta page a déjà été chargée et est affichée à l'utilisateur.
Si on part du principe que la requête dure 5secondes (pire des cas, souci de réseau, ect) l'utilisateur va donc voir pendant 5secondes une interface qui va ensuite se redimensionner/changer ?

Moi dans un cas comme ça je préfère avoir une redirection, l'url c'est le cadet des soucis de l'utilisateur question ergonomie...
Si tu veux vraiment la cacher passes la requête par POST, mais s'il veut faire un F5 ça va lui faire drôle...

Expliques nous ce que la taille d'écran change et on pourra peut être mieux comprendre et t'aiguiller. :)

Eléphant du PHP | 163 Messages

23 août 2014, 18:58

D'accord avec toi finalement, "notre bonheur" ci-dessous :
<?php
session_start();
if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
   echo "je fais ce que je veux !";
} else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
    $_SESSION['screen_width'] = $_REQUEST['width'];
    $_SESSION['screen_height'] = $_REQUEST['height'];
    header('Location: ' . $_SERVER['PHP_SELF']);
} else {
    echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
}
?>
do_ok