Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2007, 03h26   #1
Membre régulier
 
Inscription : mai 2005
Messages : 138
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 138
Points : 85
Points : 85
Par défaut Ajax et les sessions

Bonjour à tous,
j'ai un bon gros problème, qui malgré tous les posts que j'essaye de lire depuis un moment ne se résoud pas...Je commence à me poser beaucoup de questions...
Bon alors pour commencer, parlons des choses qui marchent.
Si je fais deux fichiers :

test1.php :
Code :
1
2
3
4
5
<?php
session_start();
$_SESSION['essai']="cela fonctionne !";
echo "<a href=\"test2.php\">vérifier la variable de session</a>";
?>
test2.php :
Code :
1
2
3
4
5
<?php
session_start();
$valeur = (!isset($_SESSION['essai']))?("Cela ne fonctionne pas !"):($_SESSION['essai']);
echo $_SESSION['essai'];
?>
Tout marche impéc, je vois bien "cela fonctionne !".

Mon problème est lorsque que j'essaye de faire ca via ajax...
Voici mon index :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
?>
<html>
<head>
<meta http-equiv=content-type content="text/html; charset=UTF-8">
</head>
<body>
<table width="100%" height="100%" border="1">
	    <tr valign="top">
	        <td width="20%"> <?php require("menuLogin.php"); ?> </td>
	    </tr>
</table>
</body>
</html>
voici menuLogin.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<table width="100%" height="20%" border="1">
    <tr>
        <td>
        	<form action="" method="post" id="formConnection">
				Login : <input type="text" name="login" id="login" value="" /><br />
				Mot de passe : <input type="password" name="mdp" id="mdp" value="" /><br />
				<input type="button" name="submit" value="envoyer" onclick="verif();">
			</form>
        </td>
    </tr>
    <tr>
    	<td>
    		<div id="resultatConnection"></div>
    	</td>
    </tr>
</table>
 
<script src="prototype.js" type="text/javascript"></script>  
<script type="text/javascript">
function verif(){
	var login = document.getElementById('login').value;
	var mdp = document.getElementById('mdp').value;
	var url ="verif.php";
    new Ajax.Request(url,{                
         method: 'post',
         parameters: Form.serialize("formConnection"),
         onComplete: function(transport) {
                 //transport.responseText sans tous les espaces:
                 if(transport.responseText.replace(/[\s]{2,}/g,"")=="OK"){
					window.location.replace("index2.php");
 
                 }
                 else{
                 	new Ajax.Updater('resultatConnection', 'connectionRefusee.php');
                 }
	}});		
}
 
</script>
mon verif.php qui est apellé par mon ajax.request :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php

//TODO : A VIRER !!
//destruction de toutes les variable de sessions

if(!empty($_POST['login']) && !empty($_POST['mdp']))
{
    $login = htmlentities($_POST['login'], ENT_QUOTES); 
    $mdp = htmlentities($_POST['mdp'], ENT_QUOTES);
    
    // on cripte le mot de passe envoyé par le formulaire
    $password_md5 = md5($mdp);
	
	require("pass/conf.php");
	
	// Connexion à la base de données
	$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);	
	$db  = mysql_select_db($sql_bdd);
	
	//création de la requête SQL
    $sql = "SELECT * FROM user WHERE login_user = '".$login."' AND pass_user = '".$password_md5."'"	;
    
	//exécution de la requête SQL
    $requete = @mysql_query($sql, $db_link) or die($sql."<br>".mysql_error()) ;
    
    //on récupère le résultat
    $result = mysql_fetch_object($requete) ;
    //si la requête s'est bien passée
    if(is_object($result))
    {
        $_SESSION['login'] = $login;
        echo 'OK';
    }
    else
    {
    	echo 'KO';
    }
 }
?>
et enfin mon index2.php qui est apellé si la vérification est OK :
Code :
1
2
3
4
<?php
session_start();
echo $_SESSION['login'];
?>
Pas de problème du coté de la vérification, puisque lorsque je rentre un login+mot de passe valide, il me lance index2.php. Seulement j'obtiens l'erreur "Notice: Undefined index: login in ...\index2.php on line 3".
J'ai beau tout essayé, je ne comprend pas...j'ai l'impression que ma variable de session se paume quelque part pendant la redirection ajax. Bref si quelqu'un à la moindre idée, je suis preneur !
Merci beaucoup de me sortir de ce !@#% :p
pafi76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 10h07   #2
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web indépendant

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
bonjour,

Et est-ce que le fait de ne pas avoir de session_start dans verif.php, n'y est pas pour quelque chose??

++

P.S.: tu insère le framework prototype.js et tu ne l'utilise pas totalement. tu peux aussi faire:

Code :
1
2
var login = $F('login');
var mdp =  $F('mdp');
au lieu de:

Code :
1
2
var login = document.getElementById('login').value;
var mdp = document.getElementById('mdp').value;
__________________
LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web