Bonjour, j'ai fait le tp : Page protégée par mot de passe du tutoriel PHP et MySQL.
Je l'ai reussi mais j'ai une question : Imaginons que j'ai une table avec deux entrées : Utilisateur et Mot de passe
Si le formulaire demande l'utilisateur, et que l'on entre le deuxieme utilisateur de la liste, comment faire pour accéder au mot de passe qui lui va avec? Parce que pour l'instant, le tp ne conecernait un seul mot passe.
En fait je veux accéder a une ligne spécifique. Si c'est "utilisateur Julien" qui est démandée alors verifier le mot de passe associé a "Julien"
SELECT utilisateur, mot_de_passe FROM table WHERE utilisateur = $_POST['utilisateur']
avec le $_POST['utilisateur'] correspondant à l'utilisateur entré dans le formulaire de la page d'avant pour que la manipulation soit automatique.
.
Merci
bonjour,
ta colonne utilisateur est de type VARCHAR donc la valeur de utilisateur dans le WHERE du SELECT , comme l'indique Taguan dans son 1er exemple, doit être entourée de '.
Bon alors voila. Il y a deux pages : l'une avec le formulaire l'autre, c'est la page de traitement php.
Ce que je cherche a faire, c'est d'avoir une page protégée par deux mots de passe gérés par MySQL.
Ma table MySQL s'appelle "mdp" et contient deux colonnes "id" en type INT et "mdp" en type TEXT.
Si l'utilisateur entre le login "1", le mot de passe doit etre "1234", si le login est "2", le mot de passe est "12345".
Voici la capture d'écran de la table MySQL :
Le code du formulaire :
<!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">
<head>
<title>Espace personnel de Soufiane</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="index.css" />
</head>
<body>
<div id="login">
<h1> Bienvenue sur mon espace personnel de stockage en ligne </h1>
<div id="formulaire">
<form method="post" action="login.php">
<label for="session"> Login utilisateur : </label>
<input type="text" name="id"/>
<label for="pass">Votre mot de passe :</label>
<input type="password" name="mdp" id="pass" />
<input type="submit"/>
</form>
</div>
</div>
</body>
</html>
Et voila la page de traitement php :
<!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">
<head>
<title>Notre première instruction : echo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
$reponse = $bdd->query('SELECT * FROM mdp WHERE id = $_POST[id]');
$mdp = $reponse->fetch();
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
<?php
{
if ($_POST['mdp'] == $mdp['mdp'])
{
echo 'mot de passe ok';
}
else
{
echo 'erreur mot de passe';
}
}
$reponse->closeCursor(); // Termine le traitement de la requête
?>
</p>
</body>
</html>
La ligne me posant problème est celle-ci :
$reponse = $bdd->query('SELECT * FROM mdp WHERE id = $_POST[id]');
bonjour,
si tu (vous -> certains autres aussi) nommais les variables avec des noms significatifs ce serait mieux.
La méthode query() renvoie un curseur (un tableau 2D).
La méthode fetch() renvoie une ligne du curseur (un tableau 1D, un vecteur, une structure, ...).
Maintenant après le fetch il faut aller chercher la valeur d'un champ/d'une colonne.
Mais revenons au script!
'SELECT * FROM mdp WHERE id = $_POST[id]' ça c'est KO. Tu essaie de faire de l'interpolation avec des ' (impossible, il faut des ", et de plus avec avec un array où il faudrait ajouter de {})
'SELECT * FROM mdp WHERE id = ' . $_POST['id'] . ' ça c'est KO
ça c'est mieux : 'SELECT * FROM mdp WHERE id = ' . $_POST['id']
L'affichage temporaire des String SQL c'est pas mal aussi! Parfois.
Merci beaucoup pour l'aide. Par contre, j'ai encore une question mais de peur de créer un sujet dans la rubrique PHP inutilement, je prefere la poser rapidement. C'est pour savoir si on pouvait faire ce genre de chose :
bonjour,
inutile de passer par PHP, c'est du HTML statique.
<p class="design_texte">blablabla</p>
est suffisant!
Question MySQL
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !