Pages :
Modérateur
(reprise du message précédent)

Bonjour,

J'ai oublié de préciser que tu peux du coup très probablement supprimer dans "cible.php" la ligne :

header('Content-Type:text/html;charset=UTF-8');

Amicalement,
Après avoir relu tes explications plusieurs fois, je crois bien avoir tout compris ! Smiley biggrin
Je n'ai pas encore cette logique, j'espère bien l'acquérir un jour !

J'ai placé le code php qui inclu cible.php après ma balise </form> pour que mon formulaire reste affiché.

Tout marche nickel ! merci beaucoup ! Merci d'y avoir consacré du temps !

Si tu as encore un peu de temps, est-ce que ça serait possible de m'expliquer cette fonction :

function verifieEmail($mail) 
{
	if (preg_match('/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i',$mail)) return false;
	list ($nom,$domaine) = explode ('@',$mail);
	if (getmxrr($domaine,$mxhosts)) return true;
	else return false;
} 
Modérateur
Uria a écrit :

J'ai placé le code php qui inclu cible.php après ma balise &lt;/form&gt; pour que mon formulaire reste affiché.


Que tu fasses l'inclusion avant ou après le formulaire ne change rien pour celui-ci : il sera affiché dans tous les cas. Le seul truc qui va changer, c'est la position du message d'erreur (ou d'information comme quoi tout va bien) qui sera placé avant ou après le formulaire.$

Uria a écrit :

Tout marche nickel ! merci beaucoup ! Merci d'y avoir consacré du temps !


De rien.

Uria a écrit :

Si tu as encore un peu de temps, est-ce que ça serait possible de m'expliquer cette fonction :
function verifieEmail($mail) 
{
	if (preg_match('/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i',$mail)) return false;
	list ($nom,$domaine) = explode ('@',$mail);
	if (getmxrr($domaine,$mxhosts)) return true;
	else return false;
} 


T'as de la chance, on n'est pas encore prêt pour l'apéro.

Cette fonction provient des FAQ du site php.net.

La fonction preg_match() teste la validité de $mail à l'aide d'une expression régulière (un truc assez complexe qui permet l'analyse d'une chaine de caractère). En gros, on vérifie qu'on a bien un morceau de chaine qui ne contient que des lettres, chiffres, ".", "-", ... suivi d'un "@" suivi d'un autre morceau de chaine qui ne contient que des lettres, chiffres, ".", "-"...

La fonction explode() permet de couper $mail en deux en utilisant le "@" comme séparateur.

La fonction getmxrr() vérifie que le nom de domaine de l'adresse email existe bien.

Amicalement,
Modifié par parsimonhi (04 Jan 2015 - 20:12)
Ok j'ai tout compris Smiley biggrin !

Quoi non sauf un point Smiley lol , lorsque j'ai placé le code php à rajouter dans ma page contact avant le formulaire
<form>
le formulaire disparaissait totalement. Donc je ne comprends pas pourquoi d'après ton explication.

Alors je vais pouvoir trinquer à ta santé !
Encore merci !
Modérateur
Uria a écrit :
Ok j'ai tout compris Smiley biggrin !

Quoi non sauf un point Smiley lol , lorsque j'ai placé le code php à rajouter dans ma page contact avant le formulaire
&lt;form&gt;
le formulaire disparaissait totalement. Donc je ne comprends pas pourquoi d'après ton explication.


Hmmm. Bizarre ! Il reste une erreur quelque part.

Est-ce que le message comme quoi la demande a été prise en compte s'affiche bien quand tu mets le include après le formulaire ?

Amicalement,
Modérateur
Bonjour,

Je ne vois pas d'où ça peut venir.

Il faudrait mettre des traces un peu partout pour voir exactement à quel endroit ça ne va pas. Impossible sinon de dire d'où ça vient.

Amicalement,
Modérateur
Bonjour,

Oui, des echos.

Mais avant ça, il faudrait que tu repartes d'un script propre, parce qu'on a fait plein de modifications, et je suspecte une erreur de typo quelque part.

Voilà ce que j'ai comme dernière version, et qui marche chez moi quelque soit l'endroit où je l'inclus (je te conseille de copier cette version-là, de modifier la ligne où tu dois mettre ton email, de re-tester en incluant le script avant le formulaire, puis si ça marche toujours, de re-tester en l'incluant après le formulaire)  :


$s = "";
function verifieEmail($mail) 
{
	if (preg_match('/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i',$mail)) return false;
	list ($nom,$domaine) = explode ('@',$mail);
	if (getmxrr($domaine,$mxhosts)) return true;
	else return false;
} 
if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['message']))
{
    $destinataire = "ton-email@xxx.com";
    $sujet = "Demande de contact";
    $message = "Nom : ".$_POST['nom']."\r\n";
    $message .= "Prenom : ".$_POST['prenom']."\r\n";
    $message .= "Adresse email : ".$_POST['email']."\r\n";
    $message .= "Message : ".$_POST['message']."\r\n";
    $from = $_POST['email'];
    if (verifieEmail($from))
    {
        $entete = 'From: '.$from;
        if (mail($destinataire,$sujet,$message,$entete))
        {
            $s = "Votre demande a été envoyée.";
        }
        else
        {
            $s = "Une erreur s'est produite. Votre demande n'a pas été envoyée.";
        }
    }
    else
    {
        $s = "Votre email est invalide. Votre demande n'a pas été envoyée.";
    }
}
else
{
    $s = "Vous n'avez pas rempli tous les champs. Votre demande n'a pas été envoyée.";
}
if ($s) echo $s;


Amicalement
Pages :