8795 sujets

Développement web côté serveur, CMS

bonjour,

Je ne pige pas pourquoi cette ligne ne fonctionne pas.. .. ! j'ai beau regarder sur des forums, changer les caractères ou mettre un autre preg_match, rien ne passe, mon message Notice: Undefined variable: email..


$regex = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/"; 
if(!preg_match($regex, $email)) 	{$valid=false; $erreuremail="Votre email n'est pas valide"; }

Modifié par blond1n (28 Jan 2014 - 11:26)
Hum, y a pas tout le code du coup on peut pas savoir ..

elle existe la variable : $email ??

parce que tu l'utilise dans le if :
if(!preg_match($regex, $email))

Peut être que tu as mis un autre nom que $email :s
Modifié par mathieu1004 (28 Jan 2014 - 10:44)
pourtant non, sauf si erreur : Smiley sweatdrop

<p class="zone_two">  
	<label for="email">Email</label> 
	<input type="text" name="mail" size="" maxlength="40" value="<?php if(isset($email)) echo $email; ?>" id="email" />
<span class="error_message"><?php if(isset($erreuremail)) echo $erreuremail; ?></span>

Modifié par blond1n (28 Jan 2014 - 10:49)
Ca me dit toujours pas si la variable $email existe ou non ça :s

En gros tu remplis le formulaire, tu envoies, et tu récupères en php ce que le gars à rempli : dans ton code, est ce que a un moment tu fais $email=$_GET("mail") ( get ou post je sais pas non plus en fait)
Modifié par mathieu1004 (28 Jan 2014 - 11:09)
arf, ok . . Smiley biggol je te mets mon code php ..

<?php
	if(!empty($_POST)){
		extract($_POST);
		$valid=true;
if(empty($school_level))			{$valid=false; $erreurschool_level="Vous n'avez pas rempli votre nom";}	[....]
			$regex = "/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i"; 
			if(!preg_match($regex, $email)) 	{$valid=false; $erreuremail="Votre email n'est pas valide"; }								
			if(empty($email)) 					{$valid=false; $erreuremail="Vous n'avez pas rempli votre Email"; }

			if($valid){
			
				$to= "blond1n@hotmail.fr";
				$sujet= $nom. "Demande de documentations et d'informations - Site internet";
				$header="From: $om <$email> \n" ;
				$header .= "Reply-To: $email";
				
				$nom= stripslashes ($nom);
				$firstname= stripslashes ($firstname);
				$code_postal= stripslashes ($code_postal);
				$adress= stripslashes ($adress);
				if (email($to,$sujet)) {
						$envoi_email="Votre message nous ai bien parvenu, nous réponderons dans les plus brefs délais.";
						unset($nom);
						unset($firstname);
						unset($adress);
						unset($code_postal);
						unset($town);
						unset($phone);
						unset($email);
						
				}
					else {
						$envoi_email="Une erreure est survenue et votre mail n'est pas parti";
				}		
			
			}	 
	}		
?>
je commence le php, ce n'est pas évident de bien répondre.. .je ne pige pas trop le pourquoi du comment. .. Smiley ohwell
... alors pourquoi et comment là je n'ai plus le message d'erreur.. . Smiley nut ! je n'ai rien touché depuis le début du post.. . ! Smiley hum
Modifié par blond1n (28 Jan 2014 - 11:26)
Je ne connais pas cette fonction extract, mais ici http://fr2.php.net/extract ils ont l'air de dire que ce n'est pas vraiment recommandé de faire ça sur les $_get et compagnie.

Je pense que tu devrais stocker une par une les valeurs qu'il y a dans $_POST.
Par exemple :
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['mail'];

Au départ, il est important de comprendre comment est fait le lien entre ton formulaire et la façon dont tu va récupérer la valeur dans la page php action du formulaire.
Une fois que c'est compris on s'assure d'utiliser les bonnes fonctions de 'securité
Modifié par mathieu1004 (28 Jan 2014 - 13:05)
je vais regarder ton lien,

j'ai mis :

if(!empty($_POST))
{ 
  extract($_POST);
  $valid=true;


pour pas me taper tous les variables à créer..

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['mail'];
tiens le bug est revenu.. .pour le test j'avais mis le code php dans la page directement.

maintenant je l'ai mise dans un fichier à part bidule.php, parce ma zone contact est en include en bas de chaque page de mon site, action="bidule" appelle le php, et la le preg match déconne à nouveau ! Smiley mur
Modifié par blond1n (28 Jan 2014 - 12:47)
Ta variable $email n'est pas définie parce que dans ton formulaire tu as appelé ton champ "mail" au lieu de "email".

Et pour valider une adresse email il suffit de faire :


if ( filter_var($email, FILTER_VALIDATE_EMAIL) ) {
  // email valide
}

Modifié par jb_gfx (28 Jan 2014 - 13:51)
a écrit :
pour pas me taper tous les variables à créer..

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['mail'];


A un moment donné, si tu débutes un langage, il faut passer par les bases, et la base , c'est justement de ce "taper" toutes les variables une par une, et comme ça tu aurai compris que le passage ce fait par le name, soit 'mail' et pas 'email'.

Ensuite sur le même principe que la réponse de jb_gfx, tu as aussi http://www.w3schools.com/php/func_filter_input.asp pour traiter les retours de get et post.

et sur le même principe tu peux aussi (même si ce n'est pas suffisant) mettre un input de type email
http://www.w3schools.com/html/html5_form_input_types.asp
Modifié par mathieu1004 (28 Jan 2014 - 14:07)
Merci de vos réponses,

c'est vrai quand qu'il faut que je me tape pas mal de choses répétitives pour ne pas me planter pour apprendre. Je vais mis mettre rapidement. Smiley murf

J'avais vu mon erreur de mail,email, d'ailleurs c'est sans doute pour ça que ça a fonctionné à un moment dans mon premier teste.

je n'avais pas modifié l'html d'origine (autre fichier) quand j'ai remis le code php dans fichier externe, du coup le bug est revenu. J'ai créé le formulaire html depuis un bout de temps, relu en z du coup le mail m'a échappé aux premiers abords.
Modifié par blond1n (28 Jan 2014 - 15:06)