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

PHP & Base de données Discussion :

Impossible de lire un cookie


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut Impossible de lire un cookie
    Bonjour ou bonsoir à tous.

    Voila, je suis en train de mettre en place un système d'identification avec un classe php.
    Voila, j'ai toujours des problèmes avec les cookies quelque soit le mode de programmation.
    Donc voila je voudrais que, lors du chargement de la page index, voir si il y a le cookie lié a ma page et si c'est le cas, de compléter les champs correspondant. Le problème est que meme si le cookie, le formulaire ne se complète pas. Voici mon code complet.
    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
    40
    41
    42
    43
    44
     
    <?php
    session_start();
    require('include/class.inc.php');
    connection::bdd();
    connection::ifcookie();
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
    	extract($_POST);
    	if(connection::identification($login,$pass))
    	{
    		echo "ok";
    	}
    	else
    	{
    		echo "Mauvais identifiant";
    	}
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Répertoire SMS</title>
    <script type="javascript/jquery.js" src="javascript/jquery.js"></script>
    </head>
    <body>
    Pour vous connecter, indiquez votre pseudo et votre mot de passe.
    Vous pouvez aussi cocher l'option "Me connecter automatiquement à mon prochain passage." pour laisser une trace sur votre ordinateur pour être connecté automatiquement.
    Ce système de trace est basé sur les cookies, ce sont des petits fichiers contenant votre numéro d'identification ainsi qu'une version cryptée de votre mot de passe. Ces fichiers ne peuvent en aucun cas endommager votre ordinateur, ni l'affecter d'aucune façons, vous pourrez les supprimer à tout moment dans les options de votre navigateur.
    <form action="index.php" method="post">
    <table border="0" width="500px">
    <tr><td>Login:</td> <td><input type="text" name="login" value="<?php echo $login; ?>"/>
    </td></tr>
    <tr><td>
    Pass: </td><td><input type="password" name="pass" value="<?php echo $pass; ?>" /></td></tr>
    <tr><td colspan="2">
    <input type="submit" value="Se connecter" />
    </td></tr>
    </table>
    </form>
     
    </body>
    </html>
    et voici mon fichier class
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
    class connection{
    	//connection a la base de donnée
    	static function bdd()
    	{
    		$connection=mysql_connect('localhost','root','root')or die('Impossible de se connecter à cette base de donnée');
    		$bdd=mysql_select_db('repertoire')or die('Base de donnée inconnu');
    		$req=mysql_query('set name "UTF8"');
    	}
    	//s'identifier vers page privée
    	static function identification($login,$pass,$cookie)
    	{
    		//verification de la présence du login et mot de passe
    		//requete
    		$passcrypt=md5($pass);
    		$req="select * from repertoire_membres where login='$login' and motdepasse='$passcrypt'";
    		//execution de la requete
    		$execreq=mysql_query($req) or die($req);
    		if(mysql_num_rows($execreq)>0)
    		{
    			//Utilisateur reconnu
    			//recuperation de la reference de l'utilisateur
    			$data=mysql_fetch_assoc($execreq) or die('error');
    			$refclient=$data['refclient'];
    			//creation de la session
    			$_SESSION['Auth']=array(
    			'login'=>$login,
    			'pass'=>$pass,
    			'refclient'=>$refclient
    			);
    			//creation des cookies d'identifiant
    			setcookie('repertoire_login',$login,(time() - 13600));
    			setcookie('repertoire_pass',$pass,(time() - 13600));
    			setcookie('repertoire_login',$login,(time() + 13600));
    			setcookie('repertoire_pass',$pass,(time() + 13600));
    			return true;
    		}
    		else
    		{
    		//Utilisateur inconnu
    		return false;
    		}
    	}
    	//identification dans le cas de cookie encore valide
    	public function ifcookie()
    	{
    		//si cookie lire le cookie
    		if(isset($_COOKIE))
    		{
    			$login=$_COOKIE['repertoire_login'];
    			$pass=$_COOKIE['repertoire_pass'];
    		}
    		else
    		{
    			$login='';
    			$pass='';
    		}
    		//test pour l'affichage
    		echo $login;
    		echo $pass;
    	}
    }
    ?>
    </code>
    Je reste à votre disposition pour répondre à vos questions.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    les variables $login et $pass que tu définis dans ta classe, n'existent pas en dehors de la classe.
    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->login=$_COOKIE['repertoire_login'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="login" value="<?php echo $connection->login; ?>"/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut
    Voici le code actuel, maintenant, je n'est même plus l'apparition du formulaire.
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <?php
    class connection{
    	//connection a la base de donnée
    	static function bdd()
    	{
    		$connection=mysql_connect('localhost','root','root')or die('Impossible de se connecter à cette base de donnée');
    		$bdd=mysql_select_db('repertoire')or die('Base de donnée inconnu');
    		$req=mysql_query('set name "UTF8"');
    	}
    	//s'identifier vers page privée
    	static function identification($login,$pass,$cookie)
    	{
    		//verification de la présence du login et mot de passe
    		//requete
    		$passcrypt=md5($pass);
    		$req="select * from repertoire_membres where login='$login' and motdepasse='$passcrypt'";
    		//execution de la requete
    		$execreq=mysql_query($req) or die($req);
    		if(mysql_num_rows($execreq)>0)
    		{
    			//Utilisateur reconnu
    			//recuperation de la reference de l'utilisateur
    			$data=mysql_fetch_assoc($execreq) or die('error');
    			$refclient=$data['refclient'];
    			//creation de la session
    			$_SESSION['Auth']=array(
    			'login'=>$login,
    			'pass'=>$pass,
    			'refclient'=>$refclient
    			);
    			//creation des cookies d'identifiant
    			setcookie('repertoire_login',$login,(time() - 13600));
    			setcookie('repertoire_pass',$pass,(time() - 13600));
    			setcookie('repertoire_login',$login,(time() + 13600));
    			setcookie('repertoire_pass',$pass,(time() + 13600));
    			return true;
    		}
    		else
    		{
    		//Utilisateur inconnu
    		return false;
    		}
    	}
    	//identification dans le cas de cookie encore valide
    	public function ifcookie()
    	{
    		//si cookie lire le cookie
    		if(isset($_COOKIE))
    		{
    			$this->login=$_COOKIE['repertoire_login'];
    			$this->pass=$_COOKIE['repertoire_pass'];
    		}
    		else
    		{
    			$this->login='';
    			$this->pass='';
    		}
    	}
    }
    ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut que tu ré-adaptes tout le reste du code egalement.
    Par exemple la methode identification n'a plus besoin de recevoir les variables $login et $pass mais doit utiliser celles définies dans la classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut
    Je débute a peine la poo, et les classes.
    j'ai encore du mal avec la notion this.
    Je n'ai pas compris l'ensemble de tes explications. Si je comprend bien, faut qu'à la place de mettre $login et $pass, que je mette $this->login et $this->pass ?

    C'est bien ce qu'il faut faire?

    lemirandais

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    oui un truc comme ca :
    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
    static function identification()
    	{
    		//verification de la présence du login et mot de passe
    		//requete
    		$passcrypt=md5($this->pass);
    		$req="select * from repertoire_membres where login='$this->login' and motdepasse='$passcrypt'";
    		//execution de la requete
    		$execreq=mysql_query($req) or die($req);
    		if(mysql_num_rows($execreq)>0)
    		{
    			//Utilisateur reconnu
    			//recuperation de la reference de l'utilisateur
    			$data=mysql_fetch_assoc($execreq) or die('error');
    			$refclient=$data['refclient'];
    			//creation de la session
    			$_SESSION['Auth']=array(
    			'login'=>$this->login,
    			'pass'=>$this->pass,
    			'refclient'=>$refclient
    			);
    			//creation des cookies d'identifiant
    			setcookie('repertoire_login',$this->login,(time() - 13600));
    			setcookie('repertoire_pass',$this->pass,(time() - 13600));
    			return true;
    		}
    		else
    		{
    		//Utilisateur inconnu
    		return false;
    		}
    	}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2007
    Messages : 282
    Par défaut
    Merci sabotage, Je vais tester. Je vous tiens au courant.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/12/2005, 17h09
  2. [logiciel] ACDsee 7 : impossible de lire certaines images
    Par Eusebius dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 12/12/2005, 16h03
  3. Impossible de lire les enregistrements
    Par Bowen dans le forum ASP
    Réponses: 2
    Dernier message: 04/08/2005, 11h33
  4. impossible de lire 2 fois de suite un fichier
    Par porcher dans le forum C++
    Réponses: 8
    Dernier message: 14/02/2005, 01h44
  5. [VB.NET] Impossible de lire le contenu du datagrid
    Par jagdjg dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/05/2004, 21h51

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