[php/ mysql] Authentification: pb de session

le code :


 <FORM METHOD="POST" ACTION="">
Site : Extranet</FONT><br>
Login: <INPUT TYPE="Text" NAME="login" SIZE="14" VALUE=""><br>
Mot de passe: <INPUT TYPE="password" NAME="password" SIZE="14" VALUE=""><br>
<INPUT TYPE="submit" VALUE="Valider" NAME="Validation">
</FORM>

<?php
 session_start(); 
  if((isset($_POST['login']))&&(isset($_POST['password']))) 
  { 
     // Variable : 
     $login = $_POST['login']; 
     $password = $_POST['password']; 
	 
	 // Connection SQL :   
     $db = mysql_connect('localhost', 'root', '');   
     mysql_select_db('extranet',$db);   

     
     //Requete : 
     $sql_login = "SELECT * FROM extranet WHERE Login='$login'"; 
     $req_login = mysql_query($sql_login); 
      
     
   //Validation : 
     if($infos = mysql_fetch_array($req_login)) 
     { 
         if($password==$infos['mdp']) 
         { 
             // Login et password bon : 
             $_SESSION['login'] = $login; // Création de la variable de session ['login'] 
             header('Location:index.php'); // redirection sur l'affichage ! 
         } 
         else 
         { 
             // Mot de pass Faux ! 
             echo 'Login impossible, veuillez verifier votre Login ou Password '; 
         } 
     } 
     else 
     { 
         // Le Login N'existe pas : 
         echo 'Login impossible, veuillez verifier votre Login ou Password '; 
     } 
  } 
 // else 
  //{ 
     // Pas de Variable de Login - Redirection : 
   //  header('Location:index.php'); 
  //} 
?>

ce code renvoi vers cette page apres une bonne authentification:


 session_start(); 
  if(isset($_SESSION['login'])) 
  { 
     echo 'Vous êtes logger !<br>'; 
     echo 'Login : '.$_SESSION['login']; 
    }else{ 
     echo 'Vous n\'ête pas logger<br>'; 
     echo 'Vous pouvez vous logger ici <a href="formlogin.php">Login[/url]'; 
  } 
  
  // on affiche un lien pour terminer une session
print '<a href="logout.php">Détruire la session[/url]<br>';


et enfin le logout.php c est:


session_start();// on démarre la session

session_unset(); // on efface toutes les variables de session
session_destroy(); // on detruit la session en cours.


header("location: extranet.php") ;

un code tout simple pour s authentifier…et en fonction du login, l utilisateur est renvoye sur un lien (le lien est dans la base et est du type http://www.xxxxxxx.fr)

le pb:

  • l identification ne marche pas (et franchement je vois pas)

si qq1 aussi pouvait me dire comment je peux reoriente l utilisateur au bout de 5 ou 10s…

merci

[cpp]$sql_recherche = “SELECT * FROM extranet WHERE Login LIKE ‘$Login’”;[/cpp]
C’est pas super .
donc :
[cpp]$sql_recherche = “SELECT * FROM extranet WHERE Login=’$Login’”;[/cpp]
ca a rien a voir avec ta question mais bon …

Edit : En fait ca y repond peut etre …

Tu es sur que ton champ est bien ‘Login’ et pas ‘login’ ?
Pareil pour le POST , c’est bien ‘Login’ que tu as mis dans ton formulaire ?
Fait des affichage de variable dans la fonction en enlevant les header pour voir ou c’est qu’il marche pas …

c bon tout marche!!

en fait le pb que j avais…d avoir oublie le while($data = mysql_fetch_array($req))
en fait sans cette phrase il ne comprenait pas le “data”

edit: je deviens bon je crois : j avais modifie comme tu m as dit ma requete avt que je lise ton post!!! enfin faut pas s enflammer :slight_smile:

Lol, je suis deg , j’ai meme pas vu qu’il manquais kk chose mdr :stuck_out_tongue:

a votre avis ma solution est viable pour un extranet?

Bah pourquoi pas …

parfait alors plus qu a regler ce pb de sessions pour assurer qd meme une meilleure securite et tout ira bien :slight_smile:

Quel probleme de session ?

cf la mise a jour de mon 1er topic :slight_smile:

edit: si qq1 veut me recuperer mon code pas de pb…ms qu il evite toutes les sessions ca ca marche pas :wink:

  1. session_register() ne marche pas avec les variable en Global OFF !
  2. session_start() doit etre au debut de ta page , tu n’a pas a la metre dans la fonction. les session sont global , comme les connection SQL .
  3. Pour le test de présence de la variable , tu peut utilisé if(isset($_SESSION[‘variable’]))
  4. Avec les variable global OFF , tu peut pas recupére une variable de session rien qu’avec sont nom ( $variable ) mais en utilisans le tableau ou elle sont stoqué , ( comme POST, GET , ou bien SERVER )
    ex :
    [cpp]
<?php session_start(); if(isset($_SESSION['login'])){ echo 'Votre Login est : '.$_SESSION['login'];} else{ echo 'Vous n\'ete pas logger';} ?>

[/cpp]

voili voilou :smiley:

voila jai modifie mon code


session_start();// on démarre la session
if(isset($_SESSION['Login']) && (!session_is_registered($_SESSION['Login'])))
{ 
print 'Votre login est '.$_SESSION['Login'];
}
else{ 
   echo 'Vous n\'ete pas logger';
   // On affiche ce message d'erreur 
echo "<center>Vous devez vous identifier pour accéder à cette page</center>"; 
     
// On affiche le formulaire d'identification 
include ("extranet.php"); 
    } 



// on affiche un lien pour terminer une session
print '<a href="logout.php">Détruire la session[/url]<br>';

(j ai modifie que la 2eme partie de mon code en fait, la ou il y avait les erreurs)

et voici mes nouvelles erreurs:
Vous n’ete pas logger
Vous devez vous identifier pour accéder à cette page
Site : Extranet
Login:
Mot de passe:

et je peux me logger tant que je veux , il me demandera toujours de me logguer…et ce a l infini

pour ma page de depart , j ai voulu deplacer le session_open(), ms il m a repondu que de tte facon il y avait deja une sessions ouverte…

[cpp]if(isset($_SESSION[‘Login’]) && (!session_is_registered($_SESSION[‘Login’])))[/cpp]

  1. Pk testez 2 fois la meme chose ?
  2. session_is_registered($_SESSION[‘Login’]) c’est pas possbile carsession_is_registered() ne test que des variable sans le $.
  3. if(isset($_SESSION[‘Login’])) suffi :smiley:

bon jai virer la partie qui etait en trop…

ms je me loggue tjrs pas comme il faut…
" Vous n’ete pas logger
Vous devez vous identifier pour accéder à cette page "
etc etc etc

snif, qu es ce qu il est bete, pourtant je me loggue

fait un print_r($_SESSION);
pour voir si il a bien ta variable …

qd je fais ce print_r machin il me repond : Array ()

personne?

Si il ne te réponds qu’array, c’est que $_SESSION est vide.

ben alors ou est le pb?

[cpp]
index.php ( affichage )

<?php session_start(); if(isset($_SESSION['login'])) { echo 'Vous ête logger !
'; echo 'Login : '.$_SESSION['login']; }else{ echo 'Vous n\'ête pas logger
'; echo 'Vous pourvez vous logger ici Login[/url]'; } ?>

login.php ( Login )

<?php session_start(); if((isset($_POST['login']))&&(isset($_POST['password']))) { # Variable : $login = $_POST['login']; $password = $_POST['password']; # Requette : $sql_login = "SELECT login,password FROM `extranet` WHERE `login`=\'' . $login . '\''; $req_login = mysql_query($sql_login); #Validation : if($infos = mysql_fetch_array($req_login)) { if($password==$infos['password']) { // Login et password bon : $_SESSION['login'] = $login; // Création de la variable de session ['login'] header('Location:index.php'); // redirection sur l'affichage ! } else { // Mot de pass Faux ! echo 'Login impossible, veuillez verifier votre Login ou Password '; } } else { // Le Login N'existe pas : echo 'Login impossible, veuillez verifier votre Login ou Password '; } } else { // Pas de Variable de Login - Redirection : header('Location:index.php'); } formlogin.php: Formulaire , avec 2 champs 'login', et 'password'. Avec l'action qui redirige vers -> login.php [/cpp] Ca c'est un truc de basse que devrai marche, sert toi en ..