Demande d'aide

Nouveau WRInaute
Bonjour
Je suis novice
Je crée un formulaire de contact

<div class="contact">
<p class="titresfooter">Contact</p>
<?php include('traitement.php'); ?>
<form method="post" action="traitement.php">
<p>
<strong>Nom<span style="color: #ff0000;">*</span> :</strong> <label for="nom"> </label> <input id="nom" name="nom" size="28" type="text" /> <br></p>
<p><strong>Prénom :</strong> <label for="prenom"> </label> <input id="prenom" name="prenom" size="27" type="text" /> <br /> </p>
<p><strong>Mail <span style="color: #ff0000;">*</span> :</strong><br /> <label for="email"> </label> <input id="email" name="email" size="81" type="text" /></p>
<p>Pour quelle raison nous contactez-vous ?</p>
<label for="objet"></label> <select id="objet" name="objet"> <option value="renseignement">Pour un renseignement</option>
<option value="suggestion">Pour une suggestion</option>
<option value="remarque">Pour une remarque</option>
<option value="autre chose">Pour autre chose</option>
</select><br>
<p>Message <span style="color: #ff0000;">*</span> :</p>
<p><label for="message"></label> <textarea id="message" cols="52" rows="7" name="message"></textarea></p>
<input type="reset" value="Effacer" /> <input type="submit" value="Envoyer" />
<p> </p>

</form></article>

ma redirection ne fonctionne pas mais mon mail est bien envoyé !
<?php
// S'il y des données de postées
if ($_SERVER['REQUEST_METHOD']=='POST') {

// (1) Code PHP pour traiter l'envoi de l'email

// Récupération des variables et sécurisation des données
$nom = htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
$objet = htmlentities($_POST['objet']);
$email = htmlentities($_POST['email']);
$message = htmlentities($_POST['message']);

// Variables concernant l'email

$destinataire = 'moi@gmail.com'; // Adresse email du webmaster (à personnaliser)
$contenu = '<html><head><title> '.$objet.' </title></head><body>';
$contenu .= '<p>Tu as un nouveau message !</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Prenom</strong>: '.$prenom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>'; // Contenu du message de l'email (en XHTML)

// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";

// Envoyer l'email
mail($destinataire, $objet, $contenu, $headers)
if(!mail($destinataire, $objet, $contenu, $headers)){
echo "erreur";
}else{
header("location:merci.html");
}
?>

Pouvez-vous m'aider?
 
WRInaute accro
Il manque un espace entre "location:" et "merci.html"

PHP:
header("location: merci.html");
 
WRInaute passionné
Je ne sais pas si c'est utile ici mais en général on met toujours le slash :

PHP:
header('Location: /merci.html');
exit();
 
Nouveau WRInaute
merci mais rien ne change. j'ai :
Parse error: syntax error, unexpected 'if' (T_IF) in /home/users/00/38/98/home/www/traitement.php on line 30
donc cette ligne if(!mail($destinataire, $objet, $contenu, $headers)){
 
WRInaute passionné
il doit te manque un point virgule une parenthese ou un accolade avant le if.

Au vue du code je dirais point vigule sur la ligne de la fonction mail
 
Nouveau WRInaute
MERCI !
J'ai corrigé mais maintenant erreur à la ligne header("Location: merci.html");
<?php
// S'il y des données de postées
if ($_SERVER['REQUEST_METHOD']=='POST') {

// (1) Code PHP pour traiter l'envoi de l'email

// Récupération des variables et sécurisation des données
$nom = htmlentities($_POST['nom']);
$prenom = htmlentities($_POST['prenom']);// htmlentities() convertit des caractères "spéciaux" en équivalent HTML
$objet = htmlentities($_POST['objet']);
$email = htmlentities($_POST['email']);
$message = htmlentities($_POST['message']);

// Variables concernant l'email

$destinataire = 'moi@gmail.com'; // Adresse email du webmaster (à personnaliser)
$contenu = '<html><head><title> '.$objet.' </title></head><body>';
$contenu .= '<p>Tu as un nouveau message !</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Prenom</strong>: '.$prenom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>'; // Contenu du message de l'email (en XHTML)

// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";

// Envoyer l'email
mail($destinataire, $objet, $contenu, $headers);
if(!mail($destinataire, $objet, $contenu, $headers)){
echo "erreur";
}else{
header("Location: merci.html");
}}
?>
 
WRInaute passionné
}} ça fait une } de trop (qui ne sont même pas utiles quand il n'y a qu'une ligne).
 
Nouveau WRInaute
mon fichier traitement.php
<?php
// S'il y des données de postées
if ($_SERVER['REQUEST_METHOD']=='POST') {

// (1) Code PHP pour traiter l'envoi de l'email

// Récupération des variables et sécurisation des données
$nom = htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
$objet = htmlentities($_POST['objet']);
$email = htmlentities($_POST['email']);
$message = htmlentities($_POST['message']);

// Variables concernant l'email

$destinataire = 'moi@gmail.com'; // Adresse email du webmaster (à personnaliser)
$contenu = '<html><head><title> '.$objet.' </title></head><body>';
$contenu .= '<p>Tu as un nouveau message !</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Prenom</strong>: '.$prenom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>'; // Contenu du message de l'email (en XHTML)

// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";

// Envoyer l'email
if(!mail($destinataire, $objet, $contenu, $headers)){
echo "erreur";
}else{
header("location:merci.html");
}}
?>
je reçois le mail qui sur gmail est un spam et pas de redirection vers ma age "merci" après envoi
 
