Problème PHP et mySQL identification membre
Résolu
shoub-tcy
Messages postés
173
Statut
Membre
-
shoub-tcy Messages postés 173 Statut Membre -
shoub-tcy Messages postés 173 Statut Membre -
Bonjour,
J'ai un petit soucis pour créer une identification de membre avec pseudo et mot de passe avec PHP et mySQL. J'ai créé le formulaire et j'ai essayé de créer un script, mais hélas sans résultat. Donc je ne sais vraiment pas ou ce situe l'erreur ou les erreurs, si quelqu'un pourrait m'aider, ça serait géniale. Voici mon script :
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['password']))
{
extract($_POST);
$sql = "SELECT password FROM formulaire WHERE pseudo='".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !
<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $password)
{
echo '<p> Vous avez rentré un mauvais pseudo ou mot de passe.</p>';
include('page3.php');
exit;
}
else
{
session_start();
$_SESSION['pseudo'] = $pseudo;
echo 'Identification OK';
header('Location: ../page1.php');
}
}
else
{
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('page3.php');
exit;
}
?>
Quand j'inscris un pseudo et un mot de passe de ma base de donné et que j'appuie sur envoyer, ce message apparait:
Erreur SQL !
SELECT password FROM formulaire WHERE pseudo='(ici apparait le pseudo tapé)'
No database selected
Amicalement.
J'ai un petit soucis pour créer une identification de membre avec pseudo et mot de passe avec PHP et mySQL. J'ai créé le formulaire et j'ai essayé de créer un script, mais hélas sans résultat. Donc je ne sais vraiment pas ou ce situe l'erreur ou les erreurs, si quelqu'un pourrait m'aider, ça serait géniale. Voici mon script :
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['password']))
{
extract($_POST);
$sql = "SELECT password FROM formulaire WHERE pseudo='".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !
<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['password'] != $password)
{
echo '<p> Vous avez rentré un mauvais pseudo ou mot de passe.</p>';
include('page3.php');
exit;
}
else
{
session_start();
$_SESSION['pseudo'] = $pseudo;
echo 'Identification OK';
header('Location: ../page1.php');
}
}
else
{
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('page3.php');
exit;
}
?>
Quand j'inscris un pseudo et un mot de passe de ma base de donné et que j'appuie sur envoyer, ce message apparait:
Erreur SQL !
SELECT password FROM formulaire WHERE pseudo='(ici apparait le pseudo tapé)'
No database selected
Amicalement.
2 réponses
Résumé de la discussion
Authentification par pseudo et mot de passe en PHP et MySQL présente des erreurs liées à l'exécution des requêtes et à l'accès à la base de données. Les réponses recommandent d'abandonner mysql_query et d'utiliser PDO, récupérer le mot de passe via la requête sur PDO et fermer le curseur, pour sécuriser l'accès. Des remarques pointent l'erreur No database selected, due à l'absence de sélection de base dans la DSN, et recommandent d'activer php_pdo_mysql ou de vérifier la version PHP. En pratique, les échanges suggèrent d'utiliser des requêtes préparées et de vérifier le stockage des mots de passe, ainsi que la gestion des erreurs côté serveur pour éviter l'affichage de messages techniques.
-
Bonjour,
En PDO, on n'utilise pas ce qui suit :$sql = "SELECT password FROM formulaire WHERE pseudo='".$pseudo."'"; $req = mysql_query($sql) or die('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());
Mais ceci :$sql = "SELECT password FROM formulaire WHERE pseudo='".$pseudo."'"; $req = $bdd->query($sql);
Sans oublier à la fin :$req->closeCursor();
-
-
Pour la suite que j'ai oublié de donner :D
$req->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet while( $ligne = $req->fetch() ) { echo $ligne->password.'<br />'; // Pour tester }
Source : http://www.siteduzero.com/tutoriel-3-34790-pdo-interface-d-acces-aux-bdd.html -
-
C'était pour tester, le mot de passe qui s'affiche, ça veut dire que ça récupère bien le mot de passe ^^
Je reprends le code :$sql = "SELECT password FROM formulaire WHERE pseudo='".$pseudo."'"; $req = $bdd->query($sql); $req->setFetchMode(PDO::FETCH_OBJ); if($ligne->password != $password) { echo '<p> Vous avez rentré un mauvais pseudo ou mot de passe.</p>'; include('page3.php'); exit; } else { session_start(); $_SESSION['pseudo'] = $pseudo; echo 'Identification OK'; header('Location: ../page1.php'); } $req->closeCursor(); -
Merci !!
Je sens que je me repproche du but grace à toi^^
Mais toujours les fichues erreurs sur cette ligne: $data = mysql_fetch_assoc($req);
-( ! ) Notice: Undefined variable: ligne in C:\Program Files\wamp\www\Site\Page3\identification.php on line 33.
-( ! ) Notice: Trying to get property of non-object in C:\Program Files\wamp\www\Site\Page3\identification.php on line 33
-
-
No database selected -> tu n'as pas choisi la base sur laquelle la requête doit être faite!