[PHP] IF qui fait l'inverse de ce qu'il doit faire...

IF qui fait l'inverse de ce qu'il doit faire... [PHP] - PHP - Programmation

Marsh Posté le 30-08-2013 à 12:15:19    

...le bougre.
Boujour à tous ! Je suis grand débutant en php. Et j'ai un problème qui me rend malade tellement ça-devrait-marcher-normalement-bordel.
 
En résumé voilà ce que j'ai :
 
un formulaire sur une page, avec un bouton submit nickel dont le le name est "envoi".
Validée, l'action du formulaire nous transfert sur la page de traitement dont le début est :
 
if (!isset($_POST['envoi']))
{
echo "veuillez remplir le formulaire";
}
 
else
{
//traitement du formulaire...
}
 
 
Normalement, cela DEVRAIT passer à l'else puisqu'on vient de cliquer sur le submit et donc envoyer dans $_POST le "envoi" ! !!! Mais non, monsieur If ne veut pas me donner autre chose que "veuillez remplir le formulaire".
 
J'ai essayé de changer la condition : if (!isset($_POST['nom'])) en prenant evidement bien soin de mettre un nom dans le formulaire avant de le valider... Mais là encore, que dalle ! Le if se lance comme si le $_POST['nom'] n'existait pas.
 
Bref, il fait l'inverse de ce que je veux... Bref je vous donne le code complet des deux pages au cas ou. (le but est de faire un formulaire qui s'envoie par mail directement via le site)
 
page contact.php

Spoiler :


<form id="formulaire"  method="post" action="contact_v.php" enctype="text/plain">
       
      <textarea name="message" cols="" rows=""></textarea>
       
      <input id="capcha" name="cap" type="text"/>
       
       
      <input id="nom" name="nom" type="text" value="Votre nom" onclick="if(this.value == 'Votre nom'){this.value=''};" onBlur="if(this.value ==''){this.value='Votre nom';}"/>
       
      <input id="societe" name="societe" type="text" value="Société / Activité" onclick="if(this.value == 'Société / Activité'){this.value=''};" onBlur="if(this.value ==''){this.value='Société / Activité';}"/>
       
      <input id="email" name="email" type="text" value="Votre email" onclick="if(this.value == 'Votre email'){this.value=''};" onBlur="if(this.value ==''){this.value='Votre email';}"/>
       
 
 
      <input id="envoie" name="envoi" value="Envoyer !" type="submit" />
   
      </form>


 
page contact_v.php

Spoiler :


 
 <?php
 
$destinataire ='moi@tapir.com';
$copie='oui';
 
$message_envoye = "Votre message a bien été envoyé !";
$message_non_envoye = "l'envoi du message a échoué. Veuillez réessayer.";
 
$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\"> envoyer le formulaire </a>";
$message_formulaire_invalide = "Vérifiez que tous les champs sont bien remplis correctement et que l'email soit sans erreur.";
 
 
if (empty($_POST["nom"]))
{
echo $message_erreur_formulaire;  
}
 
else
{
 
 function Rec($text)
 {
  $text = htmlspecialchars(trim($text));
  $text = stripslashes($text);
  $text = n12br($text);
  return $text;
 }
 
 function IsEmail($email)
 {
  $value = (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]+[.][a-z0-9]{2,4}$#", $tapir));
 (($value==0) || ($value == false)) ? false : true;  
 }
 
 
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$nom = (isset($_POST['societe'])) ? Rec($_POST['societe']) : '';
$nom = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$nom = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
 
$email = (IsEmail($email)) ? $email : '' ;
 
if (($nom != '') && ($societe !='') && ($email !='') && ($message !=''))
{
 
 $headers = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
        'Reply-To:'.$email. "\r\n" .
        'X-Mailer:PHP/'.phpversion();
         
  if ($copie == 'oui')
  {
   $cible = $destinataire.','.$email;  
  }
   
  else
  {
   $cible = $destinataire;  
  }
   
 $message = str_replace("&#039;","'",$message);
 $message = str_replace("&#8217;","'",$message);
 $message = str_replace("&quot;",'"',$message);
 $message = str_replace('<br>','',$message);
 $message = str_replace('<br />','',$message);
 $message = str_replace("&lt;","<",$message);
 $message = str_replace("&gt;",">",$message);
 $message = str_replace("&amp;","&",$message);
 
 
 if (mail($cible, $objet, $message, $headers))
 {
  echo '<p>'.$message_envoye.'</p>'."\n";
 }
 else
 {
  echo '<p>'.$message_non_envoye.'</p>'."\n";  
 }
}
 
else
{
 
 echo $message_formulaire_invalide;
 
}
 
 
 
 
}
   ?>
 


 
Je me suis inspiré du tutoriel sur http://www.php-astux.info/script-f [...] ulaire-php qui a l'air vieux, mais bon.
 
 
Merci de votre lecture  :D
 
 
edit : mince je croyais que les "spoilers" permettais de réduire le texte et de le déplier uniquement quand on clique dessus. humpf...


Message édité par koesys le 03-09-2013 à 16:19:45
Reply

Marsh Posté le 30-08-2013 à 12:15:19   

Reply

Marsh Posté le 02-09-2013 à 16:28:50    

Doubles guillemets?

Reply

Marsh Posté le 03-09-2013 à 16:20:27    

double guillemets ? Comment ça ?

Reply

Marsh Posté le 04-09-2013 à 09:47:12    

Citation :

if (empty($_POST["nom"]))


 
 
Normalement ça ne pose pas de problème, mais à voir en fonction des versions de php.
C'est bien le nom de champ qu'il faut utiliser.

Reply

Marsh Posté le 04-09-2013 à 17:00:59    

Deux solutions de débugage pour t'aider :
- utilise firebug, onglet réseau pour voir ce que ton navigateur envoi au serveur
- fait un print_r($_POST) sur ta page web pour voir en détail ce que tu as recu.
 
Pierre


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 06-09-2013 à 16:54:41    

Tu affectes 4 fois ta variable $nom au lieu de remplir $societe et ses copains.
 
Du coup ton  

Code :
  1. if (($nom != '') && ($societe !='') && ($email !='') && ($message !=''))

est toujours faux, et tu affiches systématiquement ton $message_formulaire_invalide. Non?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-09-2013 à 16:55:11    

(...et alors les fonctions déclarées au beau milieu du code...[:pingouino])


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-09-2013 à 21:16:55    

Théoriquement il a 2 messages d'erreurs différents :
 

Code :
  1. $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\"> envoyer le formulaire </a>";
  2. $message_formulaire_invalide = "Vérifiez que tous les champs sont bien remplis correctement et que l'email soit sans erreur.";


 
 
 
Bref comme dit, commence par afficher ce que contient ta variable.
Même si je ne vois pas comment ça poserait problème ici, vérifie que ton fichier s'il est en utf-8 est encodé sans BOM.

Reply

Sujets relatifs:

Leave a Replay

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