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
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
A voir également:
- PDO --> MySQL
- Mysql download - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Xampp mysql ne démarre pas ✓ - Forum MySQL
- Mysql error 1 ✓ - Forum Réseaux sociaux
- Impossible de se connecter au serveur mysql - Forum Ubuntu
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
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 }
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
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
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
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
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
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
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
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'");
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'");
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
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
et sinon euh...
( et apprendre les syntaxes n'a rien d'une perte de temps je te rassures ;) )
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 ;) )
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
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;
}
?>
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;
}
?>
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
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 :(
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 :(
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
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 ;)
a l'occaz utilise un minimum d'indentation et la balise < c o d e > qui va bien ;)
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
Modifié par TRUNCKS le 6/02/2011 à 10:16
Voilà le formulaire d'inscription:
Et le formulaire de validation, ( apparemment, le champ actif ne se met pas à 1 )
<!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>