[PHP] Récupérer la résolution d'ecran

Récupérer la résolution d'ecran [PHP] - Programmation

Marsh Posté le 03-08-2001 à 14:53:59    

Bon ça fait un ptit bout de tps que je suis là dessus et là je craque  :pt1cable:  j'y arrive po  :(  J'ai pourtant essayé plein de truc mais ça veux po marcher  :cry:  
Si qlq1 à un script qui peux faire ça ce serait cool :D


---------------
Q.G Tutoriaux ici
Reply

Marsh Posté le 03-08-2001 à 14:53:59   

Reply

Marsh Posté le 03-08-2001 à 14:56:50    

en fait faut recuperer la résolution en Javascript ...
 
tu peux faire comme ça :
 
<?  
if(empty($res))  
{  
echo '<script language="JavaScript">  
<!-- debut  
document.location="page.php3?res=1&w="+screen.width+"&h="+screen.height;  
// fin -->  
</script>';  
}  
else  
{  
echo "Résolution d'écran : ".$w."*".$h;  
}  
?>

Reply

Marsh Posté le 03-08-2001 à 15:03:36    

Voilà un script en jscript...
 
<SCRIPT language="JScript">
<!--
if (window.screen)
{
  var wi=screen.availWidth;//permet d'avoir la largeur
  var hi=screen.availHeight;//permet d'avoir la largeur
//les deux instructions suivantes permettent d'agrandir le fenêtre.
  window.moveTo(0,0);
  window.resizeTo(wi,hi);
}
-->
</SCRIPT>

Reply

Marsh Posté le 03-08-2001 à 15:15:20    

Ben en fait g déjà testé les deux mais y'a comme un bug :p
 
Pour le premier script, la page se reload en boucle :??:
Pour le second, ben y a pas de bug c juste que je l'ai déjà fait en js et que je veux faire le maximum en php :p
 
