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 :

[Cookies] Connexion automatique


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut [Cookies] Connexion automatique
    Bonjour à tous,

    Je n'ai pas un problème de code qui ne fonctionne pas, généralement je préfere reflechir tous seul sur ce genre de probleme mais là c'est plutôt un problème de : "je ne sais pas comment m'y prendre pour" ^^.

    En effet à la connexion d'un membre j'ai une checkbox qui demande si il veut faire une connexion automatique...J'envoi le cookie et tout.

    Seulement je ne sais pas comment faire quelquechose de propre c'est a dire qui ne creer pas la session en fonction du cookie sur chaque page !

    J'aimaginer un fichier qu'on inclu partout qui verifie si le cookie existe et si la session n'existe pas on la creer !

    Mais en clair comment feriez vous tous pour faire connecter l'utilisateur de la façon la plus propre possible sachant que j'ai deja fait le script qui envoie le cookie et tout ...

    Merci d'avance à tous

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Bein comme tu dis moi je mettrai en début de chaque page tu vérifies si le cookie existe et si oui tu définis la session. Faudra vérifier aussi si la session existe.[/code]

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    c'est pas très facilte de répondre à ta question comme sa car elle es ttrès lié à la conception de ton projet :/

    Ceci dit voila comment je ferais.

    Pour un compte client j'ai une classe qui ressemblerait à ceci :

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <?
    class CompteClient
    {
     
    	public	$IdClient;
    	public	$Email;
    	public	$MotDePasse;
     
    	private $Valide;
     
    	public function __construct ( ) 
    	{
    		$this->IdClient 		= NULL;
    		$this->Email 			= NULL;
    		$this->MotDePasse 		= NULL;
     
    		$this->Valide 			= FALSE;
     
    		if( session_id() == NULL )
    		{
    			session_start();
    		}
    		if( !isset($_SESSION["_client_"]) )
    		{
    			$_SESSION["_client_"] = array();
    		}
    		elseif( isset($_COOKIE["email"]) && isset($_COOKIE["mdp"]) )
    		{
    			$this->Authentifie ( $_COOKIE["email"] , $_COOKIE["mdp"] );
    			return;
    		}
    		elseif ( isset($_SESSION["_client_"]["email"]) && isset($_SESSION["_client_"]["mdp"]) )
    		{
    			$this->Authentifie ( $_SESSION["_client_"]["email"] , $_SESSION["_client_"]["mdp"] );
    			return;
    		}
    		$args = func_get_args();
     
    		switch (count($args))
    		{
    		   case 2:
    				$this->Authentifie ( $args[0] , $args[1] );
    		   break;
    		}
    	}
     
    	public function Authentifie ( $email , $mdp )
    	{
    		$sql 	= "	SELECT 	* 
    						FROM 	`compte_client` 
    						WHERE 	`email` = '".Connection::Protect($email)."' 
    						AND 	`mdp` = '".Connection::Protect($mdp)."'
    						AND 	`email` != '' 
    						LIMIT 0,1";
    		$query 	= $GLOBALS["Connection"]->mysql_query($sql);
     
    		if( mysql_num_rows($query) > 0 )
    		{
    			$_SESSION["_client_"] 	= mysql_fetch_array($query , MYSQL_ASSOC);
    			$this->Construit( );
    			return true;
    		}
    		else
    		{
    			$this->IdClient 		= NULL;
    			$this->Email 			= NULL;
    			$this->MotDePasse 	= NULL;
     
    			$this->Valide 			= FALSE;
    			return false;
    		}
    	}
     
    	private function Construit( ) 
    	{
    		$this->IdClient 		= $_SESSION["_client_"]["idcompte_client"];
    		$this->Email 			= $_SESSION["_client_"]["email"];
    		$this->MotDePasse 		= $_SESSION["_client_"]["mdp"];
    		$this->Valide 			= TRUE;
    	}
     
    	public function EstValide ( )
    	{
    		if( $this->Valide == TRUE )
    		{
    			return true;
    		}
    		return false;
    	}
     
    	public function Detruit()
    	{
    		$_SESSION["_client_"] = array();
    		unset($_SESSION["_client_"]);
    	}
    }
    ?>
    Sachant que $_SESSION et $_COOKIES sont des super global tu as juste à faire ceci pour identifer un tuilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $Compte = new CompteClient();
     
    if( $Compte->EstValide () )
    {
    echo "Bienvenue machin";
    }
    else
    {
    echo "Qui etes vous ?";
    }
    Maintenant c'est un compte client et il n'y à pas de gestion droit ect, c'est quelque chose de très simple.



    Voila,

    A+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Moi ce que je fait c'est que à la page d'authentification je vérifie si il y a un cookie et si oui j'ouvre une session avec tout ce dont j'ai besoin !
    Ensuite sur chaque page je lance "verifconnexion.inc.php" qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @session_start();
    if (!isset($_SESSION['id']))
    {
    	include "index.php";
    	exit;
    }
    Donc voilà si l'utilisateur n'es pas connecté je vais sur la page d'authentification ce qui le connecte (et bien sûr je coupe le script !)
    Et l'inclusion du fichier et à faire en premier sinon peut y avoir des drôles de trucs (page qui s'affichen à moitié, etc...).

  5. #5
    Membre du Club Avatar de T0xF0x
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 86
    Points : 45
    Points
    45
    Par défaut
    Merci à tous les trois vous m'avez donner plein d'idées je vais un peu tout combiner

    Topic resolu merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Cookies] Connexion automatique impossible avec SHA 256
    Par Janitrix dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2007, 19h20
  2. Connexion automatique sur base SQL (Login/pass mémorisé)
    Par Fredo67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2005, 16h24
  3. [Cookies] Création du cookie en automatique
    Par gdavin dans le forum Langage
    Réponses: 5
    Dernier message: 07/10/2005, 17h14
  4. [CR9][SQL Server] Connexion automatique
    Par PetitScarabe dans le forum Connectivité
    Réponses: 6
    Dernier message: 31/03/2005, 17h51

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