Prob identification php

whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voila j'ai un petit prob d'identification de user j'ai d'abordt fait un enregistrement dans une table avec login pass et quelque info jusque la ca amrche puis qd je suis sur index poru me loger je tape le mot de pass et le login je clique sur identifier et ca me fait rien

Voici le code du login
<form method="post" action="verif.php">
	<p>
	<label for="nom">Pseudo : </label>
	<input type="text" name="login">
	<label for="motdepasse">Password : </label>
	<input type="password" name="pass">
	</p>
	<p>
	<input type="submit" value="S'identifier"><br/>
	<a href="inscrire.php">Inscription</a>
	</p>
	</form>


je demande bien dans ma balise form d'utilisé verif.php que voici

<?php
if($_POST["login"] != "" && $_POST["pass"] != "")
{
  $login  = $_POST["login"] ;
  $pass   = md5($_POST["pass"]) ;
 
	//connexion au serveur
	$cnx = mysql_connect("localhost","root","xxxx7777","dbfasung");
	//sélection de la base de données
	$db = mysql_select_db("dbfasung");
	
       //création de la requête SQL
       $sql = "SELECT login, pass_md5 FROM users WHERE login = '".$login."' AND pass_md5 = '".$pass."'"	;
       //exécution de la requête SQL
      $requete = @mysql_query($sql, $cnx) 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))
  {
    //début de la sessions
    session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["login"] = $login ;
 
    header("Location: membership.php") ;
  }//fin if
  //sinon on retourne à la page d'inscription
  else
  {
    header("Location: index.php") ;
  }//fin else
}//fin if
/*
  sinon on retourne à la page d'inscription
*/
else
{
  header("Location: index.php") ;
}//fin else
?>


Je lui dit bien que si il est différent du vide alors il peut cherche le login et pass dans la base de donnée et si ca correspont il doit me mettre sur membership.php si pas sur index.php alors soit il n'arrive plus à lire le pass_md5 et il me rennvoi sur index soit ben je sais pas :) si quelqu'un voit quelquechose qu'il nhésite pas àfaire signe je cherche de mon coté :)

D'avance merci :)
A voir également:

10 réponses

Alain42
 
Bonsoir,

Oui il faut que dans toutes les pages que tu veux protéger par ta session que tu mettes tout au début du script:


<?php // attention pas de ligne vide ni code HTML avant
if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
			{	
			header("Location index.php") ;
			}//fin if
		        else
			{
                         ?> 
                        <html>
                            //la le contenu de ta page
                         </html>
<?php
                      }
?>
1
Alain42
 
Salut,

il faut que tu fasses des catégories de statut

dans ta table BDD tu rajoutes un champ statut, dans lequel en face de chaque paire login/pass des mebdre stu mets:

cat1 cat2 cat3 etc..

ensuite, dans ton fichier qui verifie le login et pass, tu orientes si login/pass OK vers des pages différentes.

.................
//création de la requête SQL
       $sql = "SELECT login, pass_md5,statut FROM users WHERE login = '".$login."'AND pass_md5 = '".$pass."'"	;
       //exécution de la requête SQL
      $requete = @mysql_query($sql, $cnx) 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))
  {
    //début de la sessions
    session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["login"] = $statut ;
	switch ($statut){
		case "cat1":
			header("Location: membership_1.php") ;
		break;
		case "cat2":
			header("Location: membership_2.php") ;
		break;
		case "cat3":
			header("Location: membership_3.php") ;
		break;
		case "cat4":
			header("Location: membership_4.php") ;
		break;
	}
 
    
  }//fin if
  //sinon on retourne à la page d'inscription
  else
  {
    header("Location: index.php") ;
  }//fin else

......................



Dans le cookie de SESSION on a mis le statut, ensuite tu peux si tu veux vérifier qu'il correspond bien dans les pages concernées.

par exemple dans la page correspondant à la cat1:
if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
			{	
			header("Location index.php") ;
			}//fin if
		        elseif (isset($_SESSION["login"]) && ($_SESSION["login"]) == "cat1")
			{
                         ?> 
                        <html>
                            //la le contenu de ta page correspondant à la cat1
                         </html>
<?php
                      }
?>
1
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
je vais être encore un peu emmerdant mais voila j'ai ca dans mon verif.php
<?php
if($_POST["login"] != "" && $_POST["pass"] != "")
{
  //$login  = $_POST["login"] ;
  //$pass   = md5($_POST["pass"]) ;
 
	//connexion au serveur
	$cnx =mysql_connect("localhost","root","xxxx7777") or die ("Pb connexion a la base ".mysql_error());
	//sélection de la base de données
	$db = mysql_select_db("dbfasung") or die ("Pb selection base ".mysql_error());
	
       //création de la requête SQL
		$sql = 'SELECT statut,login,pass_md5 FROM users WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"'; 
       //exécution de la requête SQL
      $requete = mysql_query($sql, $cnx) 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))
  {
    //début de la sessions
    session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["login"] = $statut ;
		switch ($statut){
			case "cat1":
				header("Location: membership.php") ;
			break;
			case "cat2":
				header("Location: membership2.php") ;
			break;
			case "cat3":
				header("Location: membership3.php") ;
			break;
			case "cat4":
				header("Location: membership4.php") ;
			break;
		}
  }//fin if
  //sinon on retourne à la page d'inscription
  else
  {
    header("Location: index.php") ;
  }//fin else
}//fin if
/*
  sinon on retourne à la page d'inscription
*/
else
{
  header("Location: index.php") ;
}//fin else
?>


