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 -
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:
page connexion:
Aidez-moi car voici ce que j'ai fait avec PDO mais j'ai un message d'erreur:
voici le code:
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
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:
- Comment adapter du code de connexion mysql_connect avec PDO
- Gmail connexion - Guide
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
2 réponses
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
Mais si dans ton form pseudo ou password sont vides ça va coincer ^^
Cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
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
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)
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)