Comment adapter du code de connexion mysql_connect avec PDO

dadoumizwas Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   -
j'ai créé un script d'inscription et connexion en php des membres.
j'ai utilisé la connexion mysql_connect. je voudrai l'adapter à PDO.

voici le code la page inscription:

<?php
if (isset($_POST['submit']))//si l'utilisateur clique sur submit
//on déclare les variables
{
$identifiant= htmlspecialchars(trim($_POST['pseudo']));//htmlspecialchars=htmlentities pour eviter les tags avec du js
$motdepass= htmlspecialchars(trim($_POST['password']));//trim pour virer les espaces
$repetermotdepass= htmlspecialchars(trim($_POST['repeterpassword']));
 if($identifiant && $motdepass && $repetermotdepass)
 { 
  if($motdepass==$repetermotdepass)
  {
  $motdepass=md5($motdepass);// on crypte le mot de passe
  $connect=mysql_connect('localhost','root','') or die ('error');// die error si on arrive pas à se connecter on affiche un message d'erreur et tout le code s'arrête
  //si tout est bon on sélectionne la base
  mysql_select_db('phplogin');//on demarre une requête sql
  
  $reg=mysql_query("SELECT*FROM users WHERE identifiant='$identifiant'");// on doit sécuriser l'inscription pour qu'on ne trouve pas deux fois le même identifiant
  $rows=mysql_num_rows($reg);//on crée une autre variable
  if($rows==0)// ceci signifie s'il ne trouve pas cette information
  {
  $query=mysql_query("INSERT INTO users VALUES('','$identifiant','$motdepass')");//on insère les données
  die("Inscription terminée  <a href='connexion.php'>  connectez-vous  </a>");//ici on le redirige vers la page de connexion login.php qi n'existe pas encore
  }else echo "cet identifiant n'est pas disponible.";
  }else echo "les deux mots de passe doivent être identiques";
 } else echo "veuillez saisir tous les champs";
}
?>




page connexion:

<?php
session_start();
if (isset($_POST['submit']))//si l'utilisateur clique sur submit
{//on déclare les variables
$identifiant= htmlspecialchars(trim($_POST['pseudo']));// pour eviter les tags avec du js
$motdepass= htmlspecialchars(trim($_POST['password']));//trim pour virer les espaces
 if($identifiant && $motdepass)
 {
 $motdepass=md5($motdepass);// on crypte le mot de passe
 $connect=mysql_connect('localhost','root','') or die ('error');// die error si on arrive pas à se connecter on affiche un message d'erreur et tout le code s'arrête
  //si tout est bon on sélectionne la base
 mysql_select_db('phplogin');
 $query=mysql_query("SELECT*FROM users WHERE identifiant='$identifiant'&& motdepass='$motdepass'");//on check si l'identifiant et le mot de passe sont bien ceux qui se trouvent dans la base
 $rows=mysql_num_rows($query);//on crée une autre variable
 if($rows==1)// ceci signifie s'il trouve l'identifiant et le mot de passe
 {
 $_SESSION['pseudo']=$identifiant;
 header('location:membre.php');//si c'est bon on le rédirige vers la page membre
 }else echo "Identifiant ou mot de passe incorrect.";
 }else echo "veuillez saisir tous les champs"; 
}
?>



Aidez-moi car voici ce que j'ai fait avec PDO mais j'ai un message d'erreur:

voici le code:

<?php
if (isset($_POST['submit']))//si l'utilisateur clique sur submit
//on déclare les variables
{
$identifiant= htmlspecialchars(trim($_POST['pseudo']));//htmlspecialchars=htmlentities pour eviter les tags avec du js
$motdepass= htmlspecialchars(trim($_POST['password']));//trim pour virer les espaces
$repetermotdepass= htmlspecialchars(trim($_POST['repeterpassword']));
 if($identifiant && $motdepass && $repetermotdepass)
 { 
  if($motdepass==$repetermotdepass)
  {
  $motdepass=md5($motdepass);// on crypte le mot de passe
  
  try
  {
  $connect=new PDO('mysql:host=localhost;dbname=phplogin', 'root', '');//on se connecte à la base
  }
  catch(Exception $e)
  {  
  die('Erreur : '.$e->getMessage());// die error si on arrive pas à se connecter on affiche un message d'erreur et tout le code s'arrête
  }
  
  //on demarre une requête sql
  
  $reg=$connect->query("SELECT*FROM users WHERE identifiant='$identifiant'");// on doit sécuriser l'inscription pour qu'on ne trouve pas deux fois le même identifiant
  if($reg==0)// ceci signifie s'il ne trouve pas cette information
  {
  $connect->exec("INSERT INTO users VALUES('','$identifiant','$motdepass')");//on insère les données
  die("Inscription terminée  <a href='connexion.php'>  connectez-vous  </a>");//ici on le redirige vers la page de connexion login.php qi n'existe pas encore
  }else echo "cet identifiant n'est pas disponible.";
  }else echo "les deux mots de passe doivent être identiques";
 } else echo "veuillez saisir tous les champs";
}
?>



le message que je reçois lorsque je m'inscris est :

Notice: Object of class PDOStatement could not be converted to int in C:\wamp\www\l2info\inscription.php on line 28
Call Stack
# Time Memory Function Location
1 0.0005 146144 {main}( ) ..\inscription.php:0
A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

pourrais-tu utiliser la coloration syntaxique ' balise code ' ce serait plus "lisible"

Je n'ai pas tout regardé, je me suis juste arrêté là où ton programme le fera aussi. Pour récupérer les données de ton formulaire tu utilises

if (isset($_POST['submit']))

Mais si dans ton form pseudo ou password sont vides ça va coincer ^^

if ( isset($_POST['pseudo'] ) && isset($_POST['password']) ) ....


Cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
0
Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345
 
Bonjour, dadoumizwas,

Comme ludobabs a commencé à répondre, je ne ferai qu'un rappel :
Les réponses sont données par des personnes, pas par des robots. Merci d'user des formules de politesse courante (bonjour, merci, s'il vous plait...).

Pour être sûr, le code est bien du PHP (ce n'est pas ma tasse de thé) ?

Les gens qui se battent peuvent perdre. Les gens qui ne se battent pas ont déjà perdu.
(Bertolt BRECHT)
0
dadoumizwas Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour chris 94

merci pour ce rappel. je reconnais avoir oublié certains principes.
0
Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345 > dadoumizwas Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Tout le monde peut se tromper ;-)

Je te repose la question : le code est bien du PHP ? (Pour me permettre de lui affecter la balise correcte dans ta question)
0
Utilisateur anonyme
 
oui c'est bien du php : )
0
Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345 > Utilisateur anonyme
 
Vu... Forme appliquée ;-)
0