[PHP] bug dans un script d'inscription

bug dans un script d'inscription [PHP] - PHP - Programmation

Marsh Posté le 02-09-2006 à 12:19:14    

EDIT: 1er problème résolu!
 2eme problème:
j'ai fait des tests j'arrive à accéder aux valeures en fesant :

Code :
  1. echo $_POST["pseudo"];

mais lorsque je met

Code :
  1. array_map('mysql_real_escape_string', $_POST);
  2. extract($_POST);
  3. echo $pseudo;


cela ne marce plus quelqu'un pourrait t'il me dire pourquoi?


Message édité par hugoOo le 02-09-2006 à 22:06:31

---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 12:19:14   

Reply

Marsh Posté le 02-09-2006 à 12:23:09    

Je n'ai lu que le code ton formulaire pour le moment.
 
Qu'entends-tu par "le formulaire se recharge vide" ?

Reply

Marsh Posté le 02-09-2006 à 14:56:47    

C'est tout simplement dû à une mauvaise écriture des attributs de ta balise form.
 
Toi, tu as écrit :

Code :
  1. <form method="post" value="inscription_valid.php">


 
Or, il n'existe pas d'attribut "value" pour la balise form.
L'adresse du script à appeler après validation du formulaire est à renseigner via l'attribut "action". Ce qui donne :

Code :
  1. <form method="post" action="inscription_valid.php">


 
Edit : Correction des fautes d'orthographe.


Message édité par Nekrosaro le 02-09-2006 à 14:57:50
Reply

Marsh Posté le 02-09-2006 à 20:24:23    

ah la, une grosse faute d'inatention! merci nekrosaro de m'avoir aider! @ +


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 22:13:09    

up!


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 22:21:32    

il me semble que mysql_real_escape_string demande 2 arguments
 
edit: As tu ouvert une connexion à la BDD avant ?


Message édité par Dj YeLL le 02-09-2006 à 22:22:00

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-09-2006 à 22:28:52    

oui j'ai ouvert une connexion, je vais regarder le manuel php pour mysql_real_escape_string


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 22:30:33    

fais voir un $cnx = mysql_connect etc...
 
puis ton array_map en rajoutant $cnx en 2ème param


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-09-2006 à 22:31:18    

jai regardé sur le manuel: il y a un seul argument obligatoire pour cette fonction


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 22:31:56    

hugoOo a écrit :

jai regardé sur le manuel: il y a un seul argument obligatoire pour cette fonction


 
Je sais


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-09-2006 à 22:31:56   

Reply

Marsh Posté le 02-09-2006 à 22:40:39    

vous faites comment vous quand vous avez bocoup de variables en post et que vous voulez passez une fonction a toutes?


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 22:46:29    

En fait il y a une erreur, array_map retourne un tableau :
 
$new_array = array_map('ma_fonction', $old_array);


Message édité par Dj YeLL le 02-09-2006 à 22:46:46

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 02-09-2006 à 22:51:17    

j'ai testé ça :

Code :
  1. $_POST = array_map('mysql_real_escape_string', $_POST);
  2. extract($_POST);
  3. $pseudo


mais ça marche toujours pas


---------------
http://over-templates.c.la
Reply

Marsh Posté le 02-09-2006 à 23:58:10    

Quand tu dis que ça ne marche pas, y a-t-il un message d'erreur ?
Ou est-ce simplement dû au fait que la variable pseudo n'est pas créée ?
Attention : dans le code donné là, tu ne fais pas de echo.
 
Pour info, j'ai écrit un petit test que j'ai rapidement testé sur ma machine et apparemment, ça a l'air de marcher.

Code :
  1. <?php
  2. error_reporting(E_ALL);
  3. $dbh = mysql_connect("host", "user", "password" ) or die (mysql_error());
  4. mysql_select_db("dbname", $dbh) or die (mysql_error());
  5. $_POST["pseudo"] = "hello''hello";
  6. echo $_POST["pseudo"]."\n";
  7. $_POST = array_map('mysql_real_escape_string', $_POST);
  8. extract($_POST);
  9. echo $pseudo."\n";
  10. mysql_close($dbh);
  11. ?>


Essaie de ton côté ce code donc.
L'appel de error_reporting avec E_ALL peut être pratique pour voir tous les messages d'erreur, d'avertissement and co de PHP.
 
Aussi, après l'appel de array_map, tu peux utiliser ce bout de code :

Code :
  1. print("<pre>" );
  2. print_r($_POST);
  3. print("</pre>" );


Même si là, ça peut ne pas te servir et que des gens sont capables d'écrire des pavés sur le fait qu'il faut pas utiliser <pre>, ça te fait gagner un temps fou quand tu fais du débogguage pour afficher un simple tableau et pouvoir le lire facilement.
 
Edit : Tout à l'heure, tu avais mis le contenu de ton script php, pourquoi l'avoir enlevé ?


Message édité par Nekrosaro le 02-09-2006 à 23:59:44
Reply

Marsh Posté le 03-09-2006 à 12:12:40    

salut,
je n'obtient pas de messages d'erreur car j'utilise une redirection juste aprés, donc j'ai enlever la redirection mais j'ai pas eu de message d'erreur non plus, je remet ma page php que j'ai modifier provisoirement pour la faire marcher :

Code :
  1. <?php
  2. $points = 0; // nombre de points donnés à l'inscription
  3. $cash = 0; // argent donné à l'inscription
  4. include('bd.inc.php');
  5. include('fonctions.inc.php');
  6. if(!empty($_SESSION["partenaire"])){ // script de partenariat
  7. $sql = "SELECT id, inscriptions, partenaires WHERE id='".$_SESSION["partenaire"]."'";
  8. $resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  9. $data = mysql_fetch_array($resultat);
  10. $part_partenaires = $data["partenaires"];
  11. $part_partenaires .= ';'.$_POST["pseudo"];
  12. $part_inscriptions = $data["inscriptions"];
  13. $part_inscriptions++;
  14. $sql = "UPDATE partenariat SET inscriptions='".$part_inscriptions."', partenaires='".$part_partenaires."' WHERE id='".$_SESSION["partenaire"]."'";
  15. } // fin du script de partenariat
  16. $pseudo = mysql_real_escape_string($_POST["pseudo"]);
  17. $mail = mysql_real_escape_string($_POST["mail"]);
  18. $adresse = mysql_real_escape_string($_POST["adresse"]);
  19. $postal = mysql_real_escape_string($_POST["postal"]);
  20. $ville = mysql_real_escape_string($_POST["ville"]);
  21. $nom = mysql_real_escape_string($_POST["nom"]);
  22. $prénom = $_POST["prénom"];
  23. $sql = "SELECT pseudo FROM membres WHERE pseudo='".$pseudo."'";
  24. $resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  25. if(empty($pseudo) OR empty($mail) OR empty($adresse) OR empty($postal) OR empty($ville) OR empty($nom) OR empty($prénom)){
  26. header('Location: redirect.php?message=Vous devez remplir tout les champs&url=inscription.php');
  27. }
  28. if(mysql_num_rows($resultat) != 0){
  29. header('Location: redirect.php?message=Ce pseudo existe déjà&url=inscription.php');
  30. }
  31. if(strlen($pseudo) < 5 OR strlen($pseudo) > 20){
  32. header('Location: redirect.php?message=Votre pseudo doit être compris entre 5 et 20 charactères&url=inscription.php');
  33. }
  34. if(!test_email($mail)){
  35. header('Location: redirect.php?message=L\'e-mail n\'est pas valide&url=inscription.php');
  36. }
  37. if(!is_numeric($postal) OR strlen($postal) != 5){
  38. header('Location: redirect.php?message=Le code postal doit être une suite numérique de 5 chiffres&url=inscription.php');
  39. }
  40. $mdp = random_string();
  41. $md5 = md5($mdp);
  42. $sql = "INSERT INTO membres(`id`, `pseudo`, `nom`, `prénom`, `mdp`, `mail`, `date`, `ventes`, `achats`, `adresse`, `postal`, `ville`, `points`, `cash`, `validé`) VALUES('', '".$pseudo."', '".$nom."', '".$prénom."', '".$md5."', '".$mail."', '".time()."', '0', '0', '".$adresse."', '".$postal."', '".$ville."', '".$points."', '".$cash."', '')";
  43. $resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  44. // A MODIFIER : le message d'un mail comporte maxi 70 charactères par ligne!
  45. $message = 'Ce message vous est envoyé suite à la demande d\'inscription à nom du site'."\n" // a mettre : nom du site
  46. .'Tout d\'abord nous vous remercions d\'avoir choisi notre service et ésperons que vous en serez satisfaits.'."\n"
  47. .'Vous devez confirmez votre inscription en vous rendant à l\'adresse suivante : inscription_valid_mail.php?pass='.$md5."\n" // a mettre : url complète de la page de validation
  48. .'Voici vos identifiants de connexion : '."\n"
  49. .'pseudo : '.$pseudo."\n"
  50. .'mot de passe : '.$mdp."\n"
  51. .'Vous pourrez changer votre mot de passe sur le site'."\n\n"
  52. .'A bientôt sur nom du site'; // a mettre : nom du site
  53. if(mail($mail, 'Inscription à nom du site', $message)){ // a mettre : nom du site
  54. echo 'L\'inscription s\'est bien déroulée. Un mail contenant vos paramètres de connexion vous à été envoyé à l\'adresse '.$mail;
  55. }else{
  56. echo 'Un problème est survenue pendant l\'envoi d\'un email, réessayez plus tard ou contactez un administrateur';
  57. }
  58. ?>


---------------
http://over-templates.c.la
Reply

Sujets relatifs:

Leave a Replay

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