Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
911 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme de requete a la base de donnees

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de requete a la base de donnees

n°1745234
fade2black
Posté le 12-06-2008 à 05:17:39  profilanswer
 

Bonjour!
Je m'excuse par avance de l'absence d'accents, nos confreres anglo saxons les oublient bien vite :)
Je cherche a mettre en place un systeme permettant aux utilisateurs de mon forum de reactiver leur compte afin de mettre a jour leurs informations. J'ai donc cree une page php verifiant dans un premier temps l'identite de l'utilisateurs pour ensuite, si celle ci est correcte, envoyer un mail aux admins avec les infos actualisees puis rediriger vers la page adequoite. Et au cas ou l'identification est mauvaise ou si les informations ne sont pas actualisees, rediriger vers une page d'erreur.
Le probleme c'est que quoi qu'il arrive, les utilisateurs sont rediriges vers la page d'erreur...
Donc si quelqu'un aurait la gentillesse de bien vouloir regarder mes codes et m'indiquer la ou j'ai pu faire une erreur ca me serait d'une grande aide parce que je suis vraiment pas doue en programmation....
 
Page HTML :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Document sans nom</title>
  6. </head>
  7. <body>
  8. <form id="form1" name="form1" method="post" action="reactivation.php">
  9.   <p>Login :
  10.     <label>
  11.     <input name="login" type="text" id="login" />
  12.     </label>
  13.   </p>
  14.   <p>Mot de Passe :
  15.     <label>
  16.     <input name="password" type="password" id="password" />
  17.     </label>
  18.   </p>
  19.   <p>Niveau d'etude : 
  20.     <label></label>
  21.     <label>
  22.     <select name="niveau" id="niveau">
  23.       <option selected="selected">-</option>
  24.       <option>L1</option>
  25.       <option>L2</option>
  26.       <option>L3</option>
  27.       <option>M1</option>
  28.       <option>M2</option>
  29.       <option>Doctorat</option>
  30.       <option>Enseignant / Administration</option>
  31.       <option>Ancien etudiant </option>
  32.       <option>Lyceen / Etudiant externe</option>
  33.     </select>
  34.     </label>
  35.   </p>
  36.   <p>
  37.     <label>
  38.     <input type="submit" name="Submit" value="Envoyer" />
  39.     </label>
  40.   </p>
  41. </form>
  42. </body>
  43. </html>


 
Page PHP :  
 

Code :
  1. <?php
  2. $mysql_host = 'mysql5-8';
  3. $mysql_user = 'forumsce';
  4. $mysql_pass = *******;
  5. $mysql_base = 'forumsce';
  6. $mysql_link = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
  7. mysql_select_db($mysql_base);
  8. $md_pass = md5($password);
  9. $query = "SELECT username FROM phpbb_users WHERE username='$login' AND user_password='$md_pass'";
  10. $result = mysql_query($query) OR die(mysql_error());
  11. if($array = mysql_fetch_array($result))
  12. {
  13. $msg = "Login:\t$login\n";
  14. $msg .= "Classe:\t$niveau\n";
  15. $recipient = "-@hotmail.com";
  16. $subject = "Reactivation d'un compte d'utilisateur";
  17. $mailheaders = "From: <> \n";
  18. $mailheaders .= "Reply-To: $email\n\n";
  19. mail($recipient, $subject, $msg, $mailheaders);
  20. header("Location: erreur.htm" );
  21. exit();
  22. }
  23. if $_POST['niveau']='-'
  24. header("Location: erreur2.htm" );
  25. exit();
  26. else
  27. {
  28. header("Location: erreur.htm" );
  29. exit();
  30. }
  31. ?>


 
Merci par avance!!
 
 

mood
Publicité
Posté le 12-06-2008 à 05:17:39  profilanswer
 

n°1745251
rengzehn
Posté le 12-06-2008 à 08:35:08  profilanswer
 

Code :
  1. $query = "SELECT username FROM phpbb_users WHERE username='$login' AND user_password='$md_pass'";


 
tu es sur qu'il y a la bonne chaine qui  se crée comme ça ? (les variables sont elles interprétées ?) j'aurais plutot mis
 

Code :
  1. $query = "SELECT username FROM phpbb_users WHERE username='".$login."' AND user_password='".$md_pass."'";


Message édité par rengzehn le 12-06-2008 à 08:38:19
n°1745313
tomsoft
Posté le 12-06-2008 à 10:22:01  profilanswer
 

les variables le sont comme ca :jap:
 
php interprete entre les "" :)

n°1745389
jeca
Posté le 12-06-2008 à 12:33:17  profilanswer
 

Bonjour,
 
Mets ceci avant ta requête :

Code :
  1. $login = $_POST['login'];
  2. $md_pass = md5($_POST['password']);

n°1745619
fade2black
Posté le 12-06-2008 à 18:09:56  profilanswer
 

