Modifications pour que la régénération soit directement sur la page + mise en forme du formulaire

Ajout de la class css "spam" pour l'affichage des messages d'erreurs
This commit is contained in:
Zatalyz 2024-09-12 09:57:14 +02:00
parent 8e785c5047
commit 65151ab1a6
2 changed files with 71 additions and 44 deletions

View file

@ -47,22 +47,26 @@ if (isset($_POST['new_question'])) {
$_SESSION['current_question'] = null; $_SESSION['current_question'] = null;
$_SESSION['correct_answers'] = null; $_SESSION['correct_answers'] = null;
// Rediriger pour éviter la soumission de formulaire inutile // Rediriger pour éviter la soumission de formulaire inutile
header("Location: form.php"); header("Location: #answer");
exit(); exit();
} }
if ($try == 'send') { if ($try == 'send') {
// Vérifier le token CSRF // Vérifier le token CSRF
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
echo "<span class=\"spam\">";
echo $txt['csrf_error']; echo $txt['csrf_error'];
include 'form_struct.php'; echo "</span>";
return ;
exit(); exit();
} }
// Ici Le visiteur soumet le formulaire // Ici Le visiteur soumet le formulaire
if (($nobotc != md5($nobotv)) || ($nobotv == '') || ($nobots != '')) { if (($nobotc != md5($nobotv)) || ($nobotv == '') || ($nobots != '')) {
echo $txt['antispam_error']; echo "<span class=\"spam\">";
include 'form_struct.php'; echo $txt['antispam_error'];
echo "</span>";
return ;
} else { } else {
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = strip_tags(trim($_POST["name"])); $name = strip_tags(trim($_POST["name"]));
@ -73,13 +77,17 @@ if ($try == 'send') {
// Validation des données // Validation des données
if (empty($name) || empty($email) || empty($subject) || empty($message) || empty($user_answer)) { if (empty($name) || empty($email) || empty($subject) || empty($message) || empty($user_answer)) {
echo "<span class=\"spam\">";
echo $txt['required_fields']; echo $txt['required_fields'];
include 'form_struct.php'; // Réaffiche le formulaire en cas d'erreur echo "</span>";
return ; // Réaffiche le formulaire en cas d'erreur
} else { } else {
// Vérifier la présence de liens : si oui, fin du script // Vérifier la présence de liens : si oui, fin du script
if (preg_match('/http(s?):\/\//ism', $message)) { if (preg_match('/http(s?):\/\//ism', $message)) {
echo "<span class=\"spam\">";
echo $txt['link_error']; echo $txt['link_error'];
include 'form_struct.php'; // Réaffiche le formulaire en cas d'erreur echo "</span>";
return ; // Réaffiche le formulaire en cas d'erreur
exit(); // Arrêter l'exécution si un lien est trouvé exit(); // Arrêter l'exécution si un lien est trouvé
} }
@ -87,8 +95,10 @@ if ($try == 'send') {
$bad_words = $config['bad_words']; $bad_words = $config['bad_words'];
foreach ($bad_words as $bad) { foreach ($bad_words as $bad) {
if (stripos($message, $bad) !== false) { if (stripos($message, $bad) !== false) {
echo "<span class=\"spam\">";
echo $txt['bad_word_error']; echo $txt['bad_word_error'];
include 'form_struct.php'; // Réaffiche le formulaire en cas d'erreur echo "</span>";
return ; // Réaffiche le formulaire en cas d'erreur
exit(); // Arrêter l'exécution si un mot interdit est trouvé exit(); // Arrêter l'exécution si un mot interdit est trouvé
} }
} }
@ -110,16 +120,14 @@ if ($try == 'send') {
echo $txt['email_error']; echo $txt['email_error'];
} }
} else { } else {
echo "<span class=\"spam\">";
echo $txt['bad_answer']; echo $txt['bad_answer'];
include 'form_struct.php'; // Réaffiche le formulaire en cas d'erreur echo "</span>";
return ; // Réaffiche le formulaire en cas d'erreur
} }
} }
} }
} }
} }
} else {
// Ici on affiche le formulaire, c'est l'affichage par défaut
include 'form_struct.php';
} }
?> ?>
<div><a href="index.php">Retour au site</a></div>

View file

@ -1,41 +1,60 @@
<h2>Contact</h2> <h2>Contact</h2>
<p>Vous voulez me spammer ? Heu, me contacter ? Laissez-moi un gentil mot :)</p> <p>Vous voulez me spammer ? Heu, me contacter ? Laissez-moi un gentil mot :)</p>
<form action="form.php" method="POST">
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
<div>
<!-- Token CSRF --> <!-- Token CSRF -->
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>"> <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
<!-- pour les bots -->
<input type="hidden" name="try" value="send"> <input type="hidden" name="try" value="send">
<input type="hidden" name="nobotv" value="<?php echo $nobot; ?>"> <input type="hidden" name="nobotv" value="<?php echo $nobot; ?>">
<!-- Si j'ajoute "required", ça foire pour demander à changer de question... donc on va faire sans, de toute façon c'est ensuite testé par php. -->
<div>
<label for="name"><?php echo $txt['name']; ?></label>
<input type="text" id="name" name="name" placeholder="Nom">
</div>
<div>
<label for="email"><?php echo $txt['mail']; ?></label>
<input type="email" id="email" name="email" placeholder="Courriel">
</div>
<div>
<label for="subject"><?php echo $txt['subject']; ?></label>
<input type="text" id="subject" name="subject" placeholder="Titre du message">
</div>
<div>
<label for="message"><?php echo $txt['message']; ?></label>
<textarea id="message" name="message" rows="6" cols="50" placeholder="Entrer votre message"></textarea>
</div>
<!-- Antibot -->
<div>
<input id="nobotc" type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" />
<!-- Si j'ajoute "required", ça foire pour demander à changer de question... donc on va faire sans, de toute façon c'est ensuite testé par php. --> <label for="nobotc"><?php echo $txt['human']; ?></label>
<label for="name"><?php echo $txt['name']; ?></label> <p style="position: absolute; visibility: hidden; left: -5000; top: -5000">
<input type="text" id="name" name="name"><br><br> <input id="nobots" type="checkbox" name="nobots" value="<?php echo time(); ?>" />
<label for="email"><?php echo $txt['mail']; ?></label> <label for="nobots"><?php echo $txt['bot']; ?></label>
<input type="email" id="email" name="email" ><br><br> </p>
<label for="subject"><?php echo $txt['subject']; ?></label> </div>
<input type="text" id="subject" name="subject" ><br><br>
<label for="message"><?php echo $txt['message']; ?></label><br> <!-- Questions -->
<textarea id="message" name="message" rows="4" cols="50" ></textarea><br><br> <div>
<h3>Mesure anti spambot</h3> <div>
<p>Parce que je n'aime pas le spam, je n'aime pas les messages douteux, et j'aime pas trop qu'on me cause en fait. Attention à vos réponses, je vous bannis de mes serveurs si vous êtes méchants. </p> <label for="answer"><?php echo htmlspecialchars($current_question); ?></label>
<!-- Questions --> </div>
<p><label for="answer"><?php echo htmlspecialchars($current_question); ?></label> <div>
<input type="text" id="answer" name="answer"><input type="submit" name="new_question" value="Demander une autre question"> <input type="text" id="answer" name="answer">
</p> </div>
</div>
<!-- Antibot --> <!-- Envoyer -->
<input id="nobotc" type="checkbox" name="nobotc" value="<?php echo md5($nobot); ?>" /> <div>
<label for="nobotc"><?php echo $txt['human']; ?></label> <ul class="actions">
<p style="position: absolute; visibility: hidden; left: -5000; top: -5000"> <li><input type="submit" name="new_question" value="Demander une autre question"></li>
<br><input id="nobots" type="checkbox" name="nobots" value="<?php echo time(); ?>" /> <li><input type="submit" name="submit_form" class="primary" value="<?php echo $txt['submit_button']; ?>"></li>
<label for="nobots"><?php echo $txt['bot']; ?></label> </ul>
</p> </div>
</div>
<br><br>
<input type="submit" name="submit_form" value="<?php echo $txt['submit_button']; ?>">
</form> </form>