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 -
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.

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.

Bobot (l'IA à votre service)
  1. Utilisateur anonyme
     
    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();
    1
    1. shoub-tcy Messages postés 173 Statut Membre 2
       
      Merci pour ces modif Adenora!
      Mais maintenant il m'indique qu'il y a une erreur à la ligne : $data = mysql_fetch_assoc($req);
      Et la phrase vous avez rentré un mauvais mot de passe ou pseudo apparait, alors que ceux que je rentre sont juste.
      0
    2. Utilisateur anonyme
       
      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
      0
    3. shoub-tcy Messages postés 173 Statut Membre 2
       
      Merci, mais j'ai toujours, la même erreur qui s'affiche, et le mot de passe que je rentre s'affiche sur la page maintenant.
      0
    4. Utilisateur anonyme
       
      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(); 
      0
    5. shoub-tcy Messages postés 173 Statut Membre 2
       
      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
      0
  2. thevinou Messages postés 1130 Statut Membre 190
     
    No database selected -> tu n'as pas choisi la base sur laquelle la requête doit être faite!
    0
    1. thevinou Messages postés 1130 Statut Membre 190
       
      Tu crées une connexion $bdd et tu ne l'utilises pas, donc il te dit que tu n'es pas connecté a un base !
      0
    2. shoub-tcy Messages postés 173 Statut Membre 2
       
      Merci d'avoir répondu thevinou, qu'est-ce qu'il faut que je fasse pour que j'y sois connecté?
      Désolé je suis encore un débutant, je ne sais pas trop comment m'y prendre :)
      0