et ca dans la page ou je veux que cat1 soit

<?php
session_start() ;
	if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
	{	
	header("Location index.php") ;
	}//fin de if
	elseif (isset($_SESSION["login"]) && ($_SESSION["login"]) == "cat1")
	{	
?>
<html>
le code de ma page
</html>

<?php
}fin du else
?>


et dans ma bdd j'ai id, statut, login, pass_md5, age ect....

et pourtant qd je me log il me remet direct sur index.php comme si le pass été pas bon.

Au debut j'avais pas mis les "break;" dans le switch donc je pensais que c'était ça mais non rien à voir il veux pas se logger.

je fait d'autres test pour voir ... :)

Si quelqu'un à une brillante idée :)
0
Alain42
 
Bonsoir,

tu as des erreurs dans cette partie:
//connexion au serveur
$cnx =
mysql_connect("localhost","root","xxxx7777","dbfasung&q
uot;
);
//sélection de la base de données
$db = mysql_select_db("dbfasung");

//création de la requête SQL
$sql = "SELECT login, pass_md5 FROM users WHERE login = '".$login."'
AND pass_md5 = '".$pass."'" ;
//exécution de la requête SQL
$requete = @mysql_query($sql, $cnx) or
die($sql."<br>".mysql_error()) ;


ne mets pas le @ avant mysql_.... pendant la phase de debuggage et mets des or die sur les autres mysql_... pour avoir les erreurs
tu as un parametre en trop dans mysql_connect, il ne faut pas préciser la base, tu le fais après, et en plus tu avais un " ??

mets plutôt:

//connexion au serveur
	$cnx =mysql_connect("localhost","root","xxxx7777") or die ("Pb connexion a la base ".mysql_error());
	//sélection de la base de données
	$db = mysql_select_db("dbfasung") or die ("Pb selection base ".mysql_error());
	
       //création de la requête SQL
       $sql = "SELECT login, pass_md5 FROM users WHERE login = '".$login."'AND pass_md5 = '".$pass."'";
       //exécution de la requête SQL
      $requete = mysql_query($sql, $cnx) or die($sql."<br>".mysql_error()) ;
0
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai testé en changeant les pages et donc au premier else j'ai mis une autre page et il me charge cette page donc il prend pas le login et mot de pass je sais pas quoi faire :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Merci poru t'as réponse je débute alors je cherche un peu, jvais tester ca et je prend note de tes conseils :)
0
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
ca marche nickel, mais qd je suis dnas membership.php

j'ai
<?php
			session_start() ;
			if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
			{	
			header("Location index.php") ;
			}//fin if
		        else
			{
			echo("<pre>") ;
			print_r($_SESSION) ;
			echo("</pre>") ;
			echo("Bonjour, ".$_SESSION["login"]."") ; 
			echo("<a href=\"deconnexion.php\">déconnexion</a><br/>") ;
			}//fin else
			?>



Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\documents and settings\nightmare\mes documents\sitelycos\sitefasung\membership.php:7) in c:\documents and settings\nightmare\mes documents\sitelycos\sitefasung\membership.php on line 27

Array
(
[login] => pom
)

Bonjour, pomdéconnexion


faut peut être que je mette la parti ou y'a le header avant le code xhtml non ?
0
Alain42
 
Bonsoir,

oui il ne faut rien avant le header, pas de html, pas de ligne vide.
0
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
je ne comprend pas je m'authentifie j'arrive sur le page en question, je me deconnecte.

puis si je tape le lien complet de la page ben il me met dessus sans etre authentifié :/

je dois mettre quelquechose dautre appart

<?php
			session_start() ;
			if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
			{	
			header("Location index.php") ;
			}//fin if
		        else
			{
			echo("<pre>") ;
			print_r($_SESSION) ;
			echo("</pre>") ;
			echo("Bonjour, ".$_SESSION["login"]."") ; 
			echo("<a href=\"deconnexion.php\">déconnexion</a><br/>") ;
			}//fin else
?>


??? help me pl z :)
0
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Alain42 ca marche nickel,

j'aimerai abusé de toi en te dmeande si maintenant je veux une page pour certaine personne seulement dans les membres, je dois faire comment ?

mettre

if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
			{	
			header("Location index.php") ;
			}//fin if
		        elseif (!isset($_SESSION["login"])== "sonlogin" and (!isset($_SESSION["login"]) == "sonpass")
			{
                         ?> 
                        <html>
                            //la le contenu de ta page
                         </html>
<?php
                      }
?>


genre une page ou il peut mettre à jours les news ect... mais pas les autres membres

Merci d'avance
0
whiny Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Un grand merci Alain je débute dans le php et tu m'as grandement aidé sur ce coup la :)

Problème réglé :)
0