Script d'authentification avec mysql

Petit nouveau ! | 8 Messages

20 mars 2009, 13:37

Bonjour à tous,

Je débute dans le beau monde qu'est PHP.
Je désire faire un script qui va vérifier si l'user et le mdp sont identique à ceux contenu dans la BD mysql.
Je ne sait pas pourquoi mais j'ai une erreur à la dernière ligne quand je l'exécute.
Voici le code :

<html>
<head>
<title>acces</title>
</head>
<body>
<div>
<?php
if (!isset ($_POST['mdp']) && !isset($_POST['user']) )

{
	?>
		<form action="acces.php" method="POST">
		<p>Utilisateur</p><input type="text" name="user" />
		<br/>
		<p>Mot de passe</p><input type="text" name="mdp" />
		<input type="submit" value="VALIDER" />
		</form>
<?php
}
else
{
		$user=$_POST['user'];
		mysql_connect("localhost", "user", "mdp")or die('Could not connect');
		mysql_select_db("ambio")or die('Could not selectdb');
		$usrpass = mysql_query("SELECT * FROM user where $user ");
		mysql_close();
	while ($test = mysql_fetch_array($usrpass))
	{
		if (($test['user']==$user) && ($test['pass']==$mdp))
		{
		echo 'access granted';
		}
		else
		{
		echo 'mauvais utilisateurs ou mot de passe';
		{
		
	}
}

?>
</div>


</body>
</html> <!-- l'erreur apparrait a cette ligne -->
Le script est censé reboucler sur lui même et si les champs on été rempli, il affiche acces ok ou non sinon il affiche les champs d'authentification.

Merci de votre aide en tout cas

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Modifié en dernier par aspiman le 20 mars 2009, 17:29, modifié 2 fois.

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 13:51

Je pense que ton mysql_close(); est mal placé :

Tiens voici ce que je te propose : (j'ai corrigé quelque petit truc niveau optimisation et sécurité et bug)
       $user=addslahes($_POST['user']); //addslahes  = sécurité anti injection sql
       $mdp=addslahes($_POST['mdp']);

        mysql_connect("localhost", "user", "mdp")or die('Could not connect'); // c'est normal ici "user", "mdp" ?
        mysql_select_db("ambio")or die('Could not selectdb');
        $usrpass = mysql_query("SELECT * FROM user where colonne_user ='$user'  LIMIT 1"); // ta syntaxe est fausse
      
 //mysql_fetch_assoc mieux que mysql_fetch_array dans ton cas  : gain de mémoire et de vitesse
$test = mysql_fetch_assoc($usrpass) ; //pas de while car LIMIT 1 dans la requète : on a qu'un USER à vérifier pas plusieurs
if ($test['pass']==$mdp)
{
echo 'access granted';
}
else
{
echo 'mauvais utilisateurs ou mot de passe';
{
//on aurait pu écrire :
echo ($test['pass']==$mdp)) ? 'access granted' : 'mauvais utilisateurs ou mot de passe';
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 14:02

Merci de ta rapidité a toute épreuve!!

j'ai tjr cette erreur :
- Parse error: parse error, unexpected $end in C:\Program Files\xampp\htdocs\acces.php on line 48

J'ai vu que tu avais supprimer mysql_close();
Il faut bien que je ferme la connexion à un moment ou à un autre, je pensais qu'il fallait le faire juste après avoir récupéré le contenu de la table voulu dans la variables "$usrpass"??

C'est fou ce truc. je m'arrache les cheveux[/code]

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 14:07

le $end veux dire que j'ai oublié de fermer avec } quelques part.

remplace
{
echo 'mauvais utilisateurs ou mot de passe';
{ 
par
{
echo 'mauvais utilisateurs ou mot de passe';
}
le mysql_close() tu le places après le mysql_fetch_assoc.

Pour la rapidité : je suis en mode repas
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 14:26

j'avoue je suis teubé, accolade à la c..

Si le mode repas est mois rapide que le mode "Default" et ba punaise!!! ^^

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 14:27

j'avoue je suis teubé, accolade à la c..

Si le mode repas est mois rapide que le mode "Default" et ba punaise!!! ^^
Pas de problème : ca marche ou pas ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 14:33

Yeah!!!! Ça roule sans problème!

Pourrais tu m'expliquer la différence entre un fetch_array et un fetch_assoc sans vouloir abusé?

En tout cas merci beaucoup.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 1996 Messages

20 mars 2009, 14:35

Non je suis là pour cela :

mysql_fecth_array te retourne un tableau associatif + un tableau numérique.
mysql_fetch_assoc te retourne un tableau associatif uniquement (donc moins lourds)

Pour faire simple : mysql_fetch_array = mysql_fetch_row + mysql_fetch_assoc
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 8 Messages

20 mars 2009, 14:43

MERCI

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]