Page 1 sur 2

login et password

Posté : 22 févr. 2011, 15:45
par Sabrina tech
Salut tout le monde,

Je suis débutante en PHP et j'ai rencontrer un problème :
J'ai une bibliothèque dont je veux faire un espace membre pour pouvoir emprunter des livres saisis dans une base de données,
Après avoir créer ma base de données et après avoir faire l'inscription, on dos faire une connexion. (Mais c mon problème car j'arrive pas à le faire :( ...)
J'explique,

- Je veux afficher un message d'erreur au cas où le pseudo ou le mot de passe est incorrecte sinon
- Je veux passer à une autre page au cas où les données entrées sont valides.

Voici mon code pour pouvoir bien me comprendre et m'aider :
<?php 


include "connexion.php";

 if (isset($_POST['Submit'])) 
{
$connect=false;
$P=$_POST['textfieldd'];
$M=$_POST['textfieldd2'];


$requet="SELECT * FROM Pret";
$resultt = mysql_query($requet) or exit(mysql_error().'Echec');
 
  while( $data = mysql_fetch_assoc($resultt)) 
  { 
  
if($P == $data['Pseudo'] && $M == $data['Pass']) 
{
$connect ==true;
}
else 
{
?>
             <script language="javascript"> 
               alert('Pseudo ou mot de passe incorrect');
             </script>  
<?php 
}

}
}
?>            

J'attends vos réponses, et Merci pour vous d'avance :priere:

Re: login et password

Posté : 22 févr. 2011, 15:51
par moogli
salut,

alors le test pour savoir si login et mot de passe existe c'est dans la requete SQL qu'il faut le faire, car la si tu à 250000 membres et que c'est le dernier inscrit qui se log c'est 249999 tour du while pour quedal ;)

je te conseil de bien regarder le tuto sur l'espace membre pour corriger ton code ;)


@+

Re: login et password

Posté : 22 févr. 2011, 16:17
par Sabrina tech
Merci pour votre réponse et Merci pour ce Tuto ca m'a aidé à autre chose, mais il n'y a pas ce que je cherche,
car j'ai vérifier s'il le membre existe ou pas et ca a bien marché, mon problème c'est :
1. l'affichage du message d'erreurs au cas où les données sont invalide et être sur la même page si non :
2. (Comment) Passer à un autre page (où il est connecté)

J'ai essayé mais j'ai pas réussis, j'avais 2 cas il m'affiche le message d'erreur si non il page à une page (et c'est en ajoutant : "action="espacemembre.php"") mais mon but est de les faire les 2 afficher le message et changer la page J'espère que c claire

Re: login et password

Posté : 22 févr. 2011, 16:23
par xTG
1) j'ai pas bien compris, car le tutorial permet de gérer et d'afficher les erreurs.
2) tournes toi vers la fonction header(), elle te permettra de rediriger l'utilisateur. Tu peux aussi le faire avec un délai via le HTML(balise meta) ou le javascript( setTimeout() et document.location.href = 'url').

Re: login et password

Posté : 22 févr. 2011, 16:30
par Sabrina tech
ok, Merci je vais essayer d'utiliser ces fonctions et on verra ce qui ce passera
MERCI et @+

Re: login et password

Posté : 22 févr. 2011, 16:34
par Triflip
Voila un script que j'ai fait qui réalise ce que tu demande:
//Formulaire

<form action="index.php" method='post' >
<table class="log">
<tr>
<td>Login :</td>
<td><input type="text" style="width:100px" title="Nom Utilisateur" name="login" maxlength="250"></td>
</tr>
<tr>
<td>Password :</td>
<td><input type="password" style="width:100px" title="Mot de passe" name="pass" maxlength="10"></td>
</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" style="background-color:#2BFB4E" value="Connexion"></td>
</tr>
</table>
<?php
if(isset($_POST['login']) and isset($_POST['pass'])) /* teste si les champs on été bien remplits*/
{

$login = $_POST['login'];
$pwd = $_POST['pass'];

/*COUNT à pour rôle de compter par le biais de NB si il n'y a pas plusieur login identique.
le reste de la requête sert à lier login qui est récupéré du formulaire de saisie et affecté à une variable, idem pour pwd*/

$sql = "select COUNT(*) as NB from Nom_de_ta_table where login='".$login."' and pwd = '".$pwd."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);



if($data['NB'] == 1) //Si NB est égale à 1 (donc il n'y a pas de doublon) et l'utilisateur est connu de la bdd. DATA récupère uniquement le NB du au COUNT (*)
{
session_start();// on initialise la session sql
$_SESSION['login'] = $login;
echo header("location:ta_page.php");
}
}
else
{
echo "<tr><td><div class='erreur'> Mot de passe/Utilisateur incorrect !</td></tr></div>";
}
}
voila :D

Re: login et password

Posté : 22 févr. 2011, 16:56
par Sabrina tech
Merci Triflip :)
J'ai essayé ce code et j'ai changer les variables mais malheureusement :( le résultat est tjrs le 2ème c à dire qu'il passe à la page location dans tous cas (même si les données saisie sont invalides et inexistante dans ma base ) #-o
Que ce que je dois faire ???? #-o

Re: login et password

Posté : 22 févr. 2011, 17:01
par moogli
quel est ton dernier code ? (avant celui de triflip qui contient des erreurs :/)

si tu nous fournis le code que tu test à chaque fois on peu t'aider plus facilement ;)

à tu compris le tuto ? (l'a tu essayé ?)

est ce que tu a mis les mots de passe en clair dans la table ou hashé ? (md5 / sha1)

@+

Re: login et password

Posté : 22 févr. 2011, 17:10
par Invité
Pour le tuto wi, je suis entrai de le suivre,
et pour mon code le voila :

	  <table width="723" height="46" border="0" align="center">
    <tr>
      <td width="713">
	
		<form id="form1" method="post">
		
		  <table width="699" border="0" align="center">
		 
          <tr>
		    
             <td width="65"><span class="Style3">Pseudo</span></td>
             <td width="175"><input type="text" name="textfieldd" /></td>
			 <td width="109"><span class="Style2">Mot de passe</span> </td>
             <td width="147"><input type="password" name="textfieldd2" /></td>
			 <td width="64">
              <div align="right">
                <input type="submit" name="Submit" value="Se connecter"   />
                </div></td>
          </tr>
        </table>
     
       
      </form></td>

    </tr>
</table>




<?php 

include "connexion.php";  // connexion à la base de donnée

 if (isset($_POST['Submit'])) 
{

$P=$_POST['textfieldd'];
$M=$_POST['textfieldd2'];


$requet="SELECT * FROM Pret";
$resultt = mysql_query($requet) or exit(mysql_error().'Echec');
 
  while( $data = mysql_fetch_assoc($resultt)) 
  { 
  
if($P == $data['Pseudo'] && $M == $data['Pass']) 
{
echo"accept";                // ici ca marche mais il ne passe pas à aucune page et si j'ajoute : "action="index.php" au dessus au niveau du formulaire ca marche tjrs càd il ne m'affiche aucun résultat et tjrs il passe à la page index.php
}
else 
{
?>
	    	 <script language="javascript"> 
               alert('Pseudo ou mot de passe incorrect');              // et ici aussi ca marche 
             </script>  
<?php 
}

}
}
?>			


Re: login et password

Posté : 22 févr. 2011, 17:16
par moogli
alors déja il faut faire la vérif du formulaire avant l'affichage html, car en cas de succès tu utilise la fonction header pour rediriger vers une autre page. et si c'est pas bon tu peut près remplir le formulaire (au niveau pseudo ;)).

ensuite essai d'appliquer la méthode du tuto a ton script, notamment au niveau de la requete SQL ;)
quand c'est fait si tu but encore fait le savoir :) (nouveau code a l'appui).

@+

Re: login et password

Posté : 22 févr. 2011, 17:29
par Sabrina tech
Pour la première remarque que tu m'as fais j'ai pas bien compris, tu sais que je suis encre débutante #-o et je sais pas bien comment ca marche les fonction PHP (header), donc merci de m'explique de plus ou me donner la syntaxe de cette fonction.

Et pour la deuxième remarque t'as raison et c ce que je pense faire car le code du TUTO est plus intéressant et je suis déjà entrain de le faire en // mais j'ai qqs erreurs dont j'essaye de les corriger.

Merci et @ +

Re: login et password

Posté : 22 févr. 2011, 17:45
par xTG
Pour la première remarque que tu m'as fais j'ai pas bien compris, tu sais que je suis encre débutante #-o et je sais pas bien comment ca marche les fonction PHP (header), donc merci de m'explique de plus ou me donner la syntaxe de cette fonction.
Le lien fourni par Moogli te redirige vers la documentation qui est pas mal fournie en exemples et explications. ;)

Re: login et password

Posté : 22 févr. 2011, 19:12
par moogli
au pire fait le reste du code et met un message en attendant, le header vient à la fin c'est pas le plus important.

Sache juste que cette fonction permet d'envoyer des "entetes http" ça peut être pour indiquer le contenu au navigateur (une de tiens c'est du texte, tiens c'est pdf / html une image) mais ça peut aussi envoyer des truc plus "compliqué" comme une erreur 404 ou un redirection de page.

j’attends tes questions sur le début du code on verra pour le header à la fin ;)

@+

Re: login et password

Posté : 23 févr. 2011, 09:49
par Triflip
Merci Triflip :)
J'ai essayé ce code et j'ai changer les variables mais malheureusement :( le résultat est tjrs le 2ème c à dire qu'il passe à la page location dans tous cas (même si les données saisie sont invalides et inexistante dans ma base ) #-o
Que ce que je dois faire ???? #-o
Je viens de tester le script que je t'ai transmis, il marche très bien.
Bizarre... #-o

Re: login et password

Posté : 23 févr. 2011, 10:20
par Sabrina tech
Bjr Triflip,

Voici ton code que tu m'as donné, et qui ne m'affiche pas le message d'erreur mais il passe tjrs à la page location, Veuillez vérifier avec moi:
Merci
<body>
<div> 
<form action="index1.php" method='post' >
<table class="log">
<tr>
<td>Login :</td>
<td><input type="text" style="width:100px" title="Nom Utilisateur" name="login" maxlength="250"></td>
</tr>
<tr>
<td>Password :</td>
<td><input type="password" style="width:100px" title="Mot de passe" name="pass" maxlength="10"></td>
</tr>
<tr>
</tr>
<tr> 
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" style="background-color:#2BFB4E" value="Connexion"></td>
</tr>
</table>

 <?php
if(isset($_POST['login']) and isset($_POST['pass'])) /* teste si les champs on été bien remplits*/
{

$login = $_POST['login'];
$pwd = $_POST['pass'];

/*COUNT à pour rôle de compter par le biais de NB si il n'y a pas plusieur login identique.
le reste de la requête sert à lier login qui est récupéré du formulaire de saisie et affecté à une variable, idem pour pwd*/

$sql = "select COUNT(*) as NB from Pret where Pseudo='".$login."' and Pass = '".$pwd."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);



if($data['NB'] == 1) //Si NB est égale à 1 (donc il n'y a pas de doublon) et l'utilisateur est connu de la bdd. DATA récupère uniquement le NB du au COUNT (*)
{
session_start();// on initialise la session sql
$_SESSION['Pseudo'] = $login;
echo header("location:index1.php");
}

else
{
echo "<tr><td><div class='erreur'> Mot de passe/Utilisateur incorrect !</td></tr></div>";
}
}

?> 


</form>


</div>
</body>