PDO --> MySQL

Fermé
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - 5 févr. 2011 à 11:29
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - 6 févr. 2011 à 10:12
Bonjour,


J'ai un formulaire de validation avec les interogations de tables en PDO.
J'aimerai les transformer en MySql mais je ne sais pas comment faire.

[CODE]

<?php require("conf.php3");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Document sans titre</title>

</head>

<body>

<?php


// Récupération des variables nécessaires à l'activation
$login = $_GET['log'];
$cle = $_GET['cle'];

// Récupération de la clé correspondant au $login dans la base de données
$stmt = $dbh->prepare("SELECT cle,actif FROM membre WHERE pseudo like :pseudo ");
if($stmt->execute(array(':pseudo' => $login)) && $row = $stmt->fetch())
{
$clebdd = $row['cle']; // Récupération de la clé
$actif = $row['actif']; // $actif contiendra alors 0 ou 1
}


// On teste la valeur de la variable $actif récupéré dans la BDD
if($actif == '1') // Si le compte est déjà actif on prévient
{
echo "Votre compte est déjà actif !";
}
else // Si ce n'est pas le cas on passe aux comparaisons
{
if($cle == $clebdd) // On compare nos deux clés
{
// Si elles correspondent on active le compte !
echo "Votre compte a bien été activé !";

// La requête qui va passer notre champ actif de 0 à 1
mysql_query("UPDATE membre SET actif='$actif' WHERE pseudo like '$login'");
}
else // Si les deux clés sont différentes on provoque une erreur...
{
echo "Erreur ! Votre compte ne peut être activé...";
}
}

?>


</body>


</html>

/CODE

9 réponses

rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
5 févr. 2011 à 13:03
pas sur a 100% mais un truc comme ca

$sql = "SELECT cle,actif FROM membre WHERE pseudo like %$login%";
$result = mysql_query($sql);
$row= mysql_fetch_assoc($result);

if($result && $row)
{
      $clebdd = $row['cle']; // Récupération de la clé 
      $actif = $row['actif'];  // $actif contiendra alors 0 ou 1 
}
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
5 févr. 2011 à 15:52
Merci pour ta réponse, mais j'ai de multiples erreurs et je n'y comprend pas grand choses :(


Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.221/validation.php on line 23

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /homez.221/validation.php on line 23

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /homez.221/validation.php on line 24
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
5 févr. 2011 à 16:11
bin faut que tu apprenne un minimum a te connecter a ta base
avant de faire une requete sinon tous les deux jours tu va rencontrer des problemes.

tien voila un bon commencement :

https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913655-quest-ce-quune-base-de-donnees
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
5 févr. 2011 à 16:21
T'inquiete, c'est pas vraiment ça le soucis.

En fait je viens de remarquer que dans mon formulaire d'envoi de mail, la clé qui me sert d'activation ne s'inscrit pas dans la base de donnée.

J'ai du faire une erreur dans la requête:

// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);


// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
mysql_query("INSERT INTO membre VALUES cle='$cle' WHERE pseudo like '$login'");
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
5 févr. 2011 à 16:56
déja si tu es sur de ton login tu peut te passer de like sinon tu pourrai avoir des problemes

WHERE pseudo = '$login' ");




et sinon euh...

T'inquiete, c'est pas vraiment ça le soucis. 


( et apprendre les syntaxes n'a rien d'une perte de temps je te rassures ;) )
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
5 févr. 2011 à 17:05
C'est bizarre, le mail, le nom et le pass marchent bien, mais la clé ne s'inscrit pas dans la base.

Voici mon formulaire si jamais tu as une idée, je retourne fouillé
( merci en toi en tout cas )


<?php

require("conf.php3");

switch($action) {
/*-----------------------------------------------------------------*/
/* AJOUT DANS MySQL */
/*-----------------------------------------------------------------*/

case "add";

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}

// TEST SUR LES VALEURS SAISIES
if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
//if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}
//if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}

// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
{
echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";
}
else
{
// CREATION D'UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}

// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
$idmax=mysql_result($requete,0,"max(id_membre)");

// INSERTION DANS LA TABLE
$idnew=$idmax+1;
$requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$mail\",\"\",\"\")",$db_link) or die(mysql_error());
// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
// insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")


// Récupération des variables nécessaires au mail de confirmation
$email = $_POST['mail'];
$login = $_POST['pseudo'];

// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);


// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
mysql_query("INSERT INTO membre VALUES cle='$cle' WHERE pseudo like '$login'");


// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@site.com" ;

// Le lien d'activation est composé du login(log) et de la clé(cle)
$message = 'Bienvenue sur VotreSite,

Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.

http://site.com/validation.php?log='.urlencode($login).'&cle='.urlencode($cle).'


---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';


mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail


}

// DECONNEXION MYSQL
mysql_close($db_link);

break;


/*-----------------------------------------------------------------*/
/* AFFICHAGE DU FORMULAIRE */
/*-----------------------------------------------------------------*/

default;
echo " <h2>Nouveau membre</h2>
<form action=\"adduser.php3\" method=\"post\">
<input type=\"hidden\" name=\"action\" value=\"add\">
Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>
Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>
<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
Votre email<br><input type=\"text\" name=\"mail\"><br>
<br>
<!-- Ville<br><input type=\"text\" name=\"ville\"><br> -->
<input type=\"submit\" value=\"Envoyer\">
</form>
<font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";
break;
}


?>
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
5 févr. 2011 à 18:46
C'est bon pour la clé, elle arrive bien dans la base de donné et le lien mail semble correct.

Je n'ai plus d'erreurs de connexion dans le formulaire validation, mais j'ai toujours le message disant que le compte n'a pas pu être activé.

Le champ actif ne prend pas la valeur 1 :(
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
5 févr. 2011 à 19:12
avec un code aussi comprimmé y a rien de clair et ca donne pas envie de mettre les yeux dedans, dsl..

a l'occaz utilise un minimum d'indentation et la balise < c o d e > qui va bien ;)
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
Modifié par TRUNCKS le 6/02/2011 à 10:16
Voilà le formulaire d'inscription:




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  


<title>Espace membre</title>  

</head>  

<body>  

<font face="Verdana" size="2">  
<center>  

<?php  

require("conf.php3");  

switch($action) {  
/*-----------------------------------------------------------------*/  
/* AJOUT DANS MySQL   */  
/*-----------------------------------------------------------------*/  

case "add";  

// CONNEXION A LA BASE DE DONNEE  
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);  
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}  


// Récupération des variables nécessaires au mail de confirmation   
$email = $_POST['mail'];  
$login = $_POST['pseudo_membre'];  

    
// Génération aléatoire d'une clé  
$cle = md5(microtime(TRUE)*100000);  


// TEST SUR LES VALEURS SAISIES  
if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}  
if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}  
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.  
//if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}  
//if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href=\"javascript:window.history.back()\">Retour</a>";exit;}  



// ON VERIFIE SI CE PSEUDO EXISTE DEJA  
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo=\"$pseudo_membre\"",$db_link) or die(mysql_error());  
$num=mysql_num_rows($requete);  
if($num!=0)  
 {  
 echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href=\"javascript:window.history.back()\">Retour</a>";  
 }  
else  
 {  


 // CREATION D'UN IDENTIFIANT ALEATOIRE  
 $taille = 20;  
 $lettres = "abcdefghijklmnopqrstuvwxyz0123456789";  
 srand(time());  
 for ($i=0;$i<$taille;$i++)  
  {  
  $id.=substr($lettres,(rand()%(strlen($lettres))),1);  
  }  
    
 // ON RECHERCHE L'ID MAXIMUM DE LA TABLE  
 $requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());  
 $idmax=mysql_result($requete,0,"max(id_membre)");  

   
 // INSERTION DANS LA TABLE   
 $idnew=$idmax+1;  
 $requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$mail\",\"$cle\",\"\")",$db_link) or die(mysql_error());  
 // CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :  
 // insert into membre values ($idnew,\"$id\",\"$pseudo_membre\",\"$passe_membre\",\"$email\",\"$ville\")  
   

