IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajax et les sessions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 139
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var login = $F('login');
    var mdp =  $F('mdp');
    au lieu de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var login = document.getElementById('login').value;
    var mdp = document.getElementById('mdp').value;

Discussions similaires

  1. [AJAX] Ajax et les sessions
    Par saramery dans le forum AJAX
    Réponses: 12
    Dernier message: 12/02/2010, 18h00
  2. Réponses: 4
    Dernier message: 28/10/2007, 20h01
  3. [AJAX] Ajax et les sessions PHP
    Par webrider dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/05/2007, 15h44
  4. les sessions PHP
    Par smh_master dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2005, 14h13
  5. PB Réseau sur les sessions ouvertes ?
    Par nico___23 dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2005, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo