tutoriel PHP : formulaire de contact

Par Vincent Dumortier, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

<?php

     <?php

$errors = array(); / tableau qui contient mes erreurs /

/ si le champ nom n'existe pas ou n'est pas rempli alors message d'erreur /
if (!array_key_exists('name', $_POST) || $_POST['name'] ==''){
$errors['name'] = "Vous n'avez pas renseigné votre nom";
}
/ si le champ email n'existe pas ou n'est pas rempli alors message d'erreur /
if (!array_key_exists('email', $_POST) || $_POST['email'] ==''){
$errors['email'] = "Vous n'avez pas renseigné votre email";
}
/ si le champ société n'existe pas ou n'est pas rempli alors message d'erreur /
if (!array_key_exists('societe', $_POST) || $_POST['societe'] ==''){
$errors['societe'] = "Vous n'avez pas renseigné votre société";
}
/ si le champ ville n'existe pas ou n'est pas rempli alors message d'erreur /
if (!array_key_exists('ville', $_POST) || $_POST['ville'] ==''){
$errors['ville'] = "Vous n'avez pas renseigné votre ville";
}
/ si le champ message n'existe pas ou n'est pas rempli alors message d'erreur /
if (!array_key_exists('message', $_POST) || $_POST['message'] ==''){
$errors['message'] = "Vous n'avez pas renseigné votre message";
}

/ si mon tableau n'est pas vide et qu'il renvoie des erreur, alors on retourne sur la page précédante/
if(!empty($errors)){
/ je sauvegarde mes erreurs dans une session pour informer l'utilisateur/
session_start();
$_SESSION['errors'] = $errors;
/ et je retourne à la page précédante /
header('Location: index.php');
}
/Sinon on traite les données envoyés /
else{
$message = $_POST['message'];
$headers = 'FROM: testwamp59700@gmail.com';
mail('testwamp59700@gmail.com', 'Formulaire de contact', $message, $headers);
}

Décrivez ici votre code ou ce que vous cherchez à faire
Voilà mon soucie c'est que je rencontre un soucie de boucle infinie je pense car j'ai ce message d'erreur

<?php session_start(); ?><!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Website pika pika</title> <!--font --> <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> <!-- mon css--> <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/style.css"> </head> <!-- site content --> <body> <?php include('post_contact.php'); ?> <!-- header --> <header class="container-fluid header"> <div class="container"> <a href="#" class="logo"> pikapika pika Website </a> <nav class="menu"> <a href="#"> Accueil</a> <a href="#about"> A propos</a> <a href="#portfolio"> Portfolio</a> <a href="#contact"> Contact</a> </nav> </div> </header> <!-- end header--> <!-- banner--> <section class="container-fluid banner"> <div class="ban"> <img src="img/banner.jpg" alt="bannière du site" /> </div> <div class="inner-banner"> <h1>Bienvenue sur mon portfolio</h1> <button class="btn btn-custom">Contactez moi !</button> </div> </section> <!-- end banner--> <!-- about --> <section class="container-fluid about"> <div class="container"> <div class="row"> <h2 id="about">A propos de moi</h2> <hr class="separator"> <article class="col-md-4 col-lg-4 col-xs-12 col-sm-12"> <h2>Etudes</h2> <p>osodqsonqokqdjDQOSDQSODJQSOFQSOFQ DQSODQOSDQSODQOSDQOSDQSDOQSODQSODNUD OQSDNQOSNDQOSDNDGHDSFHSDHDSHSDHSDHUD GHSDHSDHGHDHDHDHSDHDHDSHDHDHDHDSHSDD HDHSDFHDHDHDHDQOSDNQSONDKQMLFKQMFKDD </p> </article> <article class="col-md-4 col-lg-4 col-xs-12 col-sm-12"> <h2>Experiences</h2> <p>osodqsonqokqdjDQOSDQSODJQSOFQ DQSODQOSDQSODQOSDQOSDQSDOQSODQSO OQSDNQOSNDQOSDNDGHDSFHSDHDSHSDHS GHSDHSDHGHDHDHDHSDHDHDSHDHDHDHDS HDHSDFHDHDHDHDQOSDNQSONDKQMLFKQM </p> </article> <article class="col-md-4 col-lg-4 col-xs-12 col-sm-12"> <h2>Hobbies</h2> <p>osodqsonqokqdjDQOSDQSODJQSOFQ DQSODQOSDQSODQOSDQOSDQSDOQSODQSO OQSDNQOSNDQOSDNDGHDSFHSDHDSHSDHS GHSDHSDHGHDHDHDHSDHDHDSHDHDHDHDS HDHSDFHDHDHDHDQOSDNQSONDKQMLFKQM </p> </article> </div> </div> </section> <!-- end about --> <!-- portfolio --> <section class="container-fluid portfolio"> <div class="container"> <h2 id="portfolio">Mon portfolio</h2> <hr class="separator"> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> <article class="col-md-3 col-lg-3 col-xs-12 col-sm-12 item-folio"> </article> </div> </section> <!-- end portfolio--> <!-- footer / contact --> <footer class="container-fluid footer"> <div class="container"> <h2 id="contact">Contactez moi</h2> <hr class="separator"> <div class="starter-template"> <?php if(array_key_exists('errors', $_SESSION)): ?> <div class="alert alert-danger"> <?php echo implode("<br>", $_SESSION['errors']); ?> </div> <!--enleve le message d'erreur une fois la page raffraichie --> <?php unset($_SESSION['errors']); endif; ?> <form action="post_contact.php" method="POST"> <div class="row"> <div class="col-xs-6"> <div class="form-group"> <label for="inputname">Votre nom</label> <input type="text" name="name" class="form-control" id="inputname"> </div> </div> <div class="col-xs-6"> <div class="form-group"> <label for="inputemail">Votre email</label> <input type="text" name="email" class="form-control" id="inputemail"> </div> </div> <div class="col-xs-6"> <div class="form-group"> <label for="inputsociete">Votre société</label> <input type="text" name="societe" class="form-control" id="inputsociete"> </div> </div> <div class="col-xs-6"> <div class="form-group"> <label for="inputville">Votre ville</label> <input type="text" name="ville" class="form-control" id="inputville"> </div> </div> <div class="col-xs-12"> <div class="form-group"> <label for="inputmessage">Votre message</label> <textarea id="inputmessage" name="message" class="form-control"></textarea> </div> <button type="submit" class="btn btn-primary">Envoyer</button> </div> </div> </form> </div> </div> </footer> <!-- end footer / contact --> </body> </html>

