$retour = filter_var($email, FILTER_VALIDATE_EMAIL);
if(!$retour){
// Ici va venir le code a faire dans le cas que c'est pas bon
exit; // On stop le traitement , donc pas d'insertion dans la base , pas de mail envoyer a une adresse fausse etc
}
Donc pour adapter a ton script , remplace la portion de code.
en haut à gauche de ce sujet.
<?php
//Vérification de l'email
$retour = filter_var('[email protected]', FILTER_VALIDATE_EMAIL);
if($retour){
echo "Adresse Valide ! "; //Si l'email est correct
}
else(!$retour){
// Si l'email est incorrect
exit;
}
?>
Je sais pas comment lui faire dire qu'il faut qu'il vérifie qu'il y ait bien un "@", un nom de domaine derrière ... Et que si c'est pas le cas il faut qu'il envoie l'utilisateur balader ...
$retour = filter_var($email, FILTER_VALIDATE_EMAIL);
if(!$retour){
// Ici va venir le code a faire dans le cas que c'est pas bon
exit; // On stop le traitement , donc pas d'insertion dans la base , pas de mail envoyer a une adresse fausse etc
}
avant le "exit;" je verrais bien une redirection avec un header vers la page appelante avec le passage d'une variable qui permettrait d'afficher un petit message d'erreur de mail pour le visiteur.
<?php
if(isset($_POST['nom'])) { // Si on envoie le formulaire
// Connexion à la base de données "externalisation"
mysql_connect("localhost", "root");
mysql_select_db("externalisation");
// On récupère les $_POST et on en fait des variables
$_POST = array_map('mysql_real_escape_string', $_POST); // on applique mysql_real_escape_string sur tout le tableau $_POST
$nom = $_POST['nom'];
$mot_de_passe = $_POST['mot_de_passe'];
$email = $_POST['email'];
$datetime = date('Y-m-d') .' '. date('H:i:s');
$resultat = null;//initialisation à null de la variable $resultat qui renvoi l'état de l'exécution de la requête d'insertion
//Vérification de l'email
$retour = filter_var($email, FILTER_VALIDATE_EMAIL);
if($retour)
{
// On crypte le mot de passe
define('PREFIXE_SHA1', 'p8%B;Qdf78');
$mdp_sha1 = $_POST['mot_de_passe'];
$mdp_sha1 = sha1(PREFIXE_SHA1.$mdp_sha1);
// On part du principe que le nom d'utilisateur est unique, on doit vérifier qu'il n'existe pas déjà ans la table
$requete = "SELECT COUNT(*) AS nb FROM formulaire WHERE utilisateur = '". $nom ."'"; // On crée la requête
$resultat = mysql_query($requete) or die('ERREUR SQL : '. $requete . mysql_error()); // On exécute la requête
$donnees = mysql_fetch_array($resultat); // On crée un tableau pour récupérer la valeur que renvoie la requête
$nombre = $donnees['nb']; // On crée une variable qui contiendra le nombre de résultats renvoyé par la requête
if($nombre == 0)
{ // Si la variable renvoie 0 c'est que le nom d'utilisateur n'existe pas dans la table donc on peut l'enregistrer
$requete = "INSERT INTO formulaire VALUES('". $nom ."', '". $mdp_sha1 ."', 1, '". $datetime ."', '". $email ."')";
$resultat = mysql_query($requete) or die('ERREUR SQL : '. $requete . mysql_error()); // on exécute la requête
// On crée le message email
$msg1 = 'Merci pour votre inscription et bienvenue sur le site ! Votre identifiant est '. $nom .' et votre mot de passe est '. $mot_de_passe; //Message pour le nouveau membre
$msg2 = 'Un nouveau membre s\'est inscrit: '. $nom; //Message pour le webmaster
$recipient = '[email protected]'; //Adresse mail du webmaster
ini_set("sendmail_from",$recipient);
$subject = 'Formulaire d\'inscription'; //On met le sujet du mail
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header .= "From: ". $email ."";
$mail1 = mail($recipient, $subject, $msg2, $header); //Mail envoyé au webmaster
$mail2 = mail($email, $subject, $msg1, $header); //Mail envoyé au nouveau membre
if($mail1 && $mail2)
{
echo 'Vous allez recevoir un mail avec vos informations.';
}
else
{
echo 'Erreur dans l\'envoi du mail .';
}
}
else
{
// Sinon ce nom existe déjà, on insert aucune donnée
echo 'L\'utilisateur '. $nom .' existe déjà. Veuillez vous réinscrire sous un autre nom d\' utilisateur.';
}
}
else
{
// Sinon ce mail n'est pas valide, on insert aucune donnée
echo 'Votre adresse email est invalide. Veuillez la vérifier';
}
mysql_close(); // On ferme la connexion
if (isset($resultat)) echo 'Enregistrement effectué. Vous êtes maintenant inscrit. Merci !<br />';
}
?>
J'ai déplacé le message de confirmation pour qu'il n'y ait pas de conflit avec les header car on ne peut pas envoyer un header après un echo (sauf à enclencher une bufférisation mais tant qu'on peux l'éviter c'est préférable).