[PHP] Probleme validation adresse email

Fermé
edi - 16 nov. 2007 à 17:36
 1791 - 11 mars 2009 à 15:05
Bonjour,
Voilà,
J'ai un pied de page dans ma page php où l'utilisateur peut saisir son adresse email. Ce pied de page appraît sur toutes les pages à l'identique.
Je ne parviens pas à mettre les controles nécessaires de validation de cette adresse pas plus que de renvoyer la page "merci.php" comme validation de cette adresse.
Voici mon code. Si qqun peut m'aider, ce serait super.

En tête du fichier "pied de page.php":

<? php
function test_email($email)
{
if (isset($_POST['ok'])) {
if (empty($_POST['email'])) {
$message = "Indiquez votre adresse email";
} else {
if( eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email) )
{ // L'adresse email est valide
header('Location: ../merci.php');}
else { // L'adresse email n'est pas valide
$message = "Adresse non valide";}}}
?>

Dans mon <body>

<table class="largeur_table" >
<tr height="5">
<td width="30"> </td>
<td width="530"> </td>
<td width="5"> </td>
<td width="140"><?php if (isset($message)) echo $message;?></td>
<td width="30"> </td>
</tr>
</table>

<table class="largeur_table">
<tr class="pied_page" >
<td width="30"> </td>
<td width="530" id="position_pp" >Copyright © 2006-2008. Tous droits réservés</td>
<td width="5"> </td>
<td width="140" id="log">
<div ><form method="post" action="">
<input name="email" onclick="this.value=''" value="Inscription Newsletter" type="text" class="login-field" />
<input name="ok" type="submit" value="OK" class="ok-field"/></form></div></td>
<td width="30"> </td>
</tr>
</table>

Merci encore.
ed
A voir également:

9 réponses

Bonsoir,

qqs remarques:

- ton tag <? php n'est pas bon il y a un espace entre >, et php
- dans <form... action=''> tu n'appelles pas de fichier pour traiter ton formulaire
- pourquoi as tu mis function test_mail, tu peux mettre ça directement dans ton script " traitement.php"



<?php
if (isset($_POST['ok'])) {
	if (empty($_POST['email'])) {
		$message = "Indiquez votre adresse email";
	} else {
		if( eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email) ){ // L'adresse email est valide
			header('Location: ../merci.php');
		}else { // L'adresse email n'est pas valide
			$message = "Adresse non valide";
		}
	}
}
?> 


et si tu mets <form method=post" action=traitement.php">

et attention le header doit être envoyé avant tout caractère HTML, même pas une ligne vide au début du fichier
0
Enooooorme Merci Alain,

Les contrôles fonctionnent.
Effectivement, les espaces en trop, le <?php... et la function qui n'avait pas lieu d'etre.
Tout ceci est super.
Je mets <form action=""> car je souhaite que, s'il y a erreur, le message s'affiche avant que la page soit envoyée.

Si l'adresse email est correct, en revanche, pb avec mon header... Il me met un message de warning
Warning: Cannot modify header information - headers already sent by (output started at /aaa/bbb/www/blablabla/communication.php:11) in /aaa/bbb/www/blablabla/include/pied-de_page.php on line 7

Effectivement dans mon fichier communication.php, en ligne 153, j'ai fait un include de mon pied de page...

Je vais chercher une solution [peut être est-ce mon chemin d'accès] mais si déjà, c'est limpide pour toi, ou qqun, surtout faites moi signe.
Merci encore pour avoir débloqué ma situation.
ed.
0
Je complète au fur et a mesure que je trouve des solutions.

1 - pour le warning, je n'ai pas trouvé mieux que de mettre du javascript à la place du header.

echo '<script language="Javascript">
<!--
document.location.replace("merci.php");
// -->
</script>';
//header('Location:merci.php');

2 - qd je parviens à passer sur la page "merci.php", l'adresse email n'a pas suivi.


Help !
Merci d'avance à ceux qui se pencheront avec indulgence sur mon cas.
ed
0
Bonjour,
Non, tu étais sur la bonne voie !
Remets ton header !
Pour que nous corrigions ton pb, envoie-nous le contenu exact (à la ligne vide près, oui oui, c'est important pour le header) de tes fichiers communication.php et pied-de_page.php

Ha oui, et aussi, aujourd'hui, on n'utilise plus directement la variable transmise par le formulaire avec $var mais on utilise $_POST['var'].
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonsoir,
Tout d'abord, encore merci de votre aide.
J'ai bien compris que le pb du header c'était les caractères blancs dans le fichier communication.
Mais j'ai au moins une vingtaine de pages avec le même pied de page en include dans le bas de mes pages html. Et donc, trop de boulot de poster tout mon site ici.
Alors, comme je n'ai pas trouvé les espaces blancs qui posent probleme, j'ai contourné le pb autrement.

Plus de header mais le message merci avec envoi confirmation à l'expediteur et au destinataire dans le fichier pied de page. Ce qui donne maintenant:

<?php
if (isset($_POST['ok'])) {
if (empty($_POST['email'])) {
$message = "Indiquez votre adresse email";
} else {
if( eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email) ){ // L'adresse email est valide
Mail("$notremail","$sujet","$m2","from: $notremail");
Mail($email, $sujet, $txt, $headers);
$message = "Merci ! Vous êtes inscrit.";
} else { // L'adresse email n'est pas valide
$message = "Adresse non valide";
}
}
}
?>

Voilà. En espérant que cela puisse aider certains.
ed
0
Bonjour,

Si j'ai bien compris, ce code c'est celui de ton pied de page, cela veut dire que tu l'inclue dans toutes tes pages à la fin de celles ci.

Donc si dans ce pied de page tu mets un header(), forcément il y tout le reste de la page qui est envoyé au navigateur avec avant (beaucoup) de HTML, et ton header() ne marchera pas.

Il faut trouver une autre solution que le header(), c'est ce que tu as fait.

@lain
0
Effectivement @lain,

Merci pour cette précision, cela me conforte dans la nouvelle voie que j'ai trouvé. J'ai eu du mal à renoncer au header !!

En même temps, je trouve cela facile en cas de modification d'avoir un pied de page que je peux changer une seule fois et qui s'applique à toutes mes pages. Pas question de renoncer alors à mon include... lol

ed
0
depuis que mon mai yahoo est deconnesté je n'arrive plus à la validé voila je demande de l'aide cce mail est :valerie_ncho@yahoo.fr
0
merçi de m'avoir accépter
0