8791 sujets

Développement web côté serveur, CMS

Bonjour,
Je cherche à vérifier les champs pour qu'ils ne s'envoie pas vide et que les membres recoivent un mail vide.

J'ai essayer avec du java script mais ca fonctionne pas.

Maintenant j'ai essayé ca mais le mail par quand même.


<head>

<title>
Envoyer une newsletter
</title>
</head>
<body>

<center>
<?php

    // On inclu le fichier de configuration (contactform_config.php)
    if(file_exists('config.php'))
    {
        include('config.php');
    }
    else
    {
        die('<div id="boite">Fichier contactform_config.php non trouv&eacute;.</div>');
    }

    if(isset($_POST['envoyer']))
    {
        
        $sujet = htmlspecialchars($_POST['sujet']);
        $message = nl2br(htmlspecialchars($_POST['message']));
        
      

        if(!empty($sujet) && !empty($message))
        {
            if(strlen($sujet) > '2' && strlen($message) > '5')
            {
               
               
                           }
                           
                           echo '<br /><br /><font color="green"><b>E-mail envoy&eacute; avec succ&egrave;s !</b></font>';
                      
                         
                       }

                       session_unset();
                    
                   
           }
           
      
       else
       {
           echo '<br /><br /><font color="red"><b>Vous devez remplir tous les champs.</b></font>';
       }
   
    
?>
<table border="0" cellspacing="0" cellpadding="3">
<tr height="100">
<td>
<br>
</td>
</tr>
<tr>
<td background="fond.gif">
<center>
<font face="verdana" size="2" color="#808080"><b>Envoyer votre newsletter</b></font>
</center>
</td>
</tr>
<br>
<tr>
<td background="barregauche.gif">

<form  method="post" action="news_send.php">
<table width="445" align="center" border="0" cellspacing="0">
<tr>
<td width="130" align="right"><p> <font face="verdana" size="2"color="#808080"> <b>Sujet : </b> </font></p></td>
<td width="311" align="left"><p><input type="text" name="sujet" size="44"></p> </td>
</tr>
<tr>
<td width="130" align="right" valign="top" rowspan="2"> <p><font face="verdana" size="2" color="#808080"><b>Message</b></font></p> </td>
<td width="311"> <p><textarea name="message" rows="18" cols="42"> </textarea></p> </td>
</tr>
<tr>
<td width="311" align="left"> <p><input type="submit" value="Envoyer"><input type="reset" value="Réinitialiser"></p></td>
</tr>

</table>
</form>
</td>
</tr>
</table>
</body>

Pouvez-vous m'aider
Salut doublemetre Smiley cligne ,

plusieurs remarques :

* pour tester if(isset($_POST['envoyer'])) il faudrait que ton submit ait un attribut name="envoyer" :
<input type="submit" [b]name="envoyer"[/b] value="Envoyer">

* même si ton message est vide, comme tu as un espace entre < textarea name="message" rows="18" cols="42"> et < /textarea> ton test !empty($message) sera toujours vrai.

* strlen renvoie une valeur numérique donc ta condition
if(strlen($sujet) > '2' && strlen($message) > '5')
est incorrecte : il faut mettre
if(strlen($sujet) > 2 && strlen($message) > 5)

* je n'ai pas vu dans ton code à quel moment le mail est envoyé Smiley rolleyes ...

A+
Modifié par Heyoan (22 Oct 2007 - 04:27)
Il y a plusieurs trucs bizarre là dedans.
Je ne comprends pas l'intérêt du test "file_exists", le fait qu'il y ait une incertitude sur sa présence.
Il ne faut pas tester sa présence dans la mesure ou il faut qu'il soit là.
Ensuite le nom donné diffère du nom d'inclusion...

Le mail doit être envoyé ici

if(strlen($sujet) > '2' && strlen($message) > '5')
 {
  //ENVOI DU MAIL
 }
echo '<br /><br /><font color="green"><b>E-mail envoy&eacute; avec succ&egrave;s !</b></font>';


Ta première vérification ne sert à rien...

if((strlen($sujet)>2) && (strlen($message)>5))

Ca suffit amplement, parce que si $sujet est supérieur à 2, c'est qu'il n'est pas "vide" et idem pour le message.
Pour mieux vérifier et éviter qu'on ne mette que du vide, il est possible de faire ça:

if((strlen(trim($sujet))>2) && (strlen(trim($message))>5))

la fonction trim supprimant les espaces en début et en fin de chaîne, si il n'y a que du vide, la chaîne sera réduite à 0.

Il manque de gros morceaux de code en tout cas...
Le file_exists ne sert effectivement à rien, il vaut mieux remplacer l'include par un require :
require 'config.php';

Ainsi, une erreure fatale sera levée si le fichier n'existe pas.