// Préparation du mail contenant le lien d'activation  
$destinataire = $email;  
$sujet = "Activer votre compte" ;  
$entete = "From: inscription@site.com" ;  


// Le lien d'activation est composé du login(log) et de la clé(cle)  
$message = 'Bienvenue sur VotreSite,  

Pour activer votre compte, veuillez cliquer sur le lien ci dessous  
ou copier/coller dans votre navigateur internet.  

http://-site.com/validation.php?log='.urlencode($login).'&cle='.urlencode($cle).'  


---------------  
Ceci est un mail automatique, Merci de ne pas y répondre.';  


mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail  


 }  

// DECONNEXION MYSQL  
mysql_close($db_link);  

break;  


/*-----------------------------------------------------------------*/  
/* AFFICHAGE DU FORMULAIRE   */  
/*-----------------------------------------------------------------*/  

default;  
echo " <h2>Nouveau membre</h2>  
 <form action=\"adduser.php3\" method=\"post\">  
 <input type=\"hidden\" name=\"action\" value=\"add\">  
 Chosissez un pseudo<br><input type=\"text\" name=\"pseudo_membre\"><br>  
 Chosissez un mot de passe<br><input type=\"password\" name=\"passe_membre\"><br>  
 <! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->  
 Votre email<br><input type=\"text\" name=\"mail\"><br>  
 <br>  
 <!-- Ville<br><input type=\"text\" name=\"ville\"><br> -->  
 <input type=\"submit\" value=\"Envoyer\">  
 </form>  
 <font face=\"Verdana\" size=\"2\"><a href=\"index.htm\">Se connecter</a></font>";  
break;  
}  


?>  

</center>  

</font>  

</body>  

</html>  






Et le formulaire de validation, ( apparemment, le champ actif ne se met pas à 1 )



<?php require("conf.php3");?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

<title>Document sans titre</title>  

</head>  

<body>  

<?php  

// CONNEXION A LA BASE DE DONNEE  
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);  
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}  

// Récupération des variables nécessaires à l'activation  
$login = $_GET['log'];  
$cle = $_GET['cle'];  
        
// Récupération de la clé correspondant au $login dans la base de données  
$sql = "SELECT cle,actif FROM membre WHERE pseudo like $login";  
$result = mysql_query($sql);  


if($sql)  
{  
      $clebdd = $row['cle']; // Récupération de la clé   
      $actif = $row['actif'];  // $actif contiendra alors 0 ou 1   
}  
else//le "else" manquant  
  {  
    $clebdd = $row['cle'];   // Récupération de la clé  
    $actif = $row['actif']; // $actif contiendra alors 0 ou 1  
  }  

        
        
// On teste la valeur de la variable $actif récupéré dans la BDD  
if($actif == '1') // Si le compte est déjà actif on prévient  
  {  
     echo "Votre compte est déjà actif !";  
  }  
else // Si ce n'est pas le cas on passe aux comparaisons  
  {  
     if($cle == $clebdd) // On compare nos deux clés     
       {  
          // Si elles correspondent on active le compte !     
          echo "Votre compte a bien été activé !";  
                          
          // La requête qui va passer notre champ actif de 0 à 1  
          mysql_query("UPDATE membre SET actif='$actif' WHERE pseudo like '$login'");  
       }  
     else // Si les deux clés sont différentes on provoque une erreur...  
       {  
          echo "Erreur ! Votre compte ne peut être activé...";  
       }  
  }  
    
?>  


</body>  


</html>  


</body>  


</html>  



0