La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  Vérification formulaire
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Vérification formulaire  (Lu 1117 fois)
Vérification formulaire
« sur: le 05-11-2008 a 17:40:05 »
Danamel
Membre récent
*

Hors-Ligne

Messages: 3



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonjour à tous

J'ai actuellement sur mon site un livre d'or qui fonctionne, mais désirant le modifier afin de changer sa présentation je fait un script pour l'afficher sur 2 pages.
1 fichier livredor.php qui affiche les messages avec pagination qui fonctionne très bien avec les données déjà dans la table 'livredor' de ma base.
+ 1 fichier formulaire.php qui affiche le formulaire et effectue les vérifications et qui lui ne fonctionne pas.
Le formulaire s'affiche mais les vérifications posent problème.

- Si tous les champs sont remplis et le code bon ou faux, le code rentré s'efface et s'affiche l'erreur "Vous n'avez pas mis le bon code".
- Si un des champs est vide mais le code bon, le code rentré s'efface et s'affiche l'erreur "Au moins un des champs est vide".
Débutant en PHP je n'arrive pas à trouver ce qui ne fonctionne pas bien dans les vérifications.

Voici le code de la page formulaire.php
<?php
session_start();
$nombre1 = mt_rand(2, 19);
$nombre2 = mt_rand(2, 9);
$resultat = $nombre1 + $nombre2;
$_SESSION['captcha'] = $resultat;

if(isset($_POST['go']) AND $_POST['go'] == 'Envoyer') {//Si le formulaire à été reçu
    if((isset($_POST['pseudo']) AND !empty($_POST['pseudo'])) AND (isset($_POST['captcha']) AND !empty($_POST['captcha'])) AND (isset($_POST['message']) AND !empty($_POST['message']))) {
// Si les 2 variables ne sont pas vides, et si le résultat du champ du code antispam est égal au code généré par la session, alors, et seulement dans ce cas, on fera notre insertion dans la base
//On vérifie que le code antispam est bon
    if(isset($_SESSION['captcha']) AND $_POST['captcha'] == $_SESSION['captcha']) {
// On peut enfin enregistrer
// on se connecte à notre base
$base=mysql_connect("localhost", "root", "");
mysql_select_db ('jardinamel', $base);
                // On prépare la requête d'insertion des données
                $sql = 'INSERT INTO livredor VALUES("", "'.mysql_escape_string($_POST['pseudo']).'", "'.time("").'", "'.mysql_escape_string($_POST['message']).'")';
// On utilise mysql_real_escape_string par mesure de sécurité et pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); // On lance la requête
                mysql_close(); // On ferme la connexion à la base de données
                header('location: livredor.php'); // On redirige le visiteur vers l'accueil du livre d'or
                exit(); // On termine le script courant
                }
        else {
            $erreur = '<strong><font color="red">Vous n\'avez pas mis le bon code</font></strong>';// Si le résultat est faux, on renvoie le visiteur...

        }
    }
                else {
        $erreur = '<strong><font color="red">Au moins un des champs est vide</font></strong>';
    }
}
// On commence le formulaire
//On inclut le début du doctype en haut de page
include("includes/header_debut.php"); ?>
        <title>Insertion d'un nouveau message</title>
<?php
//On inclut la fin du doctype et la banière en haut de page
include("includes/header_fin.php");
//On inclut le sommaire gauche de la page
include("includes/menu_livredor.php"); ?>
<div id="content"> <!-- début du contenu de la page -->
        <h1>Le Livre d'Or</h1>
        <div class="image">
            <img src="images/ligne1.gif" alt="ligneverte" />
        </div><br/><br/><br/>
<!-- On commence le formulaire-->
                <p id="presentation_livreor1">Utilisez le formulaire "CONTACT" pour posez une question<img id="livre_dor" src="images/livre_or.gif" alt="livredor" /></p>
<form id="formulaire_livreor" method="post" action="<?php echo $PHP_SELF ?>">
    <div class="form">
            <input type="text" name="website" id="website"/>
        <fieldset class="fieldset"> <legend>Votre Prénom ou Pseudo</legend>
            <input class="input" type="text" name="pseudo" value="<?php if(isset($_POST['pseudo'])) echo htmlentities(trim($_POST['pseudo'])) ?>">
        </fieldset>
        <fieldset class="fieldset"><legend>Code antispam<br/><span class="rouge">Combien font <?php echo $nombre1; ?> plus <?php echo $nombre2; ?> ?</span></legend>
            <input class="input" type="text" name="captcha"/>
        </fieldset>
        <fieldset class="fieldset"><legend>Votre message</legend>
            <textarea class="textarea" name="message"><?php if(isset($_POST['message'])) echo htmlentities(trim($_POST['message'])) ?></textarea>
        </fieldset>
<p><input type="submit" name="go" value="Envoyer"/></p>
    </div>
<p id="presentation_livreor">Retour aux messages du livre d'or ! <a href="livredor.php">CLIQUEZ</a></p>
<?php
if (isset($erreur))
echo '',$erreur;
?>
<!-- Notre formulaire est fini, on ferme la balise form -->
</form>
</div> <!-- fin du contenu de la page -->
<?php
//On inclut le sommaire gauche et le bas de page
include("includes/sommaire_index.php"); ?>

Si quelqu'un veut bien m'aider à trouver mes erreurs, merci d'avance.
Si d'autres précisions sont nécessaires pas de problème.
Danamel

Rapporter au modérateur  

Re:Vérification formulaire
« Répondre #1 sur: le 06-11-2008 a 21:14:55 »
Danamel
Membre récent
*

Hors-Ligne

Messages: 3



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonsoir à tous

Personne n'a une petite idée pour au moins m'orienter dans la bonne direction pour chercher ce qui cloche dans mon code. N'étant pas très expert, et même débutant en PHP je suis conscient qu'il n'est très bien présenté mais une peu d'aide serait bienvenue.
merci d'avance

Rapporter au modérateur  
Re:Vérification formulaire
« Répondre #2 sur: le 07-11-2008 a 21:35:13 »
Danamel
Membre récent
*

Hors-Ligne

Messages: 3



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonsoir à tous

Bon j'ai trouvé la solution à mon problème.
Pour ceux que cela intéresse voici la solution :
<?php
session_start();
$nombre1 = mt_rand(2, 19);
$nombre2 = mt_rand(2, 9);
$resultat = $nombre1 + $nombre2
$_SESSION['captcha'] = $nombre1 + $nombre2


Il faut remplacer les 2 lignes en rouge par une seule comme ceci :

$_SESSION['captcha'] = $nombre1 + $nombre2
et déplacer cette variable juste avant l'envoi du formulaire comme ceci :

        <fieldset class="fieldset"><legend>Votre message</legend>
            <textarea class="textarea" name="message"><?php if(isset($_POST['message'])) echo htmlentities(trim($_POST['message'])) ?></textarea>
        </fieldset>
$_SESSION['captcha'] = $nombre1 + $nombre2
<p><input type="submit" name="go" value="Envoyer"/></p>
    </div>
la variable où elle était initialement était réactualisée à chaque envoi et le nombre était donc toujours faux.

Rapporter au modérateur  
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg