[Résolu - Youpiiiiiiiiiie !!] Problème avec PHP

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

[Résolu - Youpiiiiiiiiiie !!] Problème avec PHP

Message par EmmaZL »

Bonjour,

Je m'arrache les cheveux avec un script en PHP.

J'ai créé un annuaire avec un formulaire pour soumettre des sites. Si un champ n'est pas rempli, si une adresse e-mail n'est pas valable, etc, il y a un message d'erreur qui s'affiche.

Le problème, c'est que le message d'erreur s'affiche avec les balises, comme ceci :

Code : Tout sélectionner

<br>E-mail field cannot be empty ! <br> The e-mail adress "" is not valid ! <br> <br><br> <a href="javascript:history.go(-1);">Back to form</a>
Quand j'affiche le code source, j'ai ceci (tout à la fin du du code) :

Code : Tout sélectionner

...

</span>
</center>
<p>
<br>E-mail field cannot be empty !

<br>
The e-mail adress "" is not valid !
<br>
<br><br>
<a href="javascript:history.go(-1);">Back to form</a>
Maintenant, le script. Il y a deux fichiers, me semble-t-il, qui génèrent ce code : submit_site.php (qui est la page qui contient le formulaire) et functions.php

Je mets pas tout le code, c'est trop long. Je mets seulement ce qui me semble générer le message d'erreur. Si vous pensez qu'il manque quelque chose, dites-le moi :

submit_site.php :


Code : Tout sélectionner

//un visiteur vient de soumettre son site
//il faut qu'il soit valider par l'administrateur et
//il faut aussi lui envoyer un email pour le prevenir que son site est en attente
//donc le nom du webmaster et son email sont importantes et doivent etre remplis 
$action = isset($_POST['action']) ? $_POST['action'] : '';
if ($action == "submit")
{
	// recuperation des donnees
	$nom_proprio = isset($_POST['nom_proprio']) ? $_POST['nom_proprio'] : '';
	$email_proprio = isset($_POST['email_proprio']) ? $_POST['email_proprio'] : '';
	$titre = isset($_POST['titre']) ? $_POST['titre'] : '';
	$url = isset($_POST['url']) ? $_POST['url'] : '';
	$description = isset($_POST['description']) ? $_POST['description'] : '';
	$add2newsletter = isset($_POST['add2newsletter']) ? (int)$_POST['add2newsletter'] : 0;
	//verification de tous les champs (on ne quitte pas sechement l'execution en cas d'erreur...)
	est_vide($nom_proprio,"Please enter your name !",true);
	email_valide($email_proprio,true);
	est_vide($titre,"Please enter a website title !",true);
	url_valide($url,true);
	est_vide($description,"Please enter a website description !",true);
	est_trop_long($description,255,"Your description",true);

	//connexion a la BD (va etre utile pour verifier la presence de l'url et avant ca aller chercher les infos de l'admin)
	//on est deja connecte
	//creation de la requete d'administration
	$sql_admin = "SELECT max_presence, auto_validate, email_master, titre_site, url_rep FROM $T_infos ";
	//envoi de la requete
	$res_admin = send_sql($sql_admin,"trouver les infos pour l'ajout du site");

	$result_admin = mysql_fetch_array($res_admin);
	$auto_validate = $result_admin["auto_validate"];
	$email_master = $result_admin["email_master"];
	$titre_site = $result_admin["titre_site"];
	$url_rep = $result_admin["url_rep"];
	$max_presence = $result_admin["max_presence"];

functions.php (exemple pour e-mail valide ou non) :

Code : Tout sélectionner

//verifie la validite d'une adresse email : syntaxe + non vide
{
	$message = "<br>";
	if (empty($email))
	{
		$message .= "E-mail field cannot be empty !\n<br>\n";
		$email_ok = false;
	}
	else //l'email a ete entree, on la verifie
	{ 
		//verification de la syntaxe
		$email_ok = eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email);		
		//verification du domaine 
		if(TEST_MAIL)
		//on doit se connecter pour verifier l'existance du domaine
		{		
			list($user, $domaine) = split("@", $email, 2);
			$domain_ok = @checkdnsrr($domaine, "MX");
		}
		else
		//si on travaille en local, on ne se connecte pas pour verifier le domaine
		{ $domain_ok = true; }
	}
	if (!$email_ok || !$domain_ok)
	{
		$message .= "The e-mail adress \"$email\" is not valid !\n<br>\n";
		$message .= "<br><br>\n";
		$message .= "<a href=\"javascript:history.go(-1);\">Back to form</a>\n";
		echo htmlspecialchars($message);
		if ($inc) //si on peut faire die() (-> admin)
			include("after.php");					
		exit;
	}
	return true;
}

function est_vide($champ,$message,$inc = false)
Comme vous le voyez, dans functions.php, on retrouve notre message, soit :

Code : Tout sélectionner

		$message .= "The e-mail adress \"$email\" is not valid !\n<br>\n";
		$message .= "<br><br>\n";
		$message .= "<a href=\"javascript:history.go(-1);\">Back to form</a>\n";

Pour voir en live, voici l'url : http://www.barf.ch/euro/annuaire/submit ... p?id_cat=0

Vous pouvez tester autant de fois que vous le voulez en mettant n'importe quoi dans le champ e-mail.

Merci d'avance pour votre aide. J'avoue que ça fait deux jours que je cherche mais mes connaissances en php étant fort limitées, j'avoue que quelques conseils ne seraient pas de refus. :wink:
Dernière modification par EmmaZL le 05 sept. 2005, 22:57, modifié 1 fois.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

C'est simple, tu affiches le message avec un echo htmlspecialchars($message); , donc c'est parfaitement normal que PHP parse le texte en modifiant les caractères < en < et > en > des balises HTML !
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message par EmmaZL »

Merci chBok ! :wink:

J'ai enlevé echo htmlspecialchars($message); mais maintenant, y a plus du tout de message... :cry:

Bon surement qu'il fallait pas l'enlever mais le remplacer par autre chose... mais par quoi ? (sorry, je suis pas très douée)...
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message par EmmaZL »

ooohh j'ai trouvé !!

J'ai mis echo $message;

et ça maaaaaaaaaarche !!! :lol:

Merci chBok !!!! :D
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : debian-dev et 3 invités