Probleme de requete a la base de donnees

Probleme de requete a la base de donnees - PHP - Programmation

Marsh Posté le 12-06-2008 à 05:17:39    

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!!
 
 

Reply

Marsh Posté le 12-06-2008 à 05:17:39   

Reply

Marsh Posté le 12-06-2008 à 08:35:08    

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
Reply

Marsh Posté le 12-06-2008 à 10:22:01    

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

Reply

Marsh Posté le 12-06-2008 à 12:33:17    

Bonjour,
 
Mets ceci avant ta requête :

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

Reply

Marsh Posté le 12-06-2008 à 18:09:56    

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

Reply

Marsh Posté le 13-06-2008 à 13:53:34    

# 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
Reply

Marsh Posté le 14-06-2008 à 05:18:29    

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
Reply

Marsh Posté le 14-06-2008 à 11:36:47    

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.

Reply

Marsh Posté le 14-06-2008 à 11:48:37    

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


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed