par
Victor BRITO » 01 avr. 2006, 17:44
Salut à tous!
Soit une page index.php, où l'on inscrit un nouvel identifiant, avec mot de passe. Ce dernier est crypté dans la base de données. L'identifiant est bien enregistré dans la base de données et le mot de passe y est bien crypté.
Dans une autre page (verif.php), je souhaite vérifier l'identifiant et le mot de passe précédemment enregistrés. Même si le mot de passe est correct, tout se passe comme s'il ne l'était pas.
Voici le code des pages en question. Je tiens à préciser que je n'ai aucun message d'erreur.
index.php
<?php
$connexion=mysql_connect("localhost", "root", "") || die("Impossible de se connecter au serveur de la base de données.");
$base=mysql_select_db("babase") || die("Impossible de se connecter à la base de données.");
if (isset($_POST["pseudo"])) $pseudo=$_POST["pseudo"]; else $pseudo="";
if (isset($_POST["motdepasse"])) $motdepasse=$_POST["motdepasse"]; else $motdepasse="";
if (isset($_POST["id"])) $id=$_POST["id"]; else $id="";
$cryptage=md5($motdepasse);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php if (!isset($_POST["pseudo"]) || !isset($_POST["motdepasse"])){?>
<form name="form1" method="post" action="">
<input name="pseudo" type="text" id="pseudo">
<input name="motdepasse" type="password" id="motdepasse">
<input name="id" type="hidden" id="id">
<input name="go" type="submit" id="go" value="Envoyer">
</form>
<?php }
else{
$s="INSERT INTO admin (pseudo, motdepasse) VALUES ('$pseudo', '$cryptage')";
$r=mysql_query($s);
if (mysql_insert_id()==0) echo 'Échec';
else{
$id=mysql_insert_id();
echo '<a href="verif.php">Vérifions</a>';
}
}
?>
</body>
</html>
verif.php
<?php
$connexion=mysql_connect("localhost", "root", "") || die("Impossible de se connecter au serveur de la base de données.");
$base=mysql_select_db("babase") || die("Impossible de se connecter à la base de données.");
if (!isset($_POST["pseudo"])) $pseudo=""; else $pseudo=$_POST["pseudo"];
if (!isset($_POST["motdepasse"])) $motdepasse=""; else $motdepasse=$_POST["motdepasse"];
$cryptage=md5($motdepasse);
if (!isset($_POST["pseudo"]) || !isset($_POST["motdepasse"])){
$etape=1;
$message='<p> </p>';
}
else{
$s="SELECT * FROM admin WHERE pseudo='$pseudo' AND motdepasse='$cryptage'";
$r=mysql_query($s);
if (mysql_num_rows($r)!=0){
$etape=2;
$message='<p>Mot de passe bien décrypté.</p>';
}
else{
$etape=3;
$message='<p>PHPFrance, on a un problème.</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Vérification</title>
</head>
<body>
<?php
echo $message;
if ($etape!=2){
?>
<form name="form1" method="post" action="">
<input name="pseudo" type="text" id="pseudo">
<input name="motdepasse" type="password" id="motdepasse">
<input name="go" type="submit" id="go" value="Envoyer">
</form>
<?php
}
?>
</body>
</html>
Et si vous voulez bien essayer, voici les requêtes SQL nécessaires à la base de données.
Code : Tout sélectionner
CREATE DATABASE babase;
CREATE TABLE admin (
id tinyint(4) NOT NULL auto_increment,
motdepasse varchar(16) NOT NULL default '',
pseudo varchar(5) NOT NULL default '',
PRIMARY KEY (id)
);
Salut à tous!
Soit une page index.php, où l'on inscrit un nouvel identifiant, avec mot de passe. Ce dernier est crypté dans la base de données. L'identifiant est bien enregistré dans la base de données et le mot de passe y est bien crypté.
Dans une autre page (verif.php), je souhaite vérifier l'identifiant et le mot de passe précédemment enregistrés. Même si le mot de passe est correct, tout se passe comme s'il ne l'était pas. :shock:
Voici le code des pages en question. Je tiens à préciser que je n'ai aucun message d'erreur.
index.php
[php]
<?php
$connexion=mysql_connect("localhost", "root", "") || die("Impossible de se connecter au serveur de la base de données.");
$base=mysql_select_db("babase") || die("Impossible de se connecter à la base de données.");
if (isset($_POST["pseudo"])) $pseudo=$_POST["pseudo"]; else $pseudo="";
if (isset($_POST["motdepasse"])) $motdepasse=$_POST["motdepasse"]; else $motdepasse="";
if (isset($_POST["id"])) $id=$_POST["id"]; else $id="";
$cryptage=md5($motdepasse);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Index</title>
</head>
<body>
<?php if (!isset($_POST["pseudo"]) || !isset($_POST["motdepasse"])){?>
<form name="form1" method="post" action="">
<input name="pseudo" type="text" id="pseudo">
<input name="motdepasse" type="password" id="motdepasse">
<input name="id" type="hidden" id="id">
<input name="go" type="submit" id="go" value="Envoyer">
</form>
<?php }
else{
$s="INSERT INTO admin (pseudo, motdepasse) VALUES ('$pseudo', '$cryptage')";
$r=mysql_query($s);
if (mysql_insert_id()==0) echo 'Échec';
else{
$id=mysql_insert_id();
echo '<a href="verif.php">Vérifions</a>';
}
}
?>
</body>
</html>
[/php]
verif.php
[php]
<?php
$connexion=mysql_connect("localhost", "root", "") || die("Impossible de se connecter au serveur de la base de données.");
$base=mysql_select_db("babase") || die("Impossible de se connecter à la base de données.");
if (!isset($_POST["pseudo"])) $pseudo=""; else $pseudo=$_POST["pseudo"];
if (!isset($_POST["motdepasse"])) $motdepasse=""; else $motdepasse=$_POST["motdepasse"];
$cryptage=md5($motdepasse);
if (!isset($_POST["pseudo"]) || !isset($_POST["motdepasse"])){
$etape=1;
$message='<p> </p>';
}
else{
$s="SELECT * FROM admin WHERE pseudo='$pseudo' AND motdepasse='$cryptage'";
$r=mysql_query($s);
if (mysql_num_rows($r)!=0){
$etape=2;
$message='<p>Mot de passe bien décrypté.</p>';
}
else{
$etape=3;
$message='<p>PHPFrance, on a un problème.</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Vérification</title>
</head>
<body>
<?php
echo $message;
if ($etape!=2){
?>
<form name="form1" method="post" action="">
<input name="pseudo" type="text" id="pseudo">
<input name="motdepasse" type="password" id="motdepasse">
<input name="go" type="submit" id="go" value="Envoyer">
</form>
<?php
}
?>
</body>
</html>
[/php]
Et si vous voulez bien essayer, voici les requêtes SQL nécessaires à la base de données.
[code]
CREATE DATABASE babase;
CREATE TABLE admin (
id tinyint(4) NOT NULL auto_increment,
motdepasse varchar(16) NOT NULL default '',
pseudo varchar(5) NOT NULL default '',
PRIMARY KEY (id)
);
[/code]