WRInaute passionné
je sais pas si ça vient de la mais je mets un exit sous le header:

Code:
            header("location:accueil.php");
            exit();
 
WRInaute passionné
En fait il n'y a pas de } en trop car je crois que ça termine if ($_SERVER['REQUEST_METHOD']=='POST') {
SVP quand vous mettez du code, utilisez la balise PHP ou CODE pour que ça s'affiche correctement...

Le exit(); c'est une bonne habitude pour être sûr que le script s'arrête après la redirection mais quand il n'y a pas de code après ça ne change rien.
 
WRInaute passionné
En fait il n'y a pas de } en trop car je crois que ça termine if ($_SERVER['REQUEST_METHOD']=='POST') {
SVP quand vous mettez du code, utilisez la balise PHP ou CODE pour que ça s'affiche correctement...

Pour moi aussi il n'y a pas de problème d'accolade sinon le mail partirait pas.

peut-être mettre un echo test avant ton header voir s'il rentre dans ta condition
 
WRInaute accro
Bonjour Monsieur

Est-ce que c'est avec Chrome que vous testez ?

Il me semble que Chrome charge les pages d'abord en mode "prerender", puis affiche la page ensuite.

Pour compenser celà, dans mon formulaire déjà ancien, je mettais les variables transmises en session.

D'autre part, pour savoir/évaluer les variables POST, j'utilisais filter_input(INPUT_POST, 'var', param3) : bool.

C'est plus complet et informatif que $_SERVER['REQUEST_METHOD'].

Amicalement.
 
Nouveau WRInaute
Bonjour
Je reviens vers vous pour partager ma redirection
J'ai ajouté un peu de javascript et ça fonctionne!

echo '

<script language="Javascript">
<!--
document.location.replace("merci.php");
// -->
</script>';


} else {

echo($error_message);

}

}
 
WRInaute passionné
Ah, bref ton formulaire est validé en AJAX, et en ajax effectivement il ne peut pas y avoir de redirection côté serveur, il faut envoyer du javascript pour la faire côté client.
 
Nouveau WRInaute
Bonjour
J'ai corrigé, changé...
J'ai créé un formulaire de contact (contact.php et send-mail.php)
Je vous mets les lignes. En premier mon formulaire inséré dans ma page web puis mon traitement.
Tout fonctionne sauf que lors de la réception, gmail me prévient que le message est peut-être suspect. Malgré tout je le reçois! Mon autre souci est que sur un autre forum, une personne m'informe que je ne peux utiliser From car cela met mon formulaire en danger. Pouvez-vous m'aider? La ligne de mon traitement : $headers = "From: $name <$email>" . "\r\n" . "Reply-To: $email" . "\r\n" . "X-Mailer: PHP/" . phpversion();
Ensuite, je compte ajouter des lignes pour les spammeurs.

PHP:
<form method="post" action="send-mail.php" class="contact-form" id="form">
                                <div class="col-md-12">
                                        <input type="text" name="name" placeholder="Insérez votre nom" class="required">
                                    </div>
                                    <div class="col-md-12">
                                        <input type="email" name="email" placeholder="Insérez votre adresse email" class="contact-form-email required">
                                    </div>
                                    <div class="col-md-12">
                                        <input type="text" name="subject" placeholder="Votre sujet" class="contact-form-subject required">
                                    </div>
                                </div>
                                <textarea name="message" placeholder="Insérez votre message" class="required" rows="7"></textarea>
                                <div class="response-message"></div>
                                <button class="border-button border-bt-red" type="submit" id="submit" name="submit">Envoyer Message</button>
                            </form>



PHP:
<?php



$name = stripcslashes($_POST['name']);
$email = stripcslashes($_POST['email']);
$subject = stripcslashes($_POST['subject']);
$message = stripcslashes($_POST['message']);



$mailto = 'moi@gmail.com';
$subject = $subject;

$error_message = 'Une erreur est survenue';
$success_message = 'message envoyé';




$message = "Nom: $name\r\n
Objet: $subject\r\n
Email: $email\r\n
Message: $message";

$headers = "From: $name <$email>" . "\r\n" . "Reply-To: $email" . "\r\n" . "X-Mailer: PHP/" . phpversion();

function validateEmail($email) {
   if(preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email))
      return true;
   else
      return false;
}

if((strlen($name) < 1 ) || (strlen($email) < 1 ) || (strlen($message) < 1 ) || validateEmail($email) == FALSE ) {

    echo($error_message);

}
else
{

    if( mail($mailto, $subject, $message, $headers) )
    {
        
echo '

<script language="Javascript">
<!--
document.location.replace("merci.php");
// -->
</script>';



    }
    else
    {

        echo($error_message);

    }

}
?>
 
WRInaute accro
Si tu veux augmenter tes chances de délivrabilité, je te conseille de configurer l'envoi de tes mails en passant par le smtp gmail (puisque tu as un compte)
Ce n'est pas le FROM qui va changer grand chose !
 
Discussions similaires
Haut