probleme formulaire

viivii42
Invité n'ayant pas de compte PHPfrance

28 mai 2013, 01:04

Bonjour,

Je parcours votre forum sans trouver de réponse .Je suis loin de maitriser le php....

Mon probleme est que mon formulaire fonctionne uniquement si dans la partie "message" je ne pet pas d'espace :(

Des que j'ecris un mail ; donc avec des espaces entre chaques mots ( logique) et ben la formulaire ne part pas , c'est comme si il n'etait pas rempli.

Mon code page php


<?php

$destinataire = 'xxx.fr';

$copie = 'oui';

$message_envoye = "Votre message nous est bien parvenu , nous vous répondrons dans les plus bref délais . Une copie de votre mail vient de vous être envoyée . Vous pouvez fermer cette page!";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

$message_erreur_formulaire = "Vous devez d'abord <a href=\"xxx.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

if (!isset($_POST['envoi']))
{

echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{

function Rec($text)
{
$text = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}

$text = nl2br($text);
return $text;
};

function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;
}

$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

$email = (IsEmail($email)) ? $email : '';

if (($nom != '') && ($email != '') && ($objet != '') && ($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("&#8217;","'",$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 '<p>'.$message_formulaire_invalide.' <a href="xxx.html">Retour au formulaire</a></p>'."\n";
};
};

if (($err_formulaire) || (!isset($_POST['envoi'])))
{

echo '
<form id="contact" method="post" action="'.$form_action.'">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p>
</fieldset>

<fieldset><legend>Votre message :</legend>
<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" /></p>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
</fieldset>

<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>';
};
?>

merci à qui pourra m'aider

Petit nouveau ! | 2 Messages

28 mai 2013, 01:06

oups j'avais oublié de me connecter :(

Eléphant du PHP | 56 Messages

28 mai 2013, 03:52

B'soir,

Peut être essayer quelque chose de comme ça.
<?php
if(isset($_POST['SendMail'])){
	extract($_POST);
	$Valid = true;
	if(empty($Name) || empty($Email) || empty($Title) || empty($Content)){
		$Valid = false;
		$Indication = array('Class'=>'Error','Content'=>'Tous les champs doivent être remplis.');
	} else {
	// Traitement des champs...
	
	if($Valid){
		$to = "EMAIL[at]DESTINATAIRE.net";
		$subject = "Nouveau message : $Title";
		$message = '<html><head><title>'.$Title.'</title></head><body><table width="100%" border="0" cellspacing="0" cellpadding="5"><tr><td align="center"><p>
					'.$Content.'
			  		</p></td></tr></table></body></html>';
		$headers = "MIME-Version: 1.0" . "\n";
		$headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
		$headers .= 'From: '.$Name.' <'.$Email.'>' . "\r\n";
		if(!mail($to, $subject, $message, $headers)){
			$Indication = array('Class'=>'Error','Content'=>'Erreur lors de l\'envoi du message.');
		} else {
			$End = true;
			unset($Name);unset($Email);unset($Title);unset($Content);
			$Indication = array('Class'=>'Success','Content'=>'Le message est bien envoyer.');
		}
	} // end valid
	} // end empty $var
}// end isset post

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<style>
#content{width:40%;padding-left:30%;padding-right:30%;}
.spacer-15{height:15px;}
.Error{background-color:#E1B0B0;color:#F00;}
.Success{background-color:#393; color:#030;}
a{text-decoration:none; color:#000; font-weight:bold;}
</style>
</head>

<body>
<div id="content">
<?php if(isset($Indication)){?>
<div class="<?php echo $Indication['Class'];?>"><?php echo $Indication['Content'];?></div>
<?php } ?>

<?php if(!isset($End)) {?>
<form name="SendMail" action="mailtest.php" method="post">
    <fieldset>
        <legend>Coordonnées</legend>
        <label for="Name">Votre Nom : </label><br /><input type="text" name="Name" value="<?php if(isset($Name)) echo $Name;?>" />
        	<div class="spacer-15"></div>
        <label for="Email">Votre Email : </label><br /><input type="mail" name="Email" value="<?php if(isset($Email)) echo $Email;?>" />
    </fieldset>
    <fieldset>
        <legend>Contenu</legend>
        <label for="Title">Titre du message :</label><br /><input type="text" name="Title" value="<?php if(isset($Name)) echo $Name;?>" />
        	<div class="spacer-15"></div>
        <label for="Content">Votre message :</label><br />
        <textarea name="Content" rows="5" cols="45"><?php if(isset($Content)) echo $Content;?></textarea>
        	<div class="spacer-15"></div>
        <input type="submit" name="SendMail" value="Envoyer le message" />
    </fieldset>
</form>
<?php } else {?>
Retour à la page d'<a href="index.php">accueil</a>.
<?php }?>
</div>
</body>
</html>

Petit nouveau ! | 2 Messages

28 mai 2013, 08:27

ah des millions de merci .Pouvez vous m'expliquer ce qui n'allait pas dans mon code?

Eléphant du PHP | 56 Messages

28 mai 2013, 11:39

Tu t'embêtes pour rien, fais directement le traitement sur les variables,
le code est pas super clair. mais déjà ton
<form id="contact" method="post" action="'.$form_action.'">
la variable form_action, ne renvois rien. j'ai pas trop regarder le traitement ensuite. et n’hésite pas a commenter un peu ton code pour mieux t'y retrouver.