Page 1 sur 2

probleme pour verification de champ vide

Posté : 02 sept. 2010, 19:16
par aurel
bonjour,

alors voila depui 2 jour je trouve pas le code pour faire verifier mes champ et surtout sur quel page les mettre voici mes code :
index.php

Code : Tout sélectionner

<fieldset> <form action="contact.php" method="post"> <label>Nom : </label><input type=text" name="nom" /></br> <label>Votre Email : </label><input name="email" type=text" /></br> <label>Votre message : </br></label><textarea name="message" cols="30" rows="20" onfocus="this.value=''" tabindex="2" /> </textarea> </br> </br> <input type="submit" value="envoyé"> </fieldset>
et contact.php
<?php

$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];


$adresse_dest = "mon_email";
$sujet = "Client SoGames";
$contenue_message = "Nom client : " . $nom ."\n" .
		      "Email client : " . $email . "\n" . 
		  "Message du client :\n" . $message. "\n";
$adresse_exp = "From: [email protected]";

mail($adresse_dest, $sujet, $contenue_message, $adresse_exp);
 
<html>
<head>
<title>message envoyé</title>
</head>
<body>
<?php
echo "message envoyé"
?>
<p>merci de votre message</p>
</body>
</html>

merci de votre aide car jarrive pas a trouver le probleme

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 10:22
par ilbee
Bonjour,

Tu as plusieurs solutions. Tu peux utiliser du javascript dans ta page index.php.

Si tu veux utiliser du php, tu peu modifier ton contact.php de la facon suivante
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];

if( empty($nom) ) {
     header('location: index.php?erreur=nom');
     exit;
}
if( empty($email) ) {
     header('location: index.php?erreur=email');
     exit;
}
if( empty($message) ) {
     header('location: index.php?erreur=message');
     exit;
}

$adresse_dest = "mon_email";
...

Et ton index.php comme ceci
<fieldset>
<form action="contact.php" method="post">
<?php if( isset($_GET['erreur']) ) { ?>
<b>ERREUR :</b> Veuillez saisir le champs <b>"<?php echo $_GET['erreur']; ?>"</b> !
<? } ?>
<label>Nom : </label><input type=text" name="nom" /></br>
<label>Votre Email : </label><input name="email" type=text" /></br>
<label>Votre message : </br></label><textarea name="message" cols="30" rows="20" onfocus="this.value=''" tabindex="2" />
</textarea>
</br>
</br>
<input type="submit" value="envoyé">
</fieldset>

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 10:35
par macgawel
Bonjour.

1. Sur le net, il y a plein de tutoriels sur l'utilisation de formulaires en PHP.
Par exemple ICI...

2. Sur quelle page mettre le code de vérification :
Le formulaire appelle la page contact.php, c'est donc dans cette page que s'effectuent les contrôles.

3. "Je n'arrive pas à trouver le problème"
Moi non plus.
Tu rencontres quoi comme problème, en fait ?

4. Le code de vérification :
En fait, ça dépend de ce que tu veux vérifier :mrgreen:

La première chose à faire, c'est, de tenir compte de l'a règle de base du programmeur : "l'utilisateur est soit con soit malveillant". En clair, tu as de fortes chances pour qu'un utilisateur, à un moment, remplisse mal le formulaire - volontairement ou non.
- Gérer le cas des champs vides
- Suivant le type de données attendues, on peut utiliser strip_tags() ou htmlentities(), par exemple.

Après, il faudrait vérifier le mail. Pour ça, tu peux utiliser les expressions régulières qui te permettront de vérifier que le contenu du champ répond à certains critères (présence d'un @, adresse de la forme [email protected], ...)


[Edit] Passer uniquement par du Javascript => Mauvaise idée.
Si le JS est désactivé (côté client) ça ne fonctionne pas ou (pire) tu ne vérifie rien.
Il faut toujours partir du principe que le JS peut être (volontairement ou pas) désactivé/bidouillé (voir la règle de base).

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 17:18
par aurel
merci de votre aide probmeme quand je remplie aucun champ j'ai que l"erreur du nom qui mafiche comment faire pour que se soit tout qui safiche quand aucun champ est remplie merci

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 19:23
par ilbee
Re-bonjour,

Voici un petit exemple pour ta page contact.php.

Les variables sont simple pour que tu comprendre bien, mais tu peux remplacer oui par true et non par false pour etre plus propre.
... 

// Avons nous recontré une erreur ?
$erreur = 'non';
$url = '';

// Si nous n'avons pas de nom
if( empty($nom) ) {
     $erreur = 'oui';
     $url += '&nom=oui';
}
// Si nous n'avons pas d'email
if( empty($email) ) {
     $erreur = 'oui';
     $url += '&email=oui';
}
// Si nous n'avons pas de message
if( empty($message) ) {
     $erreur = 'oui';
     $url += '&message=oui';
}
// Et maintenant, avons-nous rencontré une erreur ?

// Si oui

if( $erreur == 'oui' ) {
     // Redirection
     header('location: index.php?erreur=oui'.$url);
     // Et arret du script
     exit();
}


...
Et du cote de ton index.php
...
if( isset($_GET['erreur']) && $_GET['erreur'] == 'oui' ) {

	if( isset($_GET['nom']) && $_GET['nom'] == 'oui' ) {
		echo 'ERREUR : Le champs NOM est obligatoire !<br/>';
	}

	if( isset($_GET['email']) && $_GET['email'] == 'oui' ) {
		echo 'ERREUR : Le champs EMAIL est obligatoire !<br/>';
	}

	if( isset($_GET['message']) && $_GET['message'] == 'oui' ) {
		echo 'ERREUR : Le champs MESSAGE est obligatoire !<br/>';
	}

}
...

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 20:35
par aurel
bon ben c'est encore pire la j'ai meme plus d'email

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 21:44
par ilbee
Euuh oops, désolé, il faut mettre des .= et non des +=
...
// Si nous n'avons pas de nom
if( empty($nom) ) {
     $erreur = 'oui';
     $url .= '&nom=oui';
}
// Si nous n'avons pas d'email
if( empty($email) ) {
     $erreur = 'oui';
     $url .= '&email=oui';
}
// Si nous n'avons pas de message
if( empty($message) ) {
     $erreur = 'oui';
     $url .= '&message=oui';
}
...

Re: probleme pour verification de champ vide

Posté : 03 sept. 2010, 22:35
par aurel
bon merci de votre aide la sa marche mais probleme je reçois pas le mail meme quand je remplie le formulaire voici le lien pour que vous verifié :

http://php.sogames-prod.com/

merci encore de votre aide

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 09:15
par Ryle
Est-ce que tu as des messages d'erreur ?
Peux tu nous montrer le code de ta page contact ? Ce sera plus facile de voir ce qui cloche :)

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 15:11
par aurel
bonjour,

oui biensur la voila

Code : Tout sélectionner

<?php // Si nous n'avons pas de nom if( empty($nom) ) { $erreur = 'oui'; $url .= '&nom=oui'; } // Si nous n'avons pas d'email if( empty($email) ) { $erreur = 'oui'; $url .= '&email=oui'; } // Si nous n'avons pas de message if( empty($message) ) { $erreur = 'oui'; $url .= '&message=oui'; } // Et maintenant, avons-nous rencontré une erreur ? // Si oui if( $erreur == 'oui' ) { // Redirection header('location: index.php?erreur=oui'.$url); // Et arret du script exit(); } $nom = $_POST['nom']; $email = $_POST['email']; $message = $_POST['message']; $erreur = $_POST['message']; $erreur = $_POST['email']; $erreur = $_POST['nom']; $adresse_dest = "[email protected]"; $sujet = "Client SoGames"; $contenue_message = "Nom client : " . $nom ."\n" . "Email client : " . $email . "\n" . "Message du client :\n" . $message. "\n"; $adresse_exp = "From: [email protected]"; mail($adresse_dest, $sujet, $contenue_message, $adresse_exp); ?> <html> <head> <title>message envoyé</title> </head> <body> <?php echo "message envoyé" ?> <p>merci de votre message</p> </body> </html>
merci de votre aide

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 15:22
par Ryle
Tu as un petit problème de cohérence (et d'ordre surtout dans ton code).

En effet, tu commences par tester si $nom, $email ou $message sont vides. Si c'est le cas tu rediriges l'utilisateur.
Le problème, c'est que ce n'est qu'après avoir redirigé l'utilisateur que tu affectes une valeur à $nom, $email et $message.

Le code
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
devrait être réalisé avant de tester ces variables, ou alors il faut tester directement la valeur $_POST['nom'] avec empty() :)

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 15:46
par aurel
dsl pas trop compris se que je doit faire avec empty je les deja fait sa marche pas non plus.

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 17:27
par Ryle
Ben soit tu fais
$nom = $_POST['nom'];
avant de faire
if( empty($nom) )
(vu que sinon, $nom n'existe pas, et empty($nom) retournera toujours "vrai"

Soit tu fais :
if( empty($_POST['nom']) )
pour tester directement la variable envoyée :)

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 17:58
par aurel
bon c'est pas grave je comprend pas trop comment faire je vais me debrouiller japprendrai mieu tout seul merci quand meme de votre aide

Re: probleme pour verification de champ vide

Posté : 04 sept. 2010, 22:54
par Ryle
C'est juste une question d'algorithme et d'ordre dans ton code : tu ne peux pas entrer dans une pièce avant d'avoir ouvert la porte... dans ton code c'est pareil, tu ne peux pas tester si une variable est vide, et définir cette variable ensuite :)