je suis encore novice dans le codage et souhaite envoyer les données d'un formulaire vers ma boîte mail. J'ai construit une page "contact" avec le formulaire en HTML/CSS, et j'ai relié une page PHP "traitement formulaire" au formulaire. Dès que clique sur le bouton envoyer du formulaire, une page blanche avec le code PHP apparaît, et rien n'est envoyé sur ma boîte mail.
J'ai comparé mon code à différentes sources sur internet, et je n'arrive pas à comprendre pourquoi il ne fonctionne pas. Pouvez-vous regarder mon code et m'aider s'il vous plaît?
je vous remercie Aurélien.C pour les conseils que vous m'avez donné. Cependant même en lisant la Faq php je n'ai pas réussi à comprendre pourquoi mon code ne fonctionne pas.
De plus, je vais peut-être paraître débile mais je ne vois pas comment changer l'adresse url, File://fjfjfj n'apparaît pas dans mon code.
Par contre, j'ai remarqué qu'il y avait des problèmes de concordances entre mon HTML et mon PHP. Je remets le code modifié.
Bonjour, une page blanche ? As-tu activé les erreurs php ?
Sa page blanche est normale s'il fait seulement un lien vers son fichier traitement.php, il n'y a pas de html dedans juste son code PHP et quelques echos.
La question est plutôt quel est le retour que tu as sur ta page blanche parmi tes différents echo ?
Est-ce que tu as $message_envoye ou $message_non_envoye ?
Aurélien.C a écrit:
Qu'elle est ton url complète ?
Tu passes bien par un serveur pour lire le code php ?
Si tu travailles en local, avec WAMP ou XAMP, tu ne peux pas directement envoyer d'e-mail, et donc c'est "normal".
Si tu travailles sur un serveur, avec Filezilla et une réelle URL, dans ce cas on peut essayer de débloquer la situation.
PS : c'est dommage d'utiliser phpmailer puis envoyer le mail via un mail() php
J'ai réunis mon html et mon php, le formulaire fonctionne. Lors de l'envoie je n'ai plus de page blanche, je retourne à ma page initiale et le message "Votre message nous est bien parvenu!" apparaît.
Shonen17, je travaille avec MAMP pour tester mon site. Puis-je envoyer un mail avec MAMP ? Plus tard, je vais mettre mon site sur le serveur Nuxit.
grâce à vos différentes aides mon formulaire fonctionne et je vous en remercie. Cependant juste après l'envoie du formulaire, des messages d'erreurs apparaissent avec le message de bonne réception. Ils me signalent que " get_magic-quotes_gpc " est obsolète.
if (1 === get_magic_quotes_gpc())
Pourriez-vous me dire ce que je dois mettre à la place ? Je fonctionne avec PHP 7.4.12.
De plus, j'aimerai que lorsqu'on appuie sur le bouton envoyer, on soit dirigé vers une nouvelle page, pas celle du formulaire. Cette redirection ne doit être possible qu'à condition que le formulaire soit bien remplie et envoyé. A quel endroit de mon php dois-je indiquer cette action ?
Bonjour, je reviens vers vous suite à la mise en ligne de mon site internet.
Alors mon formulaire ne s'envoie pas sur ma boîte mail et je n'arrive pas à savoir pourquoi, pouvez-vous m'aider s'il vous plaît ?
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// expéditeur du dormulaire. Pour des raisons de sécurité, de plus en plus d'hébergeurs imposent que ce soit une adresse sur votre hébergement/nom de domaine.
// Par exemple si vous mettez ce script sur votre site "test-site.com", mettez votre email @test-site.com comme expéditeur (par exemple contact@test-site.com)
// Si vous ne changez pas cette variable, vous risquez de ne pas recevoir de formulaire.
$email_expediteur = 'contact@moi.com';
$nom_expediteur = 'Contact MOI.com';
//destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par un point-virgule
$destinataire = 'site@moi.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = nl2br(trim($text), ENT_QUOTES);
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
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;
}
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$statut = (isset($_POST['statut'])) ? Rec($_POST['statut']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
if (isset($_POST['envoi']))
{
if (($nom != '') && ($email != '') && ($tel != '') && ($statut != '') && ($objet != '') && ($message != ''))
{
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
'Reply-To:'.$email. "\r\n" .
'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
'Content-Disposition: inline'. "\r\n" .
'Content-Transfer-Encoding: 7bit'." \r\n" .
'X-Mailer:PHP/'.phpversion();
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.';'.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$caracteres_speciaux = array(''', '’', '"', '<br>', '<br />', '<', '>', '&', '…', '’', '‘');
$caracteres_remplacement = array("'", "'", '"', '', '', '<', '>', '&', '...', '>>', '<<' );
$statut = html_entity_decode($statut);
$statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
$message = html_entity_decode($message);
$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
// Envoi du mail
$cible = str_replace(',', ';', $cible); // antibug : j'ai vu plein de forums où ce script était mis, les gens ne font pas attention à ce détail parfois
$num_emails = 0;
$tmp = explode(';', $cible);
foreach($tmp as $email_destinataire)
{
if (mail($email_destinataire, $objet, $message, $headers))
$num_emails++;
}
if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
{
echo '<p>'.$message_envoye.'</p>';
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>';
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '
<form id="contact" method="post" action="'.$form_action.'" >
<div class="nom" ><label for="nom">Nom </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" required /></div>
<div class="email" ><label for="email">Email </label><input type="email" id="email" name="email" value="'.stripslashes($email).'" required /></div>
<div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" required minlength="10" maxlenght="10"/></div>
<div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" required pattern="[Pp]articulier|[Pp]rofessionnel" /></div>
<div class="objet" ><label for="objet">Objet</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" required/></div>
<div class="msg" ><label for="message">Message :</label><textarea id="message" name="message" cols="30" rows="8">'.stripslashes($message).'</textarea></div>
<div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer le message" /></div>
</form>';
};
?>
De plus, mon site ne fonctionne pas correctement avec Safari, la mise en page est modifiée, un diaporama ne fonctionne pas, ... Pouvez-vous me dire comment y remédier?
suite à mon dernier message j'ai pu résoudre une partie de mes problèmes mais d'autres son apparus.
J'arrive à recevoir sur ma boîte mail mon premier formulaire de ma page "contact" mais dans le mail reçu toutes les informations du formulaire n'apparaisse pas. Je ne reçois que l'objet et le message.
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// expéditeur du dormulaire. Pour des raisons de sécurité, de plus en plus d'hébergeurs imposent que ce soit une adresse sur votre hébergement/nom de domaine.
// Par exemple si vous mettez ce script sur votre site "test-site.com", mettez votre email @test-site.com comme expéditeur (par exemple contact@test-site.com)
// Si vous ne changez pas cette variable, vous risquez de ne pas recevoir de formulaire.
$email_expediteur = 'contact@moi.com';
$nom_expediteur = 'Contact MOI.com';
//destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par un point-virgule
$destinataire = 'site@moi.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = htmlspecialchars(($text), ENT_QUOTES);
$text = htmlspecialchars($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
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;
}
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$statut = (isset($_POST['statut'])) ? Rec($_POST['statut']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
if (isset($_POST['envoi']))
{
if (($nom != '') && ($email != '') && ($tel != '') && ($statut != '') && ($objet != '') && ($message != ''))
{
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
'Reply-To:'.$email. "\r\n" .
'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
'Content-Disposition: inline'. "\r\n" .
'Content-Transfer-Encoding: 7bit'." \r\n" .
'X-Mailer:PHP/'.phpversion();
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.';'.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$caracteres_speciaux = array(''', '’', '"', '<br>', '<br />', '<', '>', '&', '…', '’', '‘');
$caracteres_remplacement = array("'", "'", '"', '', '', '<', '>', '&', '...', '>>', '<<' );
$statut = html_entity_decode($statut);
$statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
$message = html_entity_decode($message);
$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
// Envoi du mail
$cible = str_replace(',', ';', $cible); // antibug : j'ai vu plein de forums où ce script était mis, les gens ne font pas attention à ce détail parfois
$num_emails = 0;
$tmp = explode(';', $cible);
foreach($tmp as $email_destinataire)
{
if (mail($email_destinataire, $objet, $message, $headers))
$num_emails++;
}
if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
{
echo '<p>'.$message_envoye.'</p>';
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>';
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '
<form id="contact" method="post" action="'.$form_action.'" >
<div class="nom" ><label for="nom">Nom </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" required /></div>
<div class="email" ><label for="email">Email </label><input type="email" id="email" name="email" value="'.stripslashes($email).'" required /></div>
<div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" required minlength="10" maxlenght="10"/></div>
<div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" required pattern="[Pp]articulier|[Pp]rofessionnel" /></div>
<div class="objet" ><label for="objet">Objet</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" required/></div>
<div class="msg" ><label for="message">Message :</label><textarea id="message" name="message" cols="30" rows="8">'.stripslashes($message).'</textarea></div>
<div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer le message" /></div>
</form>';
};
?>
Pour mon second formulaire, je ne le reçois pas sur ma boîte mail. J'arrive à recevoir mon formulaire si je lui enlève l'action de redirection lors de l'envoie du formulaire (si j'enlève le $form_action).
$form_action = 'fichestechniques.html';
Or je voudrais pouvoir recevoir le formulaire sur ma boîte mail et avoir la redirection vers mon autre page. Pouvez-vous m'aider s'il vous plaît ?
Je vous mets mon code complet de mon autre formulaire -.
il y a t-il un autre moyen pour que lors de l'appuie sur le bouton "envoyer" mon formulaire s'envoie sur ma boîte mail et en même qu'il dirige le visiteur vers une autre page html ?
Si j'enlève le $form_action je reçois mon formulaire sur ma boîte mail mais je ne suis pas redirigée vers ma page html. Et si j'applique ma page html au $form_action, je ne reçois pas le formulaire, par contre j'accède à la page html. Or j'aimerai que les deux actions soient possible en même temps.
Tu n'as qu'à transformer 'fichestechniques.html' en 'fichestechniques.php' et insérer le code de l'envoi du mail dedans.
Ainsi, tu redirige vers fiches technique ET tu envoies l'e-mail.
Envoi de données via un formulaire de contact
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP