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

  FORUM HardWare.fr
  Programmation
  PHP

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2201266
koesys
Posté le 30-08-2013 à 12:15:19  profilanswer
 

...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
mood
Publicité
Posté le 30-08-2013 à 12:15:19  profilanswer
 

n°2201508
MaybeEijOr​Not
but someone at least
Posté le 02-09-2013 à 16:28:50  profilanswer
 

Doubles guillemets?

n°2201635
koesys
Posté le 03-09-2013 à 16:20:27  profilanswer
 

double guillemets ? Comment ça ?

n°2201703
MaybeEijOr​Not
but someone at least
Posté le 04-09-2013 à 09:47:12  profilanswer
 

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.

n°2201764
PierreC
Posté le 04-09-2013 à 17:00:59  profilanswer
 

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
n°2202086
skeye
Posté le 06-09-2013 à 16:54:41  profilanswer
 

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 -
n°2202087
skeye
Posté le 06-09-2013 à 16:55:11  profilanswer
 

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


---------------
Can't buy what I want because it's free -
n°2202504
MaybeEijOr​Not
but someone at least
Posté le 10-09-2013 à 21:16:55  profilanswer
 

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.


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

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

 

Sujets relatifs
[PHP] if elseif definition variable [resolu][PHP] php_flag ne marche pas
JAVA/ J2EE ou PHP ?Impossible d'executer script linux sous PHP
[PHP] Problème de chemin relatifRecherchons stagiaire développeur PHP - Septembre
xls erreur sur code "If Target =" lors d'insertion de lignePHP Fatal error - Allowed memory size exhausted
Combo Lighttpd / PHP - FastCGI / SQLite / Wordpress[PHP / JS] jquery file upload : retrouver nom du fichier uploadé ?
Plus de sujets relatifs à : [PHP] IF qui fait l'inverse de ce qu'il doit faire...


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