Poblème avec les if(isset($_POST['']))
- Accueil
- Forum
- Programmation
- PHP
- Poblème avec les if(isset($_POST['']))
itsatsu Le 27 juin 2016 à 17:32 (Édité le 25 janvier 2019 à 17:51)
<?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 Le 27 juin 2016 à 19:01 (Édité le 1 janvier 1970 à 01:00)
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 Le 27 juin 2016 à 19:11 (Édité le 1 janvier 1970 à 01:00)
<?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 Le 27 juin 2016 à 19:37 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 27 juin 2016 à 20:15 (Édité le 1 janvier 1970 à 01:00)
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 😀