8800 sujets

Développement web côté serveur, CMS

Bonjour à tous,
N'étant pas très au point en php, je sollicite vos compétences pour m'aider sur un petit problème.
Voila, je cherche une manière simple d'ouvrir une page html après avoir entrer son mail dans un champs texte (obligatoire) et d'avoir cliquer sur le bouton 'submit'.

Le mail ainsi entré parviendra au webmaster du site...

- Voici mon code pour la partie HTML :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
</head>

<body>

<div align=center>
<form method=POST action=formmail.php >
<input type=hidden name=subject value=Download>
<table>
<tr><td>Votre Nom:</td>
    <td><input type=text name=realname size=30></td></tr>
<tr><td>Votre Email:</td>
    <td><input type=text name=email size=30></td></tr>

</table>
<br> <input type=submit value=Envoyer>
     
</form>
</div>

</body>
</html>



et voici le PHP:


<?php
$TO = "mail@site.com";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location:  http://www.monsite.fr/fichier.pdf");
 

?>


Voila, je ne sais pas comment rendre le champs "email" obligatoire.
qu'en pensez vous?

Merci d'avance pour votre aide. Smiley cligne
Modifié par perinus (04 Feb 2009 - 17:49)
Administrateur
if(!isset($_POST['email']) || !preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]*)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/i',$_POST['email'])) { echo "Le champ e-mail est obligatoire"; } else { ... la suite } 
Modérateur
Salut,

Là, le code de dew est malheureusement illisible (sur l'écran où je suis).

Je te propose ceci :


if (trim(empty($email)) || !filter_vars($email, FILTER_VALIDATE_EMAIL){
  echo "Le champs mail doit rempli correctement ";
}


++
Modifié par Nolem (04 Feb 2009 - 23:20)
Helo,

Nolem a écrit :

if (trim(empty($email)) ...
Juste en passant : le trim appliqué à un booléen (empty) ne sert pas à grand chose. Smiley cligne

Et d'ailleurs dans le "bon sens" ça ne marchera pas non plus :
if (empty(trim($email))  ...
va générer une erreur.
Modérateur
oups Smiley confused

En effet, je n'avais pas ma faute. Par contre ceci devrait fonctionner correctement :



if (trim($email) == "" || !filter_vars($email, FILTER_VALIDATE_EMAIL){

  echo "Le champs mail doit rempli correctement ";

}



++ et encore dsl pour ce petit désagrément.
Tu peux faire aussi l'inverse : utiliser empty() sans le trim(). Elle retourne false également lorsque la chaine contient uniquement un ou plusieurs caractères "vides", qui sont, je crois, les mêmes que trim() supprime.
Noix de Coco a écrit :

qui sont, je crois, les mêmes que trim() supprime.
Pas tout à fait :
empty renvoie true dans les cas suivants :
a écrit :
* "" (une chaîne vide)
* 0 (0 en tant qu'entier)
* "0" (0 en tant que chaîne de caractères)
* NULL
* FALSE
* array() (un tableau vide)
* var $var; (une variable déclarée, mais sans valeur dans une classe)
alors que trim "supprime les caractères invisibles en début et fin de chaîne" :
a écrit :
* " " (ASCII 32 (0x20)), un espace ordinaire.
* "\t" (ASCII 9 (0x09)), une tabulation.
* "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).
* "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).
* "\0" (ASCII 0 (0x00)), le caractère NUL.
* "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.
Modérateur
Salut Heyoan Smiley smile ,

Qu'est ce qu'il est préférable d'écrire ? Utilisation de trim() ou empty() ?

++
Hello Nolem, Smiley cligne

Nolem a écrit :

Qu'est ce qu'il est préférable d'écrire ? Utilisation de trim() ou empty() ?
Ben comme je ne suis pas un expert je me garderais bien de dire qu'il est préférable de ... mais par contre j'ai un avis Smiley lol :

personnellement je n'utilise pratiquement jamais empty parce qu'il renvoie true dans beaucoup trop de cas la plupart du temps (cf. plus haut) et donc je préfère trim et plus loin if($foo == '')
Modifié par Heyoan (09 Feb 2009 - 21:55)