Récuperation d'une variable javascript ds du code php

Nouveau WRInaute
'lut a tous,

j'aimerai savoir comment il est possible de recuperer dans du code php la valeur d'une variable déclarée ds un javascript.

Du php vers le javascript, ca j sais faire
mais l'operation inverse reste pour moi une enigme

Merci de m'aider !! :)
Bye !!!
 
WRInaute passionné
Salut

Etant donné que le php est interprété par le serveur, tu dois repasser par celui-ci d'une façon ou d'une autre. Plusieurs solutions : un formulaire, un lien, l'ouverture d'un popup, l'utilisation d'une frame cachée contenant un fichier Php que tu rechargerais en lui passant la variable, etc. Certains utilisent même du flash pour ce genre de trucs ;)
Pour ma part je préfère le formulaire ou le lien.

Fred
 
WRInaute discret
ou bien une phase du genre (dans le cas ou l'on a besoind e la résolution du client dans un script PHP, pour par exemple, faire des stats par résolution)

<SCRIPT>
<!--
var w = screen.width;
var h = screen.height;

top.document.location = "mapage.php?w="+w+"&h="+h;
//-->
</SCRIPT>

------------------------
dans ton mapage.php

echo $_GET['w'].' << largeur<BR>'.$_GET['h'].' << hauteur';


A+
youplaboum!
sepang
 
Nouveau WRInaute
salut il est peut être un peu tard pour te donne une info sur ta kestion, mais je viens de m'y mettre sur php ^^, et moi aussi je suis confronte a se petit pb.
g trouve comme astuce pour passe directement une variable jscript dans du ph:


<script>
var toto = 1
document.write(toto);


</script>
<?
$Titre = "<script>document.write(toto);</script>";
?>
<?
echo $Titre;
?>

voilou, mais pour c n'est ke debut d'une grande prise de tete sur ce ki me reste a faire ^^
A++
 
WRInaute impliqué
Ta solution est étonnante!
Je n'avais jamais essayé cela.

Par contre, es-tu sûr que cela marche?
Je veux dire: le php est toujours exécuté avant le javascript, puisque qu'il est est exécuté sur le serveur et le JS sur la machine du visiteur.
Donc, c'est étonnant que cela marche...
 
WRInaute passionné
Ca marchera mais j'ai du mal à voir l'intérêt...

Pourquoi ça marche -> lorsque tu fais le echo $titre, ça affiche dans la page le code javascript document.write(toto), donc ça écrit le contenu de toto dans le document. Mais cela implique que toto soit déjà connu, donc autant l'afficher directement.

Tu aurais un exemple concret de ce que ce code t'a permis de faire et qui n'aurait pas été possible autrement ?

Fred
 
Nouveau WRInaute
Alors, je suis tombé sur ce topic par hazard et j'ai trouvé des réponses tellement erronées que certains feraient bien de
s'abstenir.
Exemple : La réponse de Sun_one est tellement absurde qu'on se demande s'il sait ce qu'est passer une variable.
Il faudrait lui demander comment il manipule la variable toto dans son script php et il verrait très vite la faiblesse de son code.
Sérieusement, passer une variable se fait en attribuant la valeur de cette variable à une nouvelle variable dans php et pas en faisant un string du nom de la variable. Sun_one devrait essayer d'incrémenter, ou de modifier la nature de la variable pour bien comprendre.

Comme l'ont dit d'autres, il faut utiliser des techniques pour passer une variable via un lien, un formulaire, ...
Mais la technique que je préfère, est d'utiliser une iframe et ma page php principale. L'iframe recevra les variables Javascript qu'elle pourra traiter dans un script php. Pour les afficher sur la page principale sans recharger la page, chaque événement Javascript faisant appel à l'iframe modifiera le contenu d'un <DIV> en modifiant le .innerhtml. C'est d'ailleurs ce que fait AJAX d'une certaine manière :p
 
Nouveau WRInaute
Il suffit de rejouer la page avec la variable passée en paramètre que l'on récupère dans une variable de session.
Exemple pour récupérer les dimensions de l'écran en PHP :
<?php
session_start();
if (isset($_GET['width'])) $_SESSION['screenW']= $_GET['width'];
if (isset($_GET['height'])) $_SESSION['screenH']= $_GET['height'];
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>taille ecran</title>
<?php
if (!isset($_SESSION['screenW'])) { ?>

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
document.location="<?php echo $_SERVER["PHP_SELF"];?>?width="+screen.width+"&height="+screen.height;
</SCRIPT>
<?php } ?>
</head>
<body>
<div align="center">
<h4> dimensions de l'&eacute;cran en pixels :</h4>
<b> <?php print 'largeur= '.$_SESSION['screenW'].' hauteur= '.$_SESSION['screenH']; ?> </b>
</div>
</body>
</html>
 
Nouveau WRInaute
J'ai fini par trouver une autre solution simple à ce problème : utiliser des cookies.

- Javascript enregistre la variable à récupérer dans un cookie valable jusqu'à la fermeture du navigateur.
- PHP récupère la valeur inscrite dans ce cookie.

Des exemples de code pour récupérer la taille de la fenètre se trouvent dans cette discussion :
https://www.webrankinfo.com/forum/taille-fenetre-php-t89689.html#p1563552
 
Discussions similaires
Haut