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 :

Identification par session : erreur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut Identification par session : erreur
    Bonjour,

    Depuis hier, j'essaie de faire un site web avec une identification par session.

    Je l'ai déjà fais et ça fonctionnait bien, mais là, rien ne fonctionne. J'ai un problème de variable SESSION...

    Voici mon code :

    Page index.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
     
    <?
    session_start();
    //Si nous avons le N°ID de l'utilisateur, alors il peut consulter la page
    if ($_SESSION['user_id']){
    ?>
     
    <!-- DEBUT PAGE HTML -->
    ...
    <!-- FIN PAGE HTML -->
     
    <?php
    }
    //Sinon on affiche la page de login
    else{
    	include("login/login.php");
    }
    ?>
    login.php

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form action="login/verification.php" method="post" name="identification" id="identification">
          <span class="texte_blanc">Identification</span><br />
          <input type="text" onfocus="if(this.value=='Identifiant') this.value='';" onblur="if(this.value=='') this.value='Identifiant';" value="Identifiant" class="formtext" name="login" />
          <img src="spacer.gif" alt=" " width="5" height="5" border="0" />
          <input type="password" class="formtext"  name="password" onfocus="if(this.value=='Mot de passe') this.value='';" onblur="if(this.value=='') this.value='Mot de passe';" value="Mot de passe" />
          <br />
          <img src="spacer.gif" alt=" " width="5" height="5" border="0" /><br />
          <input type="submit" class="bouton" value="Se connecter" />
    </form>


    verification.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
     
    <?php
    //connexion SQL
    require_once('../mysql/connexion_sql.php');
     
    //Récupération des variables du formulaire login.php
    $login = $_POST["login"];
    $password = md5($_POST["password"]);
     
    //SQL : vérifie si le login et mot de passe sont correctes
    $request_user=mysql_query("SELECT * FROM technicien WHERE login = '$login' AND password = '$password'");
     
    //Si login et mot de passe correct
    if(mysql_num_rows($request_user)>0){
    	$res_user=mysql_fetch_assoc($request_user); 
    	$_SESSION['user_id']=$res_user['id'];
    	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
    	$_SESSION['email']=$res_user['email'];
    	$_SESSION['statut']=$res_user['statut'];
    	}
     
    //Sinon afficher un message box pour dire que le login et le mot de passe sont incorrectes
    else{
     
    	?>
    	<script language="javascript" type="text/javascript">
    	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
    	</script>
    	<?php
    }
    ?>
    Avec ce code, j'ai deux problèmes :

    1. une erreur sur la page index.php lorsque la variable session n'exsiste pas (la 1er fois qu'on affiche la page index.php)

    Notice: Undefined index: user_id in c:\program files\easyphp1-8\www\hd\index.php on line 4

    2. Lorsque que je reviens sur la page index.php, j'ai l'impression que la variable session $_SESSION['user_id'] n'exsiste pas (après le traitement de la page vérification.php).

    Auriez vous une idée ?

    Merci d'avance

    Arnaud

    P.S j'aimerai faire une redirection une fois le traitement de la page verification.php avec un header(), mais si je met le header() au début de la page, le traitement s'effectue pas et si je le met dans mes conditions, j'ai une erreur...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Par défaut
    bonjour,

    plusieurs points:

    1- il te manque session_start dans verification.php

    2- si tu veux utiliser header(), il ne faut pas avoir réaliser de print/echo avant. Le meilleur endroit pour le placer est apres la définition de tes variables de session.

    3- dans index.php utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_SESSION['user_id'])){
    (mais il me semblé que ça marché comme ça,m'enfin ! )

    4- Pour index.php je te conseille plutot de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    session_start();
    //Si nous avons le N°ID de l'utilisateur, alors il peut consulter la page
    if (!isset($_SESSION['user_id'])){
          header('Location: login.php');
    }
    ?>
    <!-- ta page -->
    sinon ça semble bon

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Youpi ! Ca marche !

    C'est claire que c'est plus pratique ta méthode concernant la page index.php !

    Pour sécuriser les pages c'est plus rapide, il y a juste un bout de code à mettre.

    Le problème qu'il me reste est la redirection...

    J'ai fais 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
    32
    33
    34
    35
    36
    37
     
    <?php
    //Ouverture SESSION
    session_start();
     
    //connexion SQL
    require_once('../mysql/connexion_sql.php');
     
    //Récupération des variables du formulaire login.php
    $login = $_POST["login"];
    $password = md5($_POST["password"]);
     
    //SQL : vérifie si le login et mot de passe est correcte
    $request_user=mysql_query("SELECT * FROM technicien WHERE login = '$login' AND password = '$password'");
     
    //Si login et mot de passe correct
    if(mysql_num_rows($request_user)>0){
    	$res_user=mysql_fetch_assoc($request_user); 
    	$_SESSION['user_id']=$res_user['id'];
    	$_SESSION['prenom_nom_technicien']=$res_user['prenom']." ".$res_user['nom'];
    	$_SESSION['email']=$res_user['email'];
    	$_SESSION['statut']=$res_user['statut'];
     
    	//Redirection
    	header('Location: ../index.php');
    }
     
    //Sinon afficher un message box pour dire que le login et le mot de passe sont incorrectes
    else{
     
    	?>
    	<script language="javascript" type="text/javascript">
    	alert( "Nom d'utilisateur ou mot de passe incorrect. Merci de réessayer." );
    	</script>
    	<?php
    }
    ?>

Discussions similaires

  1. 1 bouton 1 seul click par session
    Par unmulot dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 12h50
  2. Identification par mot de passe
    Par Sheva7 dans le forum Sécurité
    Réponses: 3
    Dernier message: 12/06/2006, 11h16
  3. Réponses: 9
    Dernier message: 14/05/2006, 00h43
  4. Probleme d'identification avec sessions PHP
    Par bontbont dans le forum Langage
    Réponses: 5
    Dernier message: 09/12/2005, 20h15
  5. Identification par ip
    Par Dante dans le forum Développement
    Réponses: 9
    Dernier message: 12/01/2004, 13h20

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