Variable PHP dans code Javascript
Heryu
Messages postés
645
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonsoir,
J'ai un petit problème avec mon code javascript. En effet, par exemple, j'ai crée une variable PHP dans une fonction Javascript dans <head>, et plus bas, dans le <body>, j'ai fait un echo en php de cette variable.
La logique voudrait donc que la variable ne s'affiche pas dans l'echo sachant que je n'appelle pas la fonction javascript, et pourtant, elle s'affiche quand même...
Pour imager :
Je prends cette exemple car, dans mon cas réel, j'aimerait activer une session PHP avec une fonction javascript, et du coup, la session se lance automatiquement dès le chargement de la page...
Quelqu'un aurait une idée ?
Merci d'avance ^^
J'ai un petit problème avec mon code javascript. En effet, par exemple, j'ai crée une variable PHP dans une fonction Javascript dans <head>, et plus bas, dans le <body>, j'ai fait un echo en php de cette variable.
La logique voudrait donc que la variable ne s'affiche pas dans l'echo sachant que je n'appelle pas la fonction javascript, et pourtant, elle s'affiche quand même...
Pour imager :
<head>
<script type="text/css">
function test() {
<?php
$test_php="ok"
?>
}
</script>
</head>
<body>
<?php
echo $test_php;
?>
</body>
Je prends cette exemple car, dans mon cas réel, j'aimerait activer une session PHP avec une fonction javascript, et du coup, la session se lance automatiquement dès le chargement de la page...
Quelqu'un aurait une idée ?
Merci d'avance ^^
A voir également:
- Variable PHP dans code Javascript
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
5 réponses
Bonjour
Si, c'est parfaitement logique que la valeur de ta variable s'affiche avant l'appel à ta fonction test.
Car cette variable est évaluée dans le serveur, au moment ou ta page est envoyée, et pas du tout au moment où tu appelles ta fonction.
Ne jamais oublier : le php s'exécute dans le serveur, le serveur chez le client. Quand le javascript s'exécute, le php n'existe plus.
Si tu veux appeler du php à partir du javascript, car c'est possible, il faut utiliser ajax. La façon la plus simple de l'aborder est sans doute d'utiliser jquery. Tu trouveras un tas d'articles là-dessus sur le web
Si, c'est parfaitement logique que la valeur de ta variable s'affiche avant l'appel à ta fonction test.
Car cette variable est évaluée dans le serveur, au moment ou ta page est envoyée, et pas du tout au moment où tu appelles ta fonction.
Ne jamais oublier : le php s'exécute dans le serveur, le serveur chez le client. Quand le javascript s'exécute, le php n'existe plus.
Si tu veux appeler du php à partir du javascript, car c'est possible, il faut utiliser ajax. La façon la plus simple de l'aborder est sans doute d'utiliser jquery. Tu trouveras un tas d'articles là-dessus sur le web
Merci de ta réponse !
J'utilise justement Jquery, le vrai code que j'utilise actuellement est le suivant :
Et donc, comme tu disais, le code PHP $_SESSION["connection"]="ok"; se lance automatiquement...
J'utilise justement Jquery, le vrai code que j'utilise actuellement est le suivant :
function session_connect() {
var badpwd = 0;
$("#login").val('');
$("#password").val('');
$("#span_error").remove();
$("#dialog").dialog(
{
height:210,
width:300,
modal:true,
resizable:false,
draggable:false,
buttons: {"Connexion":
function() {
if ($("#login").val()=='Ryudo' && $("#password").val()=='Cvm66b') {
<?php
$_SESSION["connection"]="ok";
?>
$(this).dialog("close");
window.location.reload(true);
}else{
if (badpwd==0) {
$("#password").after('<br /><span id="span_error"><p style="color:red">Mauvais identifiants</p></span>');
badpwd++;
}
}
}
}
}
);
}
Et donc, comme tu disais, le code PHP $_SESSION["connection"]="ok"; se lance automatiquement...
Je viens de chercher des docs sur Ajax mais ça ma parait complexe... Quel serait le moyen le plus simple en Ajax pour changer cette valeur de session ?
Merci !
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voilà une methode avec Ajax:
<script type="text/javascript">
///////AJAX
//fonction de base de creation de la request ------------------------------------------
function creerRequest(){
var request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
request = new XMLHttpRequest();
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
return request;
}
/////// --------------------------------------------------------------------------
function makeRequest(url,valeur_a_passer){
var http_request = false;
http_request = creerRequest(); //on cree la requette Ajax
http_request.onreadystatechange = function() { traitementReponse(http_request); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer les données avec la méthode POST ,
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
data="valeur="+valeur_a_passer; //la on envoie la valeur au script php
//alert("Data envoyees: "+data);
http_request.send(data);
}
//traitement de la reponse
function traitementReponse(http_request){
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var reponse=http_request.responseText;
//la tu peux faire ce que tu veux c'est du javascript
//une boite de dialogue
alert("Reponse a la requette Ajax: "+reponse);
//ou ecrire dans un div dans ta page
//document.getElementById('id_du_div').innerHTML=reponse;
//ou ne rien faire du tout
}else {
alert('Un problème est survenu avec la requête enregistrement.');
}
}
}
</script>
et la page php appelee nommée par exemple scriptPhpAjax.php
<?php
session_start(); //si tu veux atteindre les variables de session
//recup valeur envoyée par Ajax
$valeur=$_POST['valeur']; //voir plus haut data ="...
//tu en fait ce que tu veux, puis réponse de la bonne exécution
$_SESSION['connection']=$valeur;
//on verifie
if($_SESSION['connection']==$valeur){
$reponse="valeur de session modifiée !";
}else{
$reponse="Pb valeur de session pas modifiée !";
}
//on envoie la reponse à Ajax
echo $reponse;
?>
et dans ta page le lancement de tout ça: (exemple)
<a href="javascript:makeRequest('scriptPhpAjax.php','oui');"> connection OUI</a><br />
<a href="javascript:makeRequest('scriptPhpAjax.php','non');"> connection NON</a><br />
<!-- attention mettre le chemin relatif complet du scriptPhpAjax.php par rapport à ta page -->