Problème if

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème if

Re: Problème if

par Ez3kiel » 25 mai 2011, 16:39

Arrêtez toooooooooooout !

Je suis une bille, qui n'a pas fait attention que filter_var laissait passer si ce n'était pas bon et non l'inverse ... Donc un coup de '!' et c'est bon. 8-|

Merci !

Re: Problème if

par Ez3kiel » 25 mai 2011, 14:26

Oups ! Oui pardon j'ai fais des modifs entre temps ...

Donc pour ce qui est du formulaire :
        <form action="Mail.php" method="post" id="contactform" >
          <ol>
            <li>
              <label for="name">Nom<span class="red">*</span></label>
              <input name="nom" class="text" />
            </li>
            <li>
              <label for="adrelectro">E-mail <span class="red">*</span></label>
              <input name="adrelectro" class="text"  />
			  <input type="text" name="email" id="email"/>
            </li>
			
            <li>
              <label for="societe">Société</label>
              <input name="societe" class="text" />
            </li>
            <li>
              <label for="sujet">Sujet <span class="red">*</span></label>
              <input name="sujet" class="text" />
            </li>
            <li>
              <label for="message">Message <span class="red">*</span></label>
              <textarea name="message" rows="6" cols="50" ></textarea>
            </li>
			
            <li class="buttons">
			<p><span>Les champs marqués d'un (*) sont obligatoires</span></p>

              <input type="image" name="Valider" id="Valider" src="images/send.gif" class="send" />
			  

              <div class="clr"></div>
            </li>
          </ol>
        </form>
Avec dans le head :
<?php

if( isSet($_GET['erreur']) )
{
  $erreur = $_GET['erreur'];
}
  else
{ 
 $erreur = 0;
}



if ($erreur == 2)
{
 echo "<script>alert('Tous les champs portant un asterisque sont obligatoires.')</script>";
}

else if ($erreur == 1)
{
echo "<script>alert('Mail envoyé')</script>";
}
else if ($erreur == 3)
{
echo "<script>alert('Merci de rentrer une adresse mail valide')</script>";
}
else if ($erreur == 4)
{
echo "<script>alert('Bot pwnd')</script>";
}
?>

Et sur ma page only php :
<?php


	
	$nom= $_POST["nom"];
	$adrelectro = $_POST["adrelectro"];
	$societe = $_POST["societe"];
	$sujet = $_POST["sujet"];
	$message = $_POST["message"];
	$email= $_POST["email"];
	


	If (!empty($email))
	
		{
			Header("location:contact.php?erreur=4");
		}
		
	else if (filter_var($adrelectro, FILTER_VALIDATE_EMAIL))
	
	{   
	Header("location:contact.php?erreur=3");
	}
	
	else if (empty($nom) 
			|| empty($adrelectro) 
			|| empty($sujet) 
			|| empty($message))
	{  
		Header("Location: contact.php?erreur=2");
	} 
	else
	{  
		$mon_mail = "[email protected]";

		$entete = 'From : '.$adrelectro;
	
		$Total = $nom. ' : ' .$message;
		echo $Total;
		echo $entete;
		echo $sujet;
		//mail($mon_mail, $sujet, $total, $entete);
		Header("Location: contact.php?erreur=1");
	}

?>

Re: Problème if

par moogli » 25 mai 2011, 14:09

tu pourrais nous montrer le formulaire html, parce que la tu n'utilise pas les mêmes variables entre le 1er if et le forlter_var (qui me fait dire que l'erreur est surement la mais comme on a pas le complet ....)


@+

Re: Problème if

par Ez3kiel » 25 mai 2011, 10:52

Apparemment ce n'est pas ça car j'ai essayé avec le FILTER_VAR de moogli, et idem, il me valide "ff" comme adresse mail ... :/
If (!empty($email))
	
		{
			Header("location:contact.php?erreur=4");
		}
		
	else if (filter_var($adrelectro, FILTER_VALIDATE_EMAIL))
	
	{   
	Header("location:contact.php?erreur=3");
	}
	
	else if (empty($nom) 
			|| empty($adrelectro) 
			|| empty($sujet) 
			|| empty($message))
	{  
		Header("Location: contact.php?erreur=2");
	} 
	else
	{  
		$mon_mail = "[email protected]";

		$entete = 'From : '.$adrelectro;
	
		$Total = $nom. ' : ' .$message;
		echo $Total;
		echo $entete;
		echo $sujet;
		//mail($mon_mail, $sujet, $total, $entete);
		Header("Location: contact.php?erreur=1");
	}

?>

Du coup je pensais plus à souci de logique, ou de syntaxe dans mes if ... mais je ne vois pas où. #-o

Re: Problème if

par Ryle » 24 mai 2011, 15:19

S'il envoi le mail, c'est qu'il entre dans le if... s'il entre dans le if, c'est que la variable $email correspond au pattern défini dans $regex... il faut donc probablement revoir le contenu de ta variable $regex pour qu'elle soit plus restrictive :)

Re: Problème if

par Ez3kiel » 24 mai 2011, 14:48

Up ? :oops:

Re: Problème if

par moogli » 19 mai 2011, 10:10

motif moisi :/

@+

Re: Problème if

par Ez3kiel » 19 mai 2011, 09:07

Merci !!

Bon, j'en ai fini avec les parse error, maintenant les soucis restants sont de la logique ...

Car j'ai l'impression que mon test de mail ne marche pas ...

Il devrait retourner erreur=3 pour un email non valide, or il passe le filtre et m'envoi le mail ... :(
if (preg_match($regex, $email)) 
	{   
		
	Header("location:contact.php?erreur=3");

	}
	else 
	{   
		if (empty($nom) 
			|| empty($email) 
			|| empty($sujet) 
			|| empty($message))
	
   
	{  
		Header("Location: contact.php?erreur=2");
	} 
	else
	{  
		$mon_mail = "[email protected]";

		$entete = 'From : '.$email;
	
		$Total = $nom. ' : ' .$message;

	//mail($mon_mail, $sujet, $total, $entete);
	Header("Location: contact.php?erreur=1");
	}
	}
Je ne comprend pas pourquoi ...

Re: Problème if

par xTG » 19 mai 2011, 08:06

Peu de monde utilise filter_var pour les emails car il valide aussi les emails intranet. ;)

Re: Problème if

par moogli » 18 mai 2011, 17:24

alors coté syntaxe t'a un soucis sur la dernier variable tu n'a pas remis de. puor la concaténation et tu a oublié le ; à la fin ;)
donc
$regex = $debutmail.'@'.$domainemail . '.' .$finmail;
echo $regex;
après si ta version de php est >= 5.2 tu peux simplement utiliser la fonction filter_var pour vérifier la validité (syntaxiquement) d'une adresse. pourquoi l'utiliser pour faire la même chose ? parce qu'en général une fonction native est plus rapide et cela évite de se gourer dans le motif et son utilisation ;) (oui je sais je suis feignant ;) )


@+

Re: Problème if

par Ez3kiel » 18 mai 2011, 16:56

D'accord ça marche merci.
Autre chose, j'aurais aimé savoir si c'est phpment correct d'écrire cela :
	$debutmail  = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
	$domainemail = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
	$finmail = '([a-z0-9])'; // caractères autorisés après le nom de domaine
 
	$regex = $debutmail.'@'.$domainemail.'.'$finmail
	echo $regex;
 
	// test de l'adresse e-mail
	if (preg_match($regex, $email)) [...]
Car il me retourne un "Parse error: syntax error, unexpected T_VARIABLE in C:\Users\Ez3kiel\Documents\EasyPHP\www\webpro-cuber\html\Mail.php on line 22"
(l22 -> " $regex = $debutmail.'@'.$domainemail.'.'$finmail " )
Il me semble qu'on concatène comme cela pourtant ...

Re: Problème if

par xTG » 18 mai 2011, 13:03

C'est que la variable n'existe pas.
Avant d'utiliser une variable il faut tester son existence :
if( isSet($_GET['erreur']) )
  $erreur = $_GET['erreur'];
else
  $erreur = 0;

Re: Problème if

par Ez3kiel » 18 mai 2011, 11:29

Arf, exact j'avais oublié ... Merci !
Cependant j'ai un autre souci, lorsque j'arrive sur ma page contact, en haut il me met
Notice: Undefined index: erreur in C:\Users\Ez3kiel\Documents\EasyPHP\www\webpro-cuber\html\contact.php on line 9
Et dans mon <Head></Head> j'ai du coup :
<?php
$erreur = $_GET['erreur'];
echo $erreur;

if ($erreur == 2)
{
 echo "<script>alert('Tous les champs portant un asterisque sont obligatoires.')</script>";
}

else if ($erreur == 1)
{
echo "<script>alert('Mail envoyé')</script>";
}

?>
La ligne 9 correspondant à
$erreur = $_GET['erreur'];

Re: Problème if

par xTG » 18 mai 2011, 11:19

= c'est l'affectation.
== c'est la comparaison.

Problème if

par Ez3kiel » 18 mai 2011, 10:34

Bonjour,

J'aimerais savoir si quelqu'un peut m'aider ...
Je suis en train de faire un formulaire de contact, si les champs sont remplis, je fais
Header("Location: contact.php?erreur=1");
et sinon je fais
Header("Location: contact.php?erreur=2");
Mais voilà sur ma page de contact quand je fais
<?php
$erreur=$_GET['erreur'];
echo $erreur;

if ($erreur = 2)
{
echo "<script>alert('Tous les champs portant un asterisque sont obligatoires.')</script>";
}

if ($erreur = 1)
{
echo "<script>alert('Mail envoyé')</script>";
}

?>
Il me renvoi les deux Alert(), et si je fais un else if, il me renvoi uniquement le 1er alert(), même si il reconnait que $erreur fait bien 1 (Cf echo $erreur;)

Voilà si vous trouvez ce qui va pas ... :s
Merci d'avance