5568 sujets

Sémantique web et HTML

Bonjour à tous,

J'ai développé un formulaire de contact html, je l'ai mis en ligne. Mais quand j'essaie d'envoyer un message avec ce formulaire, il y a une erreur qui survient à chaque fois: "Votre adresse e-mail n'est pas correcte"

Je sais pas pourquoi.

Merci d'avance.
Administrateur
Bonjour Jean.

Pour comprendre ce qui peut déclencher ce message nous avons besoin du code source utilisé et/ou de l'adresse de la page en question.
dew a écrit :
Bonjour Jean.

Pour comprendre ce qui peut déclencher ce message nous avons besoin du code source utilisé et/ou de l'adresse de la page en question.



<!-------------------- HTML -------------------------->

<?php
  session_start();
  ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR" lang="fr-FR" prefix="og:  http://ogp.me/ns#"  class="no-js">
<head>
<title>Me contacter | Jean</title>
</head>
<body>

<div role="form" class="navsac-form" id="nasandse-form" lang="fr-FR" dir="ltr">
<form action="navsac.php" method="post" id="nasandse-form" class="navsac-form navsac" autocomplete="off">

<div class="nasa-form" class="clearfix">
<div class="se-form">
<div class="form-col">Nom<br />
<span class="nasandse-input name"><input type="text" name="name" value="" size="40" class="nasa-input name" required /></span></div>
</div>
<div class="se-form">
<div class="form-col">E-mail<br />
<span class="nasandse-input email"><input type="email" name="email" value="" size="40" class="nasa-input mel" required /></span></div>
</div>
<div class="se-form">
<div class="form-col-full">Message<br />
<span class="nasandse-input message"><textarea name="message" value="" cols="40" rows="10" class="nasa-input msg" required /></textarea></span></div>
</div>
<div class="se-form">
<div class="form-col-full">
<input type="submit" value="Envoyer" id="submit" class="nasa-input button" /></div>
</div>
</div>
</form>
</div>

</body>
</html>



<!-------------------------- Traitement du formulaire -------------------->

<?php


if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
	header('Allow: POST');
	header('HTTP/1.1 405 Method Not Allowed');
	header('Content-Type: text/plain');
	exit;
}

session_start();

/**
 * [Sécurise les champs du formulaire qui ne doivent pas contenir de html]
 */
function mailCleanChamps($champ) {
	return htmlentities(trim(strip_tags(stripslashes($champ))), ENT_NOQUOTES, "UTF-8");
}

/**
 * [Sécurise les champs de texte du formulaire susceptibles de contenir du html (textareas)]
 */
function mailCleanMessage($champ) {
	return strip_tags(htmlentities(trim(stripslashes($champ)), ENT_NOQUOTES, "UTF-8"));
}

/**
 * [Vérifie le token de sécurité du formulaire]
 */
}

$Nom = isset($_POST['name']);
$Email = isset($_POST['email']);
$Message = isset($_POST['message']);

$_SESSION['mailChamps'] = [
	'name' => $Nom,
	'email' => $Email,
	'message' => $Message
];

$retour = array();


// Si le champ nom est vide
if (empty($Nom)) :

	$retour = array(
		'error' => true,
		'title' => 'Champ manquant',
		'content' => 'Veuillez remplir le champ « Nom ».',
		'type' => 'alert'
	);

// Si le champ message est vide
elseif (empty($Message)) :

	$retour = array(
		'error' => true,
		'title' => 'Champ manquant',
		'content' => 'Veuillez remplir le champ « Message ».',
		'type' => 'alert'
	);

// Si le champ email est vide ou ne correspond pas à la syntaxe requise de type xxxx@xxxx.xxx
elseif (empty($Email) || !filter_var($Email, FILTER_VALIDATE_EMAIL)) :

	$retour = array(
		'error' => true,
		'title' => 'Champ manquant',
		'content' => 'Votre adresse e-mail n\'est pas complète.',
		'type' => 'alert'
	);



$fomulaireErreurs = array_filter($retour);
if (empty($fomulaireErreurs)) :

	$mailDestinataire  = 'jean.mel@gmail.com';

	$mailContenu = array();
	$mailContenu[] = 'Nom : '.$Nom.'<br />';
	$mailContenu[] = 'Mail : '.$Email.'<br />';
	$mailContenu[] = '<br />Message : <br />'.$Message;
	$mailContenu = join($mailContenu);

	$mailObjet = 'Jean - mel de '.$Nom;

	$mailHeaders  = 'From: jean<jean@domain.fr>'."\n";
	$mailHeaders .= 'Reply-To: '.$Email."\n";
	$mailHeaders .= 'MIME-Version: 1.0'."\n";
	$mailHeaders .= 'Content-type: text/html; charset="utf-8"'."\n";
	$mailHeaders .= 'Content-Transfer-Encoding: 8bit'."\n";

	// Envoi du mail
	if (mail($mailDestinataire, $mailObjet, $mailContenu, $mailHeaders)) :
		$retour = array(
			'title' => 'Envoi réussi',
			'content' => 'Merci '.$Nom.' ! Votre mel a été envoyé. Vous recevrez une réponse dès que possible !',
			'type' => 'success'
		);
		unset($_SESSION['mailChamps']);
	else :
		$retour = array(
			'title' => 'Erreur d\'envoi',
			'content' => 'Une erreur s\'est produite lors de l\'envoi de l\'mel. Merci de réessayer plus tard',
			'type' => 'alert'
		);
	endif;
endif;

echo json_encode($retour);
Modérateur
Bonjour,

ici :

$Email = isset($_POST['email']);


$Email est un booléen, ce qui n'est pas une adresse valide en effet.
kustolovic a écrit :
Bonjour,

ici :

$Email = isset($_POST['email']);


$Email est un booléen, ce qui n'est pas une adresse valide en effet.


S'il vous plaît, j'ai pas compris...
kustolovic a écrit :
Ce n'est pas ça le problème.

As-tu des connaissances en PHP?


Oui... je me débrouille pas mal...
Modérateur
isset renvoie un booléen (TRUE ou FALSE), plus loin tu vérifie si $email est une adresse e-mail valide. Ce teste échoue car ni TRUE ni FALSE n'est une adresse e-mail valide.
kustolovic a écrit :
isset renvoie un booléen (TRUE ou FALSE), plus loin tu vérifie si $email est une adresse e-mail valide. Ce teste échoue car ni TRUE ni FALSE n'est une adresse e-mail valide.


Ok.

Quelle solution pour résoudre le problème... ?

Please

$Nom = isset($_POST['name']); // 0 or 1
$Email = isset($_POST['email']); // 0 or 1
$Message = isset($_POST['message']); // 0 or 1

print_r($Email); // 0 or 1


Tu assignes le retour de isset dans des variables donc true or false. Il faut print_r tes variables pour vérifier ce qu'il y a dedans quand ça ne fonctionne pas, c'est vraiment la base.
Jean0164 a écrit :
Cela n'a pas marché. Le problème persiste...


Tu as modifier vers ça ?


$Nom = $_POST['name']; 
$Email = $_POST['email']; 
$Message = $_POST['message']; 
Meilleure solution
JENCAL a écrit :


Tu as modifier vers ça ?


$Nom = $_POST['name']; 
$Email = $_POST['email']; 
$Message = $_POST['message']; 


Merci beaucoup à vous tous !