IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Utilisation de window.location


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 33
    Par défaut Utilisation de window.location
    Bonjour à tous,

    Actuellement je cherche à utiliser les variables de session dans le but d'améliorer mon code qui me permet de connaître les dimensions de l'écran du visiteur.
    Tout fonctionne mais j'ai découvert en "trifouillant" dans les différents sites que je devais penser au fait que la variable $_SESSION['screenlargeur'] obtenue grâce à $_GET[width']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_GET['width'])) $_SESSION['screenlargeur']= $_GET['width'];
    pourrait ne pas exister et que dans ce cas il faudrait ajouter, en javascript, la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT LANGUAGE="JavaScript" type="text/javascript">
    window.location="<?php echo $_SERVER["PHP_SELF"];?>?width="+screen.width+"&height="+screen.height;
    </SCRIPT>
    Est-ce que l'un d'entre vous pourrait m'en expliquer, pas à pas, sa signification et son fonctionnement ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,

    C'est un velouté de légumes. (Une manière polie de dire : c'est de la soupe )

    Ce genre de code, qui mélange JS et PHP, est à éviter pour sa santé d'esprit. Cela dit, son principe est simple : il s'agit de faire une redirection JavaScript en ajoutant des paramètres GET à l'URL.

    Par exemple si l'utilisateur a un affichage de 1280*960px, et arrive sur la page /bidule.php dans laquelle il y a ce bout de code, il est redirigé via JS vers l'adresse /bidule.php?width=1280&height=960.

    La variable $_SERVER['PHP_SELF'] a l'avantage de toujours contenir le nom du fichier PHP sans les éventuelles variables GET qui vont avec (pour plus de détails, voir (en) differences between PHP_SELF, REQUEST_URI and SCRIPT_NAME). Au moment où le PHP est interprété (côté serveur), le code suivant est produit (en vert la partie modifiée) :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT LANGUAGE="JavaScript" type="text/javascript">
    window.location="/bidule.php?width="+screen.width+"&height="+screen.height;
    </SCRIPT>
    Ce code, après avoir traversé les tuyaux du Net et atterri dans le navigateur, sera interprété comme une balise HTML de script, puis le script sera interprété par le moteur JavaScript. À ce moment, la page est rechargée avec les paramètres GET ajoutés à l'URL, et ainsi ces paramètres sont envoyés au serveur.

    (Aparte: ça se passe toujours dans cet ordre (PHP tuyaux HTML JS), et j'insiste sur ce point : on peut avoir l'illusion qu'on peut mélanger sans souci du code PHP et du code JS, et un beau jour on se retrouve avec des variables indéfinies ou des erreurs de syntaxe, et on ne comprend pas d'où ça vient. De nombreux débutants se font piéger.)

    Cette solution a trois problèmes, outre sa désuétude – aujourd'hui on écrit les balises HTML en minuscules et on ne met plus l'attribut language.

    Premièrement, le fait de recharger la page avec des paramètres GET ajoutés passe pour une nouvelle demande du point de vue du cache. Une nouvelle requête part vers ton serveur, traverse le Net, occupe un moment ton serveur, puis la réponse traverse le Net dans l'autre sens, et le navigateur analyse à nouveau le code HTML en entier alors qu'en réalité, rien n'a été modifié. Ce n'est pas efficace.

    Deuxièmement, elle suppose que l'utilisateur a JavaScript activé (si tu es attentif(ve) tu auras noté que j'ai parlé à plusieurs reprises de redirection JS : pas de JavaScript, pas de redirection) et que les valeurs de screen sont correctes. Ce n'est pas toujours le cas : ça peut varier suivant la plateforme (PC, mobile ou tablette), l'OS, le navigateur et les extensions.

    Même si tu ne te soucies pas des différentes plateformes, tu dois quand même avoir à l'esprit que le JavaScript peut être volontairement détourné pour envoyer des valeurs erronées à ton serveur, dans le but d'en découvrir des faiblesses.
    Par exemple, je peux ouvrir la console de mon navigateur (dans le menu « outils de développement » présent dans tous les navigateurs modernes) et préparer une requête Ajax vers ton serveur, avec les paramètres que je veux. Pire, je peux simplement ajouter ces paramètres GET à la main dans la barre d'adresse, sans même avoir besoin d'une console.

    Troisièmement, ce n'est pas efficace de faire participer le serveur dans le processus d'amélioration de l'affichage. (à moins que tu aies juste envie de collecter des statistiques). L'affichage c'est l'affaire de CSS, et aujourd'hui avec les media queries et autres techniques de responsive design, on peut faire des choses tout à fait satisfaisantes uniquement côté client. Je te laisse le loisir de te documenter sur les techniques CSS (et inévitablement, les solutions de remplacement en JavaScript pour les vieux navigateurs) et, pourquoi pas, d'aller poser des questions dans les forums CSS de Développez.com
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 33
    Par défaut utilisation de window.location
    Ouaaa...ah,

    Je crois que je vais devoir relire tes explications à tête reposée. Je ferai cela demain.
    Toutefois encore un grand merci pour avoir répondu d'abord aussi vite et ensuite de façon aussi claire, précise et complète.
    Je te souhaite une bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. surcharger window.location.reload
    Par aeled dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/01/2006, 17h48
  2. window.location dans une variable ?
    Par jpic dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/12/2005, 17h24
  3. window.location href bizarre
    Par siddh dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 15h09
  4. Petit pb javascript ! window.location
    Par Atomikx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/05/2005, 11h06
  5. Problème de redirection avec window.location
    Par Kosti dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/11/2004, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo