Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: Flomaluso le le 28-06-2013 a 12:42:22

Titre: Passer une variable Javascript dans PHP
Posté par: Flomaluso le le 28-06-2013 a 12:42:22

Salut tout le monde :)

Je m'excuse par avance si je me suis trompé de partie du forum pour poster ce sujet. J’hésitais entre PHP/MySQL et Javascript / DOM / Ajax et j'ai finalement décidé de le poster ici.

Alors voilà mon problème, après plusieurs recherches sur internet et plusieurs tests, je n'ai toujours pas réussi à récupérer une variable javascript et l'insérer dans du PHP.
Je sais que JavaScript et un langage coté utilisateur et PHP coté serveur, mais visiblement il y en à qui arrivent à récupérer la valeur de la variable du script et de l'utiliser avec PHP.

Plus concrètement, j'ai un script qui demande leur prénom au gens afin de rendre un peu le site interactif puisqu'il leur dit bonjour et j'aimerais pouvoir utiliser le nom qu'il rentre avec PHP. (Sachant aussi que se prénom et enregistré dans un cookies.)

Voici le script pour ceux qui veulent :


Code:
<SCRIPT language="JavaScript" title="Bonjour">

var caution = false
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
if (!caution || (name + "=" + escape(value)).length <= 4000)
document.cookie = curCookie
else
if (confirm("Cookie exceeds 4KB and will be cut!"))
document.cookie = curCookie
}
function getCookie(name) {
var prefix = name + "="
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT"
}
}
function fixDate(date) {
var base = new Date(0)
var skew = base.getTime()
if (skew > 0)
date.setTime(date.getTime() - skew)
}
var now = new Date()
fixDate(now)
now.setTime(now.getTime() + 31 * 24 * 60 * 60 * 1000)
var name = getCookie("name")
if (!name)
name = prompt("Entrez Votre Prénom:", "Mon prénom")
setCookie("name", name, now)
document.write("Bonjour" + name + "! = )")

</SCRIPT>


Merci par avance pour votre aide = )
A très bientôt,
Flo

Titre: Re:Passer une variable Javascript dans PHP
Posté par: GuillaumeRoos le le 28-06-2013 a 15:21:02

Est-ce que le fait que le cookie et tout le reste soient créés en javascript a une véritable importance pour le fonctionnement du site ou pas ?

Parce que, si ce n'est pas le cas, autant faire un bête formulaire en html pour récupérer le nom et le prénom et tout faire en php directement derrière (cookie, traitement des infos, date d'expiration, etc...). Ça sera plus simple et plus efficace.

Titre: Re:Passer une variable Javascript dans PHP
Posté par: Flomaluso le le 29-06-2013 a 10:55:24

Bonjour GuillaumeRoos,

Merci pour ta réponse :)
Et bien vis à vis du site non, sa ne change strictement rien, mais c'est juste que je sais pas comment le coder en php.

Désolé pour le retard,
A bientôt,
Flo'

Titre: Re:Passer une variable Javascript dans PHP
Posté par: GuillaumeRoos le le 29-06-2013 a 11:23:48

En fait, c'est assez proche du Javascript que tu as, mais en plus simple.

Pour faire un truc basique, en entrée de page, tu contrôles s'il y a déjà un cookie sur l'ordinateur du visiteur ou si le formulaire de demande de nom a déjà été soumis. Si ce n'est pas le cas, tu affiches ton formulaire :

<?php
if (!isset($_POST['nom_de_l_utilisateur']) and !isset($_COOKIE['nom_de_l_utilisateur'])){
/* Affichage du formulaire de demande du nom */
}
?>

Ensuite, s'il n'y a pas de cookie sur l'ordinateur mais que le formulaire a été soumis, tu récupères les données et tu crées le cookie :

<?php
if (!empty($_POST['nom_de_l_utilisateur'])){
/* Voir la fonction setcookie sur php.net pour créer le cookie qui te convient : http://php.net/manual/fr/function.setcookie.php */
}
?>

Pour finir, tu affiches le contenu du cookie si il existe :

<?php
if (isset($_COOKIE['nom_de_l_utilisateur'])){
echo 'Bonjour'.$_COOKIE['nom_de_l_utilisateur'];
}
?>

J'espère que ça va t'aider :)

Titre: Re:Passer une variable Javascript dans PHP
Posté par: Flomaluso le le 29-06-2013 a 14:09:29

D'accord, merci beaucoup =)

Donc logiquement si j'ai bien compris, je dois mettre ceci comme code :

Code:
<?php
if (!isset($_POST['nom_de_l_utilisateur']) and !isset($_COOKIE['nom_de_l_utilisateur'])){
/* Affichage du formulaire de demande du nom */
}
?>


<?php
if (!empty($_POST['nom_de_l_utilisateur'])){
setcookie($name='nom_de_l_utilisateur', $value='$_POST['nom_de_l_utilisateur']', $path='/', $secure=false, $HTTPOnly=false)
}
?>


<?php
if (isset($_COOKIE['nom_de_l_utilisateur'])){
echo 'Bonjour'.$_COOKIE['nom_de_l_utilisateur'];
}
?>


Le problème est que sa ne me demande pas d'entrer mon prénom et en plus, cela me retourne une erreur :
Parse error: syntax error, unexpected 'nom_de_l_utilisateur' (T_STRING) in ...

Donc est ce que je me suis trompé dans la ligne du cookie?

Je suis désolé, mais je connais vraiment pas grand chose, j’apprends sur le tas.
A bientôt,
Flo

Titre: Re:Passer une variable Javascript dans PHP
Posté par: GuillaumeRoos le le 29-06-2013 a 15:09:42

En fait, déjà, il faut remplacer la note "/* Affichage du formulaire de demande du nom */" par un formulaire de demande du nom en html, pour pouvoir récupérer le contenu du champ 'nom_del_utilisateur' par la variable $_POST.

Ensuite, dans la ligne setcookie, il ne faut pas mettre $name='nom_de_l_utilisateur', $value=..., il faut juste mettre 'nom_de_l_utilisateur', $_POST['nom_de_l_utilisateur']...

Il faudrait aussi ajouter la date d'expiration dans le cookie et puis tu avais oublié un ';' à la fin de la ligne.

Ça devrait donner un truc comme ça (pour un cookie avec une durée de vie d'un mois) :

<?php
if (!isset($_POST['nom_de_l_utilisateur']) and !isset($_COOKIE['nom_de_l_utilisateur'])){
echo '
<form method="post" action="#">
<p>Indiquez votre nom :</p>
<input type="text" name="nom_de_l_utilisateur" /><br />
<input type="submit" name="submit" value="Envoyer" />
</form>
';
}

if (!empty($_POST['nom_de_l_utilisateur'])){
setcookie('nom_de_l_utilisateur', $_POST['nom_de_l_utilisateur'], time()+(60*60*24*30), '/', false, false);
echo 'Bonjour '.$_POST['nom_de_l_utilisateur'];
}

if (isset($_COOKIE['nom_de_l_utilisateur'])){
echo 'Bonjour '.$_COOKIE['nom_de_l_utilisateur'];
}
?>

J'ai rajouté un echo du $_POST nom_de_l_ut... après le setcookie parce que la page ne prend pas en compte le cookie au premier tour.

Bon courage pour la suite.

Titre: Re:Passer une variable Javascript dans PHP
Posté par: Flomaluso le le 04-07-2013 a 19:08:56

Merci beaucoup Guillaume!! C'est génial!!!! ;D

Désolé pour le retard, j'ai eu un empêchement.
Encore Merci :)

Titre: Re:Passer une variable Javascript dans PHP
Posté par: GuillaumeRoos le le 04-07-2013 a 19:14:32

Content d'avoir pu t'aider :)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.