IF qui fait l'inverse de ce qu'il doit faire... [PHP] - PHP - Programmation
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.
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
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 :
|
est toujours faux, et tu affiches systématiquement ton $message_formulaire_invalide. Non?
Marsh Posté le 06-09-2013 à 16:55:11
(...et alors les fonctions déclarées au beau milieu du code...)
Marsh Posté le 10-09-2013 à 21:16:55
Théoriquement il a 2 messages d'erreurs différents :
Code :
|
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.
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
<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
<?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("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$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
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