Poblème avec les if(isset($_POST['']))

itsatsu

itsatsu Le 27 juin 2016 à 17:32 (Édité le 25 janvier 2019 à 17:51)

Salut a tout le mon je suis débutant en programmation j'ai un projet de site web mais actuellement je suis coincé dans mon projet a cause d'un problème PHP avec les isset regarder mon code 
 <?php
 if(isset($_POST['mailform']))                                                                      
{
   echo "ok";
}

Normalement si la condition 'mailform' qui est une input submit (celle ci dessous) je l'ai pris dans mon code 
Lors se que j'appuis sur le bouton impossible d'avoir la réponse "ok que j'attends pouvez vous m'aidez ?
<html>
<head>
<title>Contacter le forum</title>
<link rel="stylesheet" type="text/css" href="style/style.css"/>
</head>
<body>
<div id="contenuprincipal" align="center"><br /><br/>
<form method="POST" action='' class="form_contact">
<input class="input_basic" type="text" name="nom" placeholder="votre nom"/><br/><br/>
<input class="input_basic" type="email" name="mail" placeholder="votre email"/><br/><br/>
<input class="input_basic" type="text" name="objet" placeholder="Objet de votre message"/><br/><br/>
<textarea class="textarea_basic" name"message" placeholder="Votre message"></textarea><br/><br/>    
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<form action="?" method="POST">
<div class="g-recaptcha" data-sitekey="6LdyWCMTAAAAACoikAxClaFFiVSDgYofQ4qk15ls"></div>
                                                                        <br/>
</form>
<input class="submit_basic" type="submit" value="Envoyer !" name="mailform"/><br/>
</div></body></html>
Profil introuvable

Profil introuvable Le 27 juin 2016 à 19:01

Bonjour 'itsatsu',

Ayant pas encore appris le PHP, je pense qu'il faut que tu rajoute "?>" à la fin du code ce qui donne :

<?php
 if(isset($_POST['mailform']))                                                                      
{
   echo "ok";
}
?>
Et j'ai exactement le même problème, regarde, voici le topic en question...
Balatharas

Balatharas Le 27 juin 2016 à 19:11

Déjà tu devrais vérifier que tes entrées ont toutes été bien remplies:
<?php
if(isset($_POST['mailform']))
{
   if(!empty($_POST['nom']) AND !empty($_POST['mail']) AND !empty($_POST['objet']) AND !empty($_POST['message']))
   {
      echo "ok";
   }
   else
   {
      echo "Veuillez remplir tout les champs";
   }
}
else
{
   echo "non";
}
?>
Après, dans ton formulaire il manque un = entre name et "message"
itsatsu

itsatsu Le 27 juin 2016 à 19:37

merci jerem971 s'est juste que a cause du problème d'enregistrement il n'a pas été pris en compte ...  je vais essayer se que tu ma dit beignet  merci les gars pour vos reponses
TheOldNoob

TheOldNoob Le 27 juin 2016 à 20:15

Salut les copains 😀

Bon, c'est plus possible ! Je vois sans arrêt vos vérification de formulaire et ça m'hérisse le poils !!!

Je ne vous le souhaite pas, mais vous êtes en trains  de créer volontairement des fails XSS. Et il ne faut que très peu de compétences pour vous démolire, et votre site, et votre base de données !

Bref, pour commencer, les vérification des champs que vous faites ici, c'est
if(isset // Si c'est remplir
if(!empty // Si c'est pas vide
Ok donc là, on peu mettre ce que l'on veux dans le champs de formulaire...

Le but, étant de protéger par des limites chacun des champs, indépendament les uns des autres.

<?php 
// Je déclare mes variables :
$post = array(); // tableau qui contiendra les données du formulaire nettoyées 
$errors = array(); // tableau qui contiendra les éventuelles erreurs
$success = false; // Passera à true s'il n'a pas d'erreurs et permettra d'afficher un message de réussite
$showError = false; // Affichera les messages d'erreurs s'il y en a

// Je vérifie la soumission du formulaire 
if(!empty($_POST)){ // vérifie que $_POST est définie et non vide :          
// var_dump($_POST); // vérif pour moi pour voir mon tableau d'origine
    
    // On nettoie les données 
    foreach($_POST as $key => $value){
        $post[$key] = trim(strip_tags($value)); // on récupère du tableau initial un nouveau tableau perso avec mes nouvelles données sans html ni espaces... puis on vérifie
    }
    // On commence nos vérifications :
   // avec des preg_match, c'est toujours mieux 😀
    if(!preg_match("#^[A-Z]+[a-zA-Z0-9À-ú'\s]{3,25}#", $post['lastname'])) {  // on commence par vérifié que le champs, commence par une majuscule, puis qu'il contienne les caractères voulus et enfin, qu'il fasse entre 3 et 25 caractères
        $errors[] = 'Le nom doit comporter entre 3 et 25 caractères et commencer par une majuscule';
    }

    //if(strlen($post['objet']) < 3 || strlen($post['objet']) > 25){
    if(!preg_match("#^[A-Z]+[a-zA-Z0-9À-ú'\s]{3,25}#", $post['objet'])) {    
        $errors[] = 'L\objet de votre message doit comporter entre 3 et 25 caractères et commencer par une majuscule';
    }

    //if(!filter_var($post['email'], FILTER_VALIDATE_EMAIL)){ // si la syntaxe n'est pas bonne
    if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $post['email'])){
        $errors[] = 'L\'adresse email est invalide';
    }

    if(!preg_match("#^[a-zA-Z0-9-\.:\!\?\&',\s]{15,}#", $post['content'])){
        $errors[] = 'Le message doit comporter au minimum 15 caractères'; 
    }
    
    if(count($errors) > 0){ // On compte les erreurs, si elles sont supérieures à 0, on passe la variable $showErrors à true, afin de pouvoir les afficher
        $showError = true; // permettra d'afficher nos erreurs s'il y en a
    }
    else { //sinon, s'il n'y a pas d'erreur au vu du if précédent "if(count($error))"" :            
        // On va donc inseret dans la base de donnée ou les nom de champs sont "lastname", "objet", "email", "conten"
        $requete = $pdo->prepare('INSERT INTO contact (lastname, objet, email, content, date_add) VALUES (:firstnameInser, :lastnameInser, :emailInser, :contentInser, NOW())');

        $requete->bindValue(':firstnameInser',   $post['lastname']);
        $requete->bindValue(':lastnameInser',   $post['objet']);
        $requete->bindValue(':emailInser',  $post['email']);
        $requete->bindValue(':contentInser',  $post['content']);

        if($requete->execute()){  // Si la requete s'exécute correctement
            $success = true;
        }
    }        
    
    //var_dump($error);
}
?>
Formidable, on a donc testé que tout nos champs soit correctement remplis !

Après quoi, on fait un jolie formulaire
        <h2 class="text-center">Formulaire</h2>
        <br>
        <!-- Message pour l'utilisateur suite traitement formulaire en cas d'erreur -->
        <?php if($showError == true): ?>
            <div class="alert alert-danger" role="alert">
                <p style="color:red">Veuillez corriger les erreurs suivantes :</p>
                     <ul style="color:red">
                    <?php foreach($errors as $err): ?>
                        <li><?=$err;?></li>
                    <?php endforeach;?>
                    </ul>
            </div>
        <?php endif; ?>
        <!-- Message pour l'utilisateur suite traitement formulaire si tout est ok -->
        <?php if($success == true): ?>
            <div class="alert alert-success" role="alert">
                <p style="color:green">Ok, le formulaire a bien été envoyé.</p>
            </div>
        <?php endif; ?>

        <form class="" method="post" action="">

            <div class="up">
                <label class=" " for="lastname">Nom</label>  
                <div class="">
                    <input id="lastname" name="lastname" type="text" placeholder="Votre nom de famille" class="form-control input-md" required>
                </div>
            </div>

            <div class="up">
                <label class="" for="objet">Objet de votre message</label>  
                <div class="">
                    <input id="firstname" name="objet" type="text" placeholder="Objet du message" class="form-control input-md" required>
                </div>
            </div>

            <div class="">
                <label class="" for="email">Adresse email</label>  
                <div class="">
                    <input id="email" name="email" type="text" placeholder="votreadresse@email.fr" class="form-control input-md" required>
                </div>
            </div>

            <div class="">
                <label class="" for="">Contenu</label>
                <div class="">
                    <textarea class="form-control input-md" name="content" rows="10" cols="54" placeholder="Saisir un texte ici..." ></textarea>
                </div>
            </div>

            <div class="">
                <div class="">
                    <button type="submit" class="">Envoyer</button>
                </div>
            </div>

    </form>
Voilà, avec tout ça, normalement, tu a un formulaire sécurisé et parfaitement fonctionnel 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte