[RESOLU] Aide pour formulaire svp

Eléphanteau du PHP | 14 Messages

15 juin 2013, 13:29

Un gros merci Sirakawa pour votre aide si appréciée.

J'ai intégré vos codes dans mes deux fichiers que j'ai nommés "form.php" et "traite.php"
Voir le formulaire en ligne ici: http://forum55plus.ca/form.php
Vous pouvez le tester si vous le désirez.

J'obtiens le message d'erreur: Fatal error: Call to undefined function: filter_var() in /home2/ldxxx/public_html/traite.php on line 107

Je vous donne les codes des lignes 106 à 113 car je pense voir l'erreur mais je n'ose la corriger moi-même ne sachant quelle ligne garder.
  
106 - $courriel = isset($_POST['courriel'])? $_POST['courriel']: "";
107 - $courriel = filter_var($courriel, FILTER_SANITIZE_EMAIL);
108 - $courrier = filter_var($_POST['courriel'], FILTER_VALIDATE_EMAIL); 
109 - $message = isset($_POST['message'])? $_POST['message']: "";     
110 - $nom = isset($_POST['nom'])? $_POST['nom']: ""; 
111 - $antispam = isset($_POST['antispam'])? $_POST['antispam']: "";          
112 - $c_rendu = ""; //le compte-rendu d'erreur
113 - $erreur = false; //boolꦮ juste en cas d'erreur 
On dirait qu'il y a 2 lignes similaires à 107 et 108:
$courriel = filter_var($courriel, FILTER_SANITIZE_EMAIL);
$courrier = filter_var($_POST['courriel'], FILTER_VALIDATE_EMAIL);

Mammouth du PHP | 2278 Messages

15 juin 2013, 14:12

filter_var est disponible à partir de php 5.2
J'ai vu le site que je suppose être un php partagé avec d'autres. Donc inutile de suggérer de changer de version de php....
Je vais voir à trouver un substitut.
Les lignes qui se ressemblent ont des buts différents.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 14 Messages

15 juin 2013, 14:21

J'ai vu le site que je suppose être un php partagé avec d'autres. Donc inutile de suggérer de changer de version de php....
Effectivement. Le site est en html avec un style css - aucun php dans le site si ce n'est le traitement du formulaire.

Eléphanteau du PHP | 14 Messages

16 juin 2013, 01:19

SIRAKAWA... laissez tomber.

J'ai réglé mon problème.

MERCI INFINIMENT POUR VOS EXPLICATIONS.

Mammouth du PHP | 2278 Messages

16 juin 2013, 12:48

Dommage car voila:
<?php
 function check_email_address($courriel) 
 {
  // First, we check that there's one @ symbol, 
  // and that the lengths are right.
  $resultat = true;
  $pos_at = strpos($courriel, "@");
  if (($pos_at === false) or ($pos_at === 0))
  {
  		$resultat = false;
  	}
  	else
  	{
  		$parties = explode("@", $courriel);
  		$nom = $parties[0];
  		$lhote = $parties[1];
  		$details_hote = explode(".", $lhote);
  		if (count($details_hote) <  2)
		{
			$resultat = false;
		}
		else
		{
  			$hote = $details_hote[0];
  			$domaine = $details_hote[1];
 			$res= preg_match("^[A-Za-z0-9!#$%&'*+/=?_`{|}~-]{0,62}^",$hote);
 			if ($res === 0)
 			{
 				$resultat  = false;	
 			}
 			else
 			{
 	 			$res= preg_match("^[A-Za-z0-9!#$%&'*+/=?_`{|}~-]{2,62}^",$domaine);	
 	 			if ($res === 0)
 	 			{
 	 				$resultat = false;
 	 			}	
 			}
var_dump($res);

  		} 
  		var_dump($details_hote);
  		print_r($parties);
  	}
  
  return $resultat;
}
  
 function nettoie ($chaine)
 {
 	if (function_exists("filter_var"))
 	{
 		return filter_var($chaine,FILTER_SANITIZE_STRING);
	}
 	
 	else
 	{
 		return htmlspecialchars($chaine,ENT_QUOTES|ENT_SUBSTITUTE|ENT_IGNORE);
 	} 

}
 	/* $courriel est la valeur passée.
 	$courrier contient la même valeur si le le couriel est bien formé  ou false si le courriel est mal formé
 	*/
 	$courriel = isset($_POST['courriel'])? $_POST['courriel']: "";
 	$courrier = check_email_address($courriel);
  	$message = isset($_POST['message'])? $_POST['message']: "";	
  	$nom = isset($_POST['nom'])? $_POST['nom']: "";	
  	$antispam = isset($_POST['antispam'])? $_POST['antispam']: "";	 	
  	$c_rendu = ""; //le compte-rendu d'erreur
  	$erreur = false; //booléen juste en cas d'erreur
  	
if ($courrier === false)
{
	$c_rendu = "<p>Votre adresse &eacute;lectronique est incorrecte. Elle doit &ecirc;tre de la forme nom@hote ";
	$erreur = true;
}
	
if (($message == "") or (strlen ($message)< 15)) //message absent ou trop court
{
echo (strlen($message));	
	$c_rendu .= "<p>Votre message est absent ou trop court.";
	$erreur = true;
}
else
{
	$message = nettoie ($message);
}

if (($nom == "") or (strlen ($nom ) < 5)) //nom absent ou trop court
{
	$c_rendu .= "<p>Votre nom est absent ou trop court.";
	$erreur = true;
}
else
{
	$nom = nettoie ($nom);
}

if ($antispam != "SEIZE") //nom absent ou trop court
{
	$c_rendu .= "<p>Antispam incorrect.";
	$erreur = true;
}

if ($erreur === true)
{
		/*En cas d'erreur ce formulaire repasse les valeurs à index.php */
		print "
		$c_rendu
		<form method ='post' action = 'index.php'>
			<input type ='hidden' name ='courriel' value ='$courriel' />
			<input type ='hidden' name ='message' value ='$message' />	
			<input type = 'hidden' name ='nom' value='$nom'> 
	    	<input type = 'hidden' name ='antispam' value='$antispam'>    		
			<button type = 'submit'>Retour</button>
		</form>";		
}	
else
{
	$email_message = "D&eacute;tails du formulaire envoy&eacute; ci-dessous.\n\n"; 
	$email_message .= "Courriel: $courriel\n";
   $email_message .= "Nom: $nom";
   $email_message .= "Message:$message\n "; 
   print "$email_message";
}
	
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 14 Messages

16 juin 2013, 13:32

Mais non ce n'est pas dommage.

Je vais le tester et je vous reviens... on ne sait jamais !

Deux idées valent toujours mieux qu'une !!!

-------------------- EDITION --------------------

Euhhhhhhhhhh.... le formulaire fonctionne, mais si on oublie une case, il "passe" quand même (sans que je reçoive la réponse par contre) avec une note d'erreur mais sur la même page que le "merci d'avoir complété le formulaire". Me semble que ça aurait été mieux juste le message d'erreur SANS le merci. De plus, il y a une série de codes devant le message d'erreur.

Voir ici: http://forum55plus.ca/erreur2.png

Par contre, j'adore votre petit bouton retour, ce que je n'ai pas sur ma page fonctionnelle.

J'vous l'ai dit que 2 têtes valent mieux qu'une - lolll