probleme pour verification de champ vide

aurel
Invité n'ayant pas de compte PHPfrance

02 sept. 2010, 19:16

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

Eléphanteau du PHP | 13 Messages

03 sept. 2010, 10:22

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>
http://www.ilbee.net/
Créateur de solution Internet

Mammouth du PHP | 672 Messages

03 sept. 2010, 10:35

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).

aurel
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 17:18

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

Eléphanteau du PHP | 13 Messages

03 sept. 2010, 19:23

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/>';
	}

}
...
http://www.ilbee.net/
Créateur de solution Internet

aurel
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 20:35

bon ben c'est encore pire la j'ai meme plus d'email

Eléphanteau du PHP | 13 Messages

03 sept. 2010, 21:44

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';
}
...
http://www.ilbee.net/
Créateur de solution Internet

aurel
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 22:35

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 sept. 2010, 09:15

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

aurel
Invité n'ayant pas de compte PHPfrance

04 sept. 2010, 15:11

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 sept. 2010, 15:22

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() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

aurel
Invité n'ayant pas de compte PHPfrance

04 sept. 2010, 15:46

dsl pas trop compris se que je doit faire avec empty je les deja fait sa marche pas non plus.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 sept. 2010, 17:27

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

aurel
Invité n'ayant pas de compte PHPfrance

04 sept. 2010, 17:58

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 sept. 2010, 22:54

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...