Merci de vos reponses mais meme avec ces modifications le probleme est toujours le meme...

n°1745991
rengzehn
Posté le 13-06-2008 à 13:53:34  profilanswer
 

# if $_POST['niveau']='-'
# header("Location: erreur2.htm" );
# exit();

 

il manque les () autour de la condition, il manque les accolades de block, ensuite tu ne fais pas un test d'égalité mais une affectation avec un seul égal.
if ($_POST['niveau']=='-')

 

donc normal, la condition était toujours vérifiée puisque l'affectation se faisait.

 

Si ça marche toujours pas il faut que tu rentres dans une phase de debug et que tu mettes des "echo" un peu partout pour vérifier le contenu de tes variables/requetes ... pour voir ou ça coince.

 


Utiliser des exit, c'est mal.

 


tomsoft a écrit :

les variables le sont comme ca :jap:

 

php interprete entre les "" :)

 

huhu il était temps que je l'apprenne :D merci je savais pas !


Message édité par rengzehn le 13-06-2008 à 13:57:21
n°1746349
fade2black
Posté le 14-06-2008 à 05:18:29  profilanswer
 

Bonsoir,
Merci de ces conseils, a present la redirection se fait correctement si le champ est laisse vide!
Mais le probleme demeure, que l'identification soit correcte ou non l'utilisateur est redirige vers la page d'erreur et aucun email n'est envoye...  
 
L'erreur me semble donc etre dans la requete :  
 

Code :
  1. if($array = mysql_fetch_array($result))


 
Pour info j'utilise PHPBB 3.0.1
 
Je rappelle le code que j'utilise modifie par vos conseils :  
 

Code :
  1. <?php
  2. $mysql_host = 'mysql5-8';
  3. $mysql_user = 'forumsce';
  4. $mysql_pass = '-';
  5. $mysql_base = 'forumsce';
  6. $mysql_link = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
  7. mysql_select_db($mysql_base);
  8. $login = $_POST['login'];
  9. $md_pass = md5($_POST['password']);
  10. $query = "SELECT username FROM phpbb_users WHERE username='$login' AND user_password='$md_pass'";
  11. $result = mysql_query($query) OR die(mysql_error());
  12. if($array = mysql_fetch_array($result))
  13. {
  14. $msg = "Login:\t$login\n";
  15. $msg .= "Classe:\t$niveau\n";
  16. $recipient = "-@hotmail.com";
  17. $subject = "Reactivation d'un compte d'utilisateur";
  18. $mailheaders = "From: <> \n";
  19. $mailheaders .= "Reply-To: $email\n\n";
  20. mail($recipient, $subject, $msg, $mailheaders);
  21. header("Location: ok.htm" );
  22. exit();
  23. }
  24. if ($_POST['niveau']=='-')
  25. {
  26. header("Location: erreur2.htm" );
  27. }
  28. else
  29. {
  30. header("Location: erreur.htm" );
  31. }
  32. ?>


 
Merci encore et bonne journee!

Message cité 1 fois
Message édité par fade2black le 14-06-2008 à 05:56:24
n°1746371
rengzehn
Posté le 14-06-2008 à 11:36:47  profilanswer
 

fade2black a écrit :

Bonsoir,
Merci de ces conseils, a present la redirection se fait correctement si le champ est laisse vide!
Mais le probleme demeure, que l'identification soit correcte ou non l'utilisateur est redirige vers la page d'erreur et aucun email n'est envoye...  
 
Merci encore et bonne journee!


 
$email n'est définit nul part donc normal que le mail n'arrive pas. Il est censé être dans la base phpbb je suppose mais tu ne le récupères pas, avec ta requête tu ne récupères que le champ username.
 
idée :
déjà dans ton if, mets un echo "plop" ça te dira  si tu rentres bien dans la condition. Ensuite fait un $print_r de ton $array pour voir la tête qu'il a, si y'a pas le mdp dedans, dans ta requete à la base sql, tu dois faire un select qui contient le pswd.
 
pour la page d'erreur,  ça semble logique puisque dans ton dernier if/else, dans les deux cas on t'envoie sur une page d'erreur.

n°1746378
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 14-06-2008 à 11:48:37  profilanswer
 

Attention aussi aux injections SQL ... Une petite recherche et tu trouveras pas mal de choses.


---------------
NewsletTux - outil de mailing list en PHP MySQL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme de requete a la base de donnees

 

Sujets relatifs
probleme de socket c/javacontenu form comme variable dans requete pour remplir un état
Probleme : Executer un fichier bat sans le sauvegarderProblème d'affichage de tableau : vertical Firefox / Horizontal IE
[MySql] requete group by + order by { RESOLU }Probleme d'installation JAVA
[SQL server 2005] stockage de données de grande capacitéProblème fonction excel
Probleme d'affichage perl/tkProblème requête
Plus de sujets relatifs à : Probleme de requete a la base de donnees


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR