Problème avec login et pass
msi79
-
msi79 -
msi79 -
salut . je suis débutant en php . j'ai jamais su comment on gère les login et mot de passe en php . je vien de prendre un code sur le net et j'essaie de l'adapter mais j'arrive pas .si je pouvais avoir de l'aide ça me fairait plaisir .merci d'avance .
voici la table admin :
-- Structure de la table 'admin'
--
CREATE TABLE IF NOT EXISTS 'admin' (
'ID_admin' int(3) unsigned NOT NULL AUTO_INCREMENT,
'login_admin' varchar(40) COLLATE utf8_unicode_ci NOT NULL,
'pass_admin' varchar(40) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY ('ID_admin')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
--
-- Contenu de la table 'admin'
--
voici le code :
voici la table admin :
-- Structure de la table 'admin'
--
CREATE TABLE IF NOT EXISTS 'admin' (
'ID_admin' int(3) unsigned NOT NULL AUTO_INCREMENT,
'login_admin' varchar(40) COLLATE utf8_unicode_ci NOT NULL,
'pass_admin' varchar(40) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY ('ID_admin')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
--
-- Contenu de la table 'admin'
--
voici le code :
<?php
//session_start() ;
if($_POST){
if($_POST["login_admin"] != "" && $_POST["mot_de_passe_admin"] != "")
{
$login_admin = $_POST["login_admin"] ;
$pass_admin = md5($_POST["mot_de_passe_admin"]) ;
//On se connecte à la base de donnée
include("connection.php");
//création de la requête SQL
$sql = "SELECT * FROM admin WHERE login_admin = '".$login_admin."' AND pass_admin = '".$pass_admin."'" ;
//exécution de la requête SQL
$requete = @mysql_query($sql) 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)){
//enregistrement d'une variable de session, ici le login de l'utilisateur
//$_SESSION["login_admin"] = $login_admin ;
header("Location:logo.php") ;
}//fin if le login et le pass sont ok
//sinon on retourne à la page d'inscription
else{
echo "<div class = \"texte_erreur\"> votre login ou votre mot de passe sont incorrect</div>";
}
} //fin if quelque chose a été posté
else{
echo "<div class = \"texte_erreur\"> votre login ou votre mot de passe sont incorrecte</div>";
}
}//fin if _POST
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<link REL="StyleSheet" TYPE="text/css" HREF="../style.css">
<head>
<title>Saisisez vos login et mot de pass</title>
</head>
<body onload="donner_focus('login_admin')">
<p align="center"> </p>
<form name="formulaire" method="post" action="" >
<table width="400" height="200" border="1" align="center" bordercolor="#FF9933" bgcolor="#F4C89F">
<tr>
<td height="184">
<table width="350" height="170" border="0" align="center" cellspacing="1" class="texte">
<tr>
<td height="37" colspan="2"> <div align="center"><strong>Saisisez vos login et mot de passe</strong></div></td>
</tr>
<tr>
<td width="51"> login</td>
<td width="239"><input name="login_admin" type="text" id="login_admin" size="30" /></td>
</tr>
<tr>
<td> passe</td>
<td><input name="mot_de_passe_admin" type="password" id="mot_de_passe_admin" size="30" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Envoyer" /></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<table width="300" border="0" cellspacing="0" cellpadding="0" align="center" class="texte">
<tr>
<td>
<p>En cas d'oubli du mot de passe : <a href="passe_perdu.php">cliquer ici</a>
pour obtenir un nouveau mot de passe</p>
</td>
</tr>
</table>
</body>
A voir également:
- Problème avec login et pass
- Menara messagerie login - <a href="https://forums.commentcamarche.net/forum/reseaux-sociaux-10">Forum Réseaux sociaux</a>
- Portail mpsa login ✓ - <a href="https://forums.commentcamarche.net/forum/reseau-5">Forum Réseau</a>
- Wifipass pierre et vacances login - <a href="https://forums.commentcamarche.net/forum/consommation-internet-301">Forum Consommation & Internet</a>
- Pass telecommande active - <a href="https://forums.commentcamarche.net/forum/televiseurs-172">Forum Téléviseurs</a>
- Pass carmillon démagnétisé - <a href="https://forums.commentcamarche.net/forum/mobile-26">Forum Mobile</a>
7 réponses
finalement j'ai refait un notre code qui n'affiche pas d'erreur mais ne me dirige pas vers la page souhaité (logo.php)
En plus à chaque fois que je reviens les champs ne sont pas vides . je veux que les champs login et pass soient vides a chaque fois qu'on revient .
voici ma nouvelle table :
-- Structure de la table 'membre'
--
CREATE TABLE IF NOT EXISTS 'membre' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'login' text COLLATE utf8_unicode_ci NOT NULL,
'pass_md5' text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
--
-- Contenu de la table 'membre'
--
INSERT INTO 'membre' ('id', 'login', 'pass_md5') VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3'),
(2, 'sool', '624fbbcb1b3567572e39d302f3e018fc'),
(3, 'zana', '9734c1859c07d4ca1a7034659db2594c');
voici mon code :
En plus à chaque fois que je reviens les champs ne sont pas vides . je veux que les champs login et pass soient vides a chaque fois qu'on revient .
voici ma nouvelle table :
-- Structure de la table 'membre'
--
CREATE TABLE IF NOT EXISTS 'membre' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'login' text COLLATE utf8_unicode_ci NOT NULL,
'pass_md5' text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY ('id')
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
--
-- Contenu de la table 'membre'
--
INSERT INTO 'membre' ('id', 'login', 'pass_md5') VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3'),
(2, 'sool', '624fbbcb1b3567572e39d302f3e018fc'),
(3, 'zana', '9734c1859c07d4ca1a7034659db2594c');
voici mon code :
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
include("connection.php");
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: logo.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
<html>
<head>
<title>Accueil</title>
<style type="text/css">
<!--
.Style6 {color: #FFFFFF; font-style: italic; font-weight: bold; }
.Style7 {
color: #FFFFFF;
font-style: italic;
}
.Style8 {color: #FF00FF}
-->
</style>
</head>
<body>
<p> </p>
<p> </p>
<p><br />
</p>
<form action="index.php" method="post">
<br />
<table border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FF00FF">
<td height="65" width="80"><table width="536" height="139" border="0" align="center" bgcolor="#0A5B79">
<tr>
<td colspan="2"><table width="512" border="0" align="center">
<tr>
<td width="395"><h1 align="center" class="Style8">Identifiez-vouz !! </h1></td>
<td width="101"><img src="images/logo3.jpg" alt="dfghj" width="100" height="70"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="109"><span class="Style6">Login : </span></td>
<td width="417"><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td>
</tr>
<tr>
<td><span class="Style6">Mot de passe : </span></td>
<td><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td>
</tr>
<tr>
<td colspan="2"><table width="53" border="0" align="center">
<tr>
<td width="47"><input type="submit" name="connexion" value="login"></td>
</tr>
</table>
<table width="100" border="0" align="right">
<tr>
<td width="94"><a href="inscription.php" class="Style7">Vous inscrire</a></td>
</tr>
</table></td>
</tr>
</table></td>
</table>
<br />
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
Bonjour , je voulais vous aider , mais malheureusement la base ne s'est pas importée correctement.
En tout cas , je vais vous donner ma méthode:
Au lieu du count dans la requete , utilises un simple select.
Le calcul du resultat se fera avec la methode mysql_num_rows qui retourne le nombres de ligne du resultat de la requete.
Voici le code:
Si non essays de faire un print_r($data) juste avant if data[0] pour voir si il contient vraiment quelque chose ou pas.
A+
En tout cas , je vais vous donner ma méthode:
Au lieu du count dans la requete , utilises un simple select.
Le calcul du resultat se fera avec la methode mysql_num_rows qui retourne le nombres de ligne du resultat de la requete.
Voici le code:
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
include("connection.php");
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT * FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
mysql_free_result($req);
mysql_close();
// si on obtient aucune réponse, alors l'utilisateur n'est pas un membre
if (mysql_num_rows($result)==0){
echo "impossible d'authentifier";
}
//Si oui
else {header('Location: logo.php');
exit();}
Si non essays de faire un print_r($data) juste avant if data[0] pour voir si il contient vraiment quelque chose ou pas.
A+
je viens de tenter ce que tu as recommander mais c'est toujours la meme chose . et le prinf_r n'affiche rien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fais un echo $sql pour voir la requête qui s'exécute et si elle ne contient aucune erreur , essais de debuger ton programme dans les différentes étapes.
Vérifies si il y a une bonne connexion à la base et une bonne exécution de la requête
Vérifies si il y a une bonne connexion à la base et une bonne exécution de la requête
c'est bisard ça . rien ne se passe . je suis redirigé vers la page index.php c'est a dire la meme page de login :
voici le code :
voici le code :
<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
include("connection.php");
// on teste si une entrée de la base contient ce couple login / pass
// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.mysql_escape_string(md5($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($data[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: logo.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, alors la, il y a un gros problème :)
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
echo $req;
}
?>
<html>
<head>
<title>Accueil</title>
<style type="text/css">
<!--
.Style6 {color: #FFFFFF; font-style: italic; font-weight: bold; }
.Style7 {
color: #FFFFFF;
font-style: italic;
}
.Style8 {color: #FF00FF}
-->
</style>
</head>
<body>
<p> </p>
<p> </p>
<p><br />
</p>
<form action="index.php" method="post">
<br />
<table border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#FF00FF">
<td height="65" width="80"><table width="536" height="139" border="0" align="center" bgcolor="#0A5B79">
<tr>
<td colspan="2"><table width="512" border="0" align="center">
<tr>
<td width="395"><h1 align="center" class="Style8">Identifiez-vouz !! </h1></td>
<td width="101"><img src="images/logo3.jpg" alt="dfghj" width="100" height="70"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="109"><span class="Style6">Login : </span></td>
<td width="417"><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td>
</tr>
<tr>
<td><span class="Style6">Mot de passe : </span></td>
<td><input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td>
</tr>
<tr>
<td colspan="2"><table width="53" border="0" align="center">
<tr>
<td width="47"><input type="submit" name="connexion" value="login"></td>
</tr>
</table>
<table width="100" border="0" align="right">
<tr>
<td width="94"><a href="inscription.php" class="Style7">Vous inscrire</a></td>
</tr>
</table></td>
</tr>
</table></td>
</table>
<br />
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
quand je fais : var_dump($_POST);
ça m'affiche :
array(3) { ["login"]=> string(5) "admin" ["pass"]=> string(5) "admin" ["connexion"]=> string(9) "connexion" }
NB : j'ai remplacer :
<td width="47"><input type="submit" name="connexion" value="login"></td>
par :
<td width="47"><input type="submit" name="connexion" value="connexion"></td>
et rien ne se passe toujours je reviens sur la page index.php
ça m'affiche :
array(3) { ["login"]=> string(5) "admin" ["pass"]=> string(5) "admin" ["connexion"]=> string(9) "connexion" }
NB : j'ai remplacer :
<td width="47"><input type="submit" name="connexion" value="login"></td>
par :
<td width="47"><input type="submit" name="connexion" value="connexion"></td>
et rien ne se passe toujours je reviens sur la page index.php