mes erreurs en redirection ne s'affichent pas

Mammouth du PHP | 506 Messages

18 févr. 2022, 16:51

bonjour a tous

comme vous el savez je ne suis pas un champion de la programmation
je souhaiterais ajouter un petit plus a mon site

c'est donc un bouton pour une newsletter

Pour l'instant j'ai un code fonctionnel avec une pop up
Lorsque l'utilisateur arrive sur mon site la pop up s'ouvre et il peux s'inscrire a la newsletter
il y a des messages de prévu
par exemple si l email existe déjà entre autre

Je remarque que pas mal d'utilisateur par reflexe ferme ce pop up par habitude

j'ai donc décide d'utiliser et modifier un peu le code existant pour ajouter une case sur ma page d accueil ou l'utilisateur pourra s'abonner

Le bouton s 'affiche bien mais la la gestion des erreurs ne s effectue pas

c'est surement une bêtise de code , le détail du détail

voici donc le morceau de code pour afficher la boite afin de rentrer l adresse mail
et l'affichage des erreurs (a mon avis l affichage des erreurs ne devraient pas ce trouver la ...)
voici donc index-test.php

Code : Tout sélectionner

<div class="card-defaut text-center" style="height:100%; "> <div class="card-block"> <div class="card h-100"> <div class="login-form"> <?php if(isset($_GET['reg_err'])) { $err = htmlspecialchars($_GET['reg_err']); switch($err) { case 'success': ?> <div class="alert alert-success"> <strong>Succès</strong> inscription réussie ! <strong> <a href="connexion-site.php" target="_blank">A présent connectes toi ici</a> </strong> </div> <?php break; case 'email': ?> <div class="alert alert-danger"> <strong>Erreur</strong> Email non valide </div> <?php break; case 'email_length': ?> <div class="alert alert-danger"> <strong>Erreur</strong> Email trop long </div> <?php break; case 'pseudo_length': ?> <div class="alert alert-danger"> <strong>Erreur</strong> Compte déjà existant </div> <?php } } ?> <div class="container"> <form action="traitement-neuw-page-index.php" method="post"> <div class="row"> <div class="col-sm"> <p class="card-text" style ="font-size: 20px;text-align:center;margin-bottom:10px;" > Bonjour </p> </div> </div> <div class="row"> <div class="col-sm"> <input type="email" name="email" class="form-control" placeholder="Email" value="<?php echo $_SESSION['email'];?>" autocomplete="off" style="text-align:center;margin-bottom:10px;"> </div> </div> <div class="row"> <div class="col-sm"> <p class="card-text" style ="font-size: 20px;text-align:center;margin-bottom:10px;" > Abonne-toi pour ne rater aucun nouvel évènement </p> </div> </div> <div class="row"> <div class="col-sm"> <button type="submit" class="button" style= "font-size: 40px;text-align:center;" >Inscription</button> </div> </div> </form> </div> </div> </div> </div> </div> </div>

et ma page traitement-neuw-page-index.php

Code : Tout sélectionner

session_start(); ?> <?php require_once 'base.php'; if (!empty($_POST['email'])) { $email = htmlspecialchars($_POST['email']); $check = $bdd->prepare('SELECT email FROM neuw WHERE email = ?'); $check->execute(array( $email )); $data = $check->fetch(); $row = $check->rowCount(); if ($row == 0) { if (strlen($email) <= 100) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { $cost = ['cost' => 12]; $ip = $_SERVER['REMOTE_ADDR']; $insert = $bdd->prepare('INSERT INTO neuw( email) VALUES(:email)'); $insert->execute(array( 'email' => $email, )); //traitement de l envois par mail setlocale (LC_TIME, 'fr_FR.utf8','fra'); date_default_timezone_set('Europe/Brussels'); $date1 = date('d-m-Y H:i:s'); // Date du jour // on entre un ou Plusieurs destinataires $to = '[email protected]'; // notez la virgule // Sujet $subject= "NOUVEL ABONNE NEUWSLLETER "; // message $message = ' <html> <head> <title>un nouveau membre vient de s inscrire </title> </head> <body> <table> <tr> <td>son pseudo est </td><td>'.$email .'</td></br> </tr> <tr> <td>date</td><td>'.$date1 .'</td></br> </tr> </table> </body> </html> '; // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini $headers[] = 'MIME-Version: 1.0'; $headers[] = 'content-type: text/html; charset=utf-8'; // En-têtes additionnels //$headers[] = "From: " . $name . "<". $_POST["email"] .">\r\n"; $headers[] = 'From: '.$email."\r\n". 'Reply-To: '.$name."\r\n" . 'X-Mailer: PHP/' . phpversion(); // Envoi //var_dump($headers); if(mail($to, $subject, $message, implode("\r\n", $headers))){ // success message //echo "Success!<br />"; }else{ // error message //echo "Fail<br />"; } header('Location:redirection-inscription-neuw.php?reg_err=success'); die(); } else { header('Location: https://phil.pecheperle.be/index-test.php?reg_err=email'); die(); } } else { header('Location: https://phil.pecheperle.be/index-test.php?reg_err=email_length'); die(); } } else { header('Location: https://phil.pecheperle.be/index-test.php?reg_err=already'); die(); } }

Mammouth du PHP | 2703 Messages

18 févr. 2022, 19:52

Je remarque que pas mal d'utilisateur par reflexe ferme ce pop up par habitude
une popup, c'est donc plus compliqué pour le code et mal vu des utilisateurs.

avoir une page normale pour s'inscrire serait bien plus simple.

pour le faire en popup et afficher correctement le message d'erreur, il faut le faire en ajax, envoyer les données du formulaire au php et traiter en javascript le retour du php. avec par exemple https://api.jquery.com/jquery.post/

Mammouth du PHP | 506 Messages

19 févr. 2022, 12:28

Merci pour la reponse
je vais aller voir