Ce que je veux c'est trouver une solution à ce probleme, je suis le tuto pas à pas mais vraissemblablement j'ai fait une betise!

Décrivez ici ce Jque vous cherchez à obtenir

Ce que j'obtiens

DécriveCette page ne fonctionne pas

localhost vous a redirigé à de trop nombreuses reprises.
Essayez de supprimer les cookies..
ERR_TOO_MANY_REDIRECTSz ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

8 réponses

SLK, il y a 8 ans

Salut,

si tu as une boucle infinie, c'est qu'il y a un (ou plusieurs) header('Location: ...') quelque part qui forme(nt) une boucle.
Mais dans ton code on en voit pas.
Le code que tu montres ne nous avance à rien pour résoudre le problème.

J'espère que quelqu'un pourra t'aider (une fois qu'on verra le code adéquat) parce-que moi je vais dormir là, et je ne pourrai pas me connecter pendant 3 jours.
Bon courage.

JoHuv, il y a 8 ans

Salut ! Comme le demande SLK, tu peux afficher ton code, que l'on puisse voir aussi ton Header ?

Vincent Dumortier, il y a 8 ans

Merci pour vos reponses et desolé d'avoir mis un peu de temps à editer mon code, je l'ai mis dans sa gobalité, ma page index avec mon code html et php et ma page contact qui contient mon code php propre au formulaire, merci, pour rappel j'ai un probleme de boucle infinie et etant novice encore en php je ne parviens pas à trouvé l'erreur.

Carouge10, il y a 8 ans

Pourquoi inclure post_contact si au moment de valider ton formulaire, tu vas sur ce même fichier ?

JoHuv, il y a 8 ans

Peu-être une annerie, mais
Est-tu sur de ton include ? c'est pas

require 'post_contact.php';

?

Vincent Dumortier, il y a 8 ans

Oui j'ai testé avec require et maheresement le soucie n'a pas l'air de venir de là :/

Guique, il y a 8 ans

Bonjour Vincent,

Comme te l'a dit Carouge10, ton problème vient du fait que tu rediriges vers index.php alors que 'post_contact.php' est déjà inclu dans ta page.
Il faut que tu vois le require comme un morceau de code qui vient s'ajouter au code dans lequel il est appelé.
post_contact.php est executé à chaque fois que tu te rends sur index.php, tu n'as pas donc pas besoin de rediriger puisque tu es sur cette page.
Il faut choisir entre l'un ou l'autre.

Vincent Dumortier, il y a 8 ans

c'etait aussi simple que sa! je n'y crois pas effectivement vous avez totalement raison en suprimant mon include dans la page index cela fonctionne correctement merci beaucoup à tous de m'avoir aidé, par contre ce qui me chiffonne encore malgrés le fait que cela marche c'est que dans le tuto de grafikart il ne retire pas le include celui ci est toujours present alors ai-je mal suivit ou recopié il faudra que je verifie mais merci a tous encore!