En fait, je veux avoir la possibilité de choisir le lien vers ma page principale (après page d'index) en fonction du navigateur et de la résolution de l'utilisateur.
 
Ce serait un truc du genre le gars se connecte, le script reconnait sa résolution et son navigateur et change le lien vers la page suivante en fonction des paramètres précédent. C faisable ça ?! Le seul pb c que ça bug et que je commence à m'embrouiller :p


---------------
Q.G Tutoriaux ici
Reply

Marsh Posté le 03-08-2001 à 15:27:46    

c'est possible .. il faut juste que tu utilises les fonctions du jscript pour recuperer les données ... aprés tu fais ce que tu veux en php ...  
 
et pour passer des données de JS vers php, je ne sais pas faire autrement qu'en rechargeant la pas ...
 
si ça boucle c'est pas normal au fait ... t'as mis la bonne page dans la redirection ?

Reply

Marsh Posté le 03-08-2001 à 15:28:07    

oui c'est faisable du moins, je pense:
Dans ta page d'accueil, tu mets un formulaire avec deux input de type hidden.
dans ces deux input(nommés largeur, hauteur), tu fous la largeur et la hauteur de ton écran. ensuite, tu fais appel à une fonction (javascript) qui redirige ta page vers ta seconde, dans laquelle, tu pourras reprendre la valeur des inputs de ton formulaire précédent.
normalement, çà devrait le faire.

Reply

Marsh Posté le 03-08-2001 à 15:28:34    

pour les données en javascript, je te conseil ce site :
 
http://www.editeurjavascript.com/p [...] ?id=csharp

Reply

Marsh Posté le 03-08-2001 à 17:29:10    

J'ai trouvé mon erreur pour la boucle et ça fonctionne à peu près si ce n'est que je n'arrive po à lui faire changer le lien en fonction du navigateur et de la résolution mais à part ça tout rulezz :sarcastic:  
 
Bon voici le code, peut-être que vous y verez plus kler que moi :p :
 
 
 
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
 
<body text="#E6EBF1" background="images/test.jpg" link="#E6EBF1" vlink="#E6EBF1" alink="#E6EBF1">
<?
include ("utilisateurs.php" );
 
if(empty($res))
{
 echo '<script language="JavaScript">
 <!-- debut
 document.location="index.php?res=1&width="+screen.width+"&height="+screen.height;
 // fin -->
 </script>';
}
else
{
 echo "Résolution : ".$width."*".$height."<br>\n";
}
 
if (ereg('MSIE', $HTTP_USER_AGENT) && !ereg('Opera', $HTTP_USER_AGENT))
{
 // Internet Explorer
 $navigateur="IE";
}
elseif (ereg('Opera', $HTTP_USER_AGENT))
{
 // Opera
 $navigateur="Opera";
}
elseif (ereg('Mozilla/4.', $HTTP_USER_AGENT))
{
 // Netscape 4.x
 $navigateur="NS";
}
elseif (ereg('Mozilla/5.0', $HTTP_USER_AGENT) && !ereg('Konqueror', $HTTP_USER_AGENT))
{
 // Netscape 6
 $navigateur="NS";
}
 
echo "Navigateur : $navigateur<br>\n";
echo "<p align = center>\n";
 
if ($navigateur='IE')
{
  echo "<br><br> ";
  if ($width = '1152')
  {
        echo '<b><a href="main-1152IE.php" target="_self">INDEX</a><b>';
  }
  else
  {
          echo '<b><a href="main-1024IE.php" target="_self">INDEX</a><b>';
  }
}
elseif ($navigateur='NS')
{
  echo "<br><br>";
 
  if($width = '1152')
  {
   echo '<b><a href="main-1152NS.php" target="_self">INDEX</a><b>';
  }
  else
  {
   echo '<b><a href="main-1024NS.php" target="_self">INDEX</a></b>';
  }
}
/*else
{
 echo "<br><br>";
 echo "<b><a href=\"main-1152IE.php\" target=\"_self\">INDEX</a><b>";
} */
 
echo "</p align = center>\n";
?>
</body>
</html>


---------------
Q.G Tutoriaux ici
Reply

Marsh Posté le 03-05-2017 à 14:57:43    

La discussion ancienne mais pour ce problème particulier, on ne trouvait pas de solution simple qui fonctionne.
 
J'ai trouvé une solution en utilisant des cookies.
 
Principe :

  • Javascript récupère la largeur et la hauteur de la fenêtre et l'enregistre dans des cookies valables jusqu'à la fermeture du navigateur.
  • PHP récupère les valeurs inscrites dans ces cookies.


En mettant le tout dans un seul fichier PHP, ça donne :
 

Code :
  1. <html>
  2. <head>
  3.     <title>Détermination et affichage de la taille de la fenêtre du navigateur</title>
  4.     <meta name=author content="Bernard Chardonneau">
  5.     <meta name=copyleft content="Téléchargement autorisé">
  6.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. </head>
  8. <body>
  9.     <script>document.cookie = "largeur=" + window.innerWidth + "; expires=0"</script>
  10.     <script>document.cookie = "hauteur=" + window.innerHeight + "; expires=0"</script>
  11. <?php
  12.     if (isset ($_COOKIE ['largeur']))
  13.     {
  14.         echo "    Largeur = ".$_COOKIE ['largeur']." pixels<br/>\n";
  15.         if (isset ($_COOKIE ['hauteur']))
  16.             echo "    Hauteur = ".$_COOKIE ['hauteur']." pixels<br/>\n";
  17.         else
  18.             echo "    Hauteur non disponible, réafficher la page<br/>\n";
  19.     }
  20.     else
  21.     {
  22.         if (isset ($_COOKIE ['hauteur']))
  23.         {
  24.             echo "    Hauteur = ".$_COOKIE ['hauteur']." pixels<br/>\n";
  25.             echo "    Largeur non disponible, réafficher la page<br/>\n";
  26.         }
  27.         else
  28.         {
  29.             echo "    Largeur et hauteur non disponibles, réafficher la page<br/><br/>\n";
  30.             echo "    Si ça ne marche toujours pas vérifiez les points suivants :\n";
  31.             echo "    <ul>\n";
  32.             echo "        <li>votre navigateur web doit accepter les cookies</li>\n";
  33.             echo "        <li>votre navigateur web doit utiliser javascript</li>\n";
  34.             echo "        <li>votre navigateur web doit être compatible</li>\n";
  35.             echo "    </ul>\n";
  36.         }
  37.     }
  38. ?>
  39. </body>
  40. </html>


 
L'exécution de cette page permet de comprendre le mécanisme de fonctionnement  :

  • La première fois que la page est affichée, la taille de la fenêtre n'est pas connue.
  • Si on recharge la page, on récupère ses dimensions.


Maintenant, modifions la taille de la fenêtre.
Il faudra recharger la page 2 fois pour en voir les nouvelles dimensions.
 

  • La première fois, javascript récupère les nouvelles dimensions de la fenêtre.
  • La fois suivante, PHP affiche les dimensions mesurées.


Si on a besoin d'avoir l'information du premier coup, on peut faire une page de redirection.
 
Fichier det_taille.html
 

Code :
  1. <html>
  2. <head>
  3.     <title>Détermination de la taille de la fenêtre du navigateur</title>
  4.     <meta name=author content="Bernard Chardonneau">
  5.     <meta name=copyleft content="Téléchargement autorisé">
  6.     <script>document.cookie = "largeur=" + window.innerWidth + "; expires=0"</script>
  7.     <script>document.cookie = "hauteur=" + window.innerHeight + "; expires=0"</script>
  8.     <meta http-equiv="refresh" content="0; url=aff_taille.php">
  9. </head>
  10. <body>
  11. </body>
  12. </html>


 
Fichier aff_taille.php (partiel)
 

Code :
  1. <html>
  2. <head>
  3.     <title>Affichage de la taille de la fenêtre du navigateur</title>
  4.     <meta name=author content="Bernard Chardonneau">
  5.     <meta name=copyleft content="Téléchargement autorisé">
  6.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. </head>
  8. <body>
  9. <?php
  10.     // ici on met le même script que dans le fichier PHP précédent (ou un autre)
  11. ?>
  12.     <br/>
  13.     <a href=det_taille.html>Réactualiser les dimensions</a>
  14. </body>
  15. </html>


 
Dans le cas de page web avec frames, les dimensions de la fenêtre peuvent être récupérées dans la page contenant le frameset  et utilisées immédiatement dans des morceaux de page générés en PHP.
 
Le bon fonctionnement des scripts ci dessus a été constaté avec plusieurs versions de Firefox, Opera et Google Chrome (bien que ce dernier ne semble pas aimer les serveurs web sur localhost).
 
Tel quels, ils ne fonctionnent pas ni avec Internet Explorer ni même avec Micro$oft Edge.
Je présume que c'est volontaire de la part du fabricant de ces produits, car dans le cas contraire, ils avaient plus de 10 ans pour assurer la compatibilité de leur javascript.

Reply

Marsh Posté le 03-05-2017 à 15:21:06    

Sinon en 2017 je ne vois pas trop à quoi ça peut servir. Le CSS permet de faire des choses qui s'adaptent à la résolution.
Au pire il faut raisonner dans l'autre sens, anticiper les résolutions possibles du côté PHP pour ensuite sélectionner la bonne en JS.
Et enfin, toujours dans l'optique on est en 2017, il existe AJAX qui permet d'envoyer des requêtes et les traiter sans recharger la page.
 
Pour finir, même si en effet je ne suis pas partisan des stratégies propriétaires, il suffit de détecter le navigateur utilisé pour écrire une condition permettant de déterminer les bonnes dimensions quelque soit le navigateur utilisé.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed