Problèmes $_COOKIE et $_POST

Problèmes $_COOKIE et $_POST - PHP - Programmation

Marsh Posté le 19-06-2007 à 15:05:46    

Bonjour
 
Je viens de terminer un script pour un formulaire et comme je suis novice en la matière il ne fonctionne pas. :heink:    :??:  
En effet, meme si je rentre un numéro de téléphone à 10 chiffres, un message m'indiquant que le numéro ne comporte pas 10 chiffres apparait quand meme. :(  
 
Je laisse le code de ma page test (code raccourci) ci dessous et j'imagine que l'erreur doit etre celle d'un débutant ...( que je suis d'ailleurs)  
Mon formulaire se trouve sur une page formulaire.php et le code qui suit est dans une autre page traitement.php.
 

Code :
  1. <?php
  2. if (isset($_POST["nom"]))
  3. {
  4. setcookie('cookie_nom', $_POST["nom"], (time() + 15));
  5. }
  6. .................
  7. if (isset($_POST["email"]))
  8. {
  9. setcookie('cookie_email', $_POST["email"], (time() + 15));
  10. }
  11. ?>
  12. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  13. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  14. .................
  15. $formnom = $_POST['nom'];
  16. $formemail = $_POST['email'];
  17. ..................
  18. if(!empty($formemail) && !empty($formprenom) && !empty($formnom) )
  19. {
  20.     if ( preg_match ("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", "$formemail" ) )
  21.      {
  22.        if ( preg_match("#^0[0-68]([-. ]?[0-9]{2}){4}$#", '$formtelephone') )
  23.   {
  24.    if(md5($nombre) == $_SESSION['valeur_image'])
  25.     {
  26.       //ok pas vide  
  27.       //on convertie les caractètres HTML de tous les champs  
  28.       $formnom = htmlentities($formnom);
  29.                                                         ...............................................
  30.                                                         $formemail = htmlentities($formemail);
  31.                                                         $formcourrier = "Il s'agit d'une demande de .........    //mis en forme du message qui sera envoyé
  32.       if( mail('moi@fai.com','Demande d\'informations',$formcourrier,$formemail) )
  33.         {
  34.         echo 'Les informations ont bien été envoyées!';
  35.         }
  36.       else {
  37.         echo 'Une erreur est survenu lors de l\'envoi du message';
  38.         }
  39.     }
  40.    else {
  41.      echo 'Vous avez entré un mauvais code'; ?>
  42.            <span><a href="index_reservations.php">Modifier le ou les champs erronés</a></span>
  43.            <?php 
  44.       }
  45.   }
  46.  else {
  47.    echo 'Vérifier que votre numéro de téléphone est composé de 10 chiffres'; ?>
  48.          <span><a href="index_reservations.php">Modifier le ou les champs erronés</a></span>
  49.          <?php 
  50.      }
  51. }
  52. else {
  53.    echo 'Vérifier que votre email est de la forme  xxxxxx@xx.xx '; ?>
  54.         <span><a href="index_reservations.php">Modifier le ou les champs erronés</a></span>
  55.         <?php 
  56.    }
  57. }
  58. else {
  59.  echo 'Merci de remplir les champs Nom Prénom et Email afin que nous puissions traiter votre demande dans les plus brefs délais.'; ?>
  60.        <span><a href="index_reservations.php">Modifier le ou les champs erronés</a></span>
  61.        <?php 
  62.  }
  63. ?>
  64. .....................
  65.    </body>
  66. </html>


 
Plusieurs interrogations concernant ce formulaire: :bounce:  
 
 

  • J'utilise des cookies pour remplir le formulaire avec les données déà entrées comme ca si la personne venait à oubier de remplir son nom prenom ou email les autres champs seraient déjà remplis mais voila, un problème se pose:  

Comment faire si l'utilisateur n'entre pas de nom ou de prenom ou d'email  :sarcastic: ? En effet, la variable $cookie_nom prend la valeur qui se trouve dans la zone texte prévu à cet effet et si l'utilisateur ne rentre rien, lorsque le formulaire réapparait il y a des espaces dans la zone de texte "nom" ou "prenom". Comment remédier à ce problème ?

  • Commentfaire si l'on doit remettre le formulaire car il y a une erreur sans faire un lien vers le formulaire ? Je pensais à la redirection mais je n'arrive pas à l'utilser du fait qu'elle doit etre utilisé avant tout alors que moi je voudrais dire à l'utilisateur: Vous avez oublié ce champs  ( et puis redirection dans 5 secondes)


 
Merci d'avance à toutes celles et ceux qui liront mon message.
 
J'attends vos réponses avec impatience.
 :hello:  
kvf300
 

Reply

Marsh Posté le 19-06-2007 à 15:05:46   

Reply

Marsh Posté le 19-06-2007 à 15:21:05    

leçon 1: de l'importance des quotes (') et des doubles quotes (" )

Code :
  1. preg_match("#^0[0-68]([-. ]?[0-9]{2}){4}$#", '$formtelephone')


ça va pas marcher là :o
http://fr2.php.net/types.string
 
2eme point: pourquoi ne pas te servir simplement de $_POST?
 
3eme point: rien compris [:dawa]

Reply

Marsh Posté le 19-06-2007 à 15:42:31    

Merci pour cette réponse aussi rapide et efficace.
Grace au double quotes tous fonctionne.
Concernant mon questionnement, je m'explique: une personne rempli un formulaire, ensuite elle se trompe , elle reviens au formulaire grace à un lien et corrige son erreur sans pour autant réecrire tous le reste déjà entré, néanmoins si elle n'a rien rentré, php sauvegarde des espaces dans les variables cookie d'où ma question, comment remédier à ce problème ?
 
Enfin, je n'utilise pas de _POST car j'ai vu quelque part que  " si le register global est à on il peut y avoir des problèmes ". Je ne sais pas du tout ce que cela signifie mais je ne voulais pas avoir à modifier ceci si je venais à héberger mon site sur un hébergeur mutualisé car is j'ai bien compris je n'aurais pas accès au php.ini ..
 
kvf300

Reply

Marsh Posté le 20-06-2007 à 13:03:00    

fais une condition du genre si les champs nom / prénom / mail sont vide =>  error :)
Tu peux aussi aller plus loin pour le mail avec une vérification pour savoir si il a bien rentré une adresse mail ou pas :)


---------------
PSN : XprtZ - BattleTag : XprtZ#2257 - 3DS : 2492-4109-3060
Reply

Sujets relatifs:

Leave a Replay

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