IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire de contact


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Formulaire de contact
    Bonjour à tous je suis nouveau sur le forum. Je débute également en PHP.
    J'ai un petit soucis avec ce bout de code. Quand je l’exécute sans la redirection à la fin vers la page de contact, le popup est bien là. Jusque ici tout va bien mais lorsque je rajoute la redirection le popup ne s'affiche pas. Je voudrais que la redirection se fasse après avoir fermé le popup. Si quelqu'un aurait une solution et pourrais m'expliquer mon erreur. Merci beaucoup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php 
     
    	if (isset($_POST) && isset($_POST['user_name']) && isset($_POST['user_mail']) && isset($_POST['user_subject']) && isset($_POST['user_message'])) {
     
    			extract($_POST);
    			if (!empty($user_name) && !empty($user_mail) && !empty($user_subject) && !empty($user_message) ) {
     
    					$user_message=str_replace("\'", "'", $user_message);
    					$destinataire = "monemail@domaine.com";
    					$sujet = "Formulaire de contacte du site";
    					$msg = "Une nouvelle question est arrivée \n
    							Nom : $user_name \n 
    							E-mail : $user_mail \n 
    							Sujet : $user_subject \n 
    							Message : $user_message ";
    					$entete = "De : $user_name \n Repondre : $user_mail";
     
    					mail($destinataire, $sujet, $msg, $entete);
    					header('Location: <a href="http://padeDeRemerciement.html&#39;);" target="_blank">padeDeRemerciement.html');</a>
    					exit();
     
    			}
    			else{
    				echo'<script type="text/javascript"> alert("Veuillez remplir tous les champs")</script>)';
    				header('Location: <a href="http://pageDeContact.html&#39;);" target="_blank">pageDeContact.html');</a>
    				exit();
    			}
    	}
     ?>

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour
    c'est si la redirection s'effectuait qu'il y aurait un probleme
    tu ne peux pas mettre un echo avant header
    il faut alors faire la redirection avec javascript si tu veux la popup

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: <a href="http://padeDeRemerciement.html');" target="_blank">padeDeRemerciement.html');</a>
    Tu es sûr de la syntaxe ?


  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Visiblement, c'est un traitement de formulaire, et je suppose que dans le cas de la popup, tu veux retourner sur la page du formulaire.
    La solution la plus simple, c'est de traiter le formulaire sur le même script que l'affichage et de faire la redirection uniquement en cas de réussite. Si il y a une erreur, on reste sur la page du script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    $messageErreur = "";
    if (isset($_POST) && isset($_POST['user_name']) && isset($_POST['user_mail']) && isset($_POST['user_subject']) && isset($_POST['user_message'])) {
        extract($_POST);
        if (!empty($user_name) && !empty($user_mail) && !empty($user_subject) && !empty($user_message)) {
            $user_message = str_replace("\'", "'", $user_message);
            $destinataire = "monemail@domaine.com";
            $sujet = "Formulaire de contacte du site";
            $msg = "Une nouvelle question est arrivée \n
                    Nom : $user_name \n 
                    E-mail : $user_mail \n 
                    Sujet : $user_subject \n 
                    Message : $user_message ";
            $entete = "De : $user_name \n Repondre : $user_mail";
            mail($destinataire, $sujet, $msg, $entete);
            header('Location: http://padeDeRemerciement.html');
            exit();
        }
        else {
            $messageErreur  = "Veuillez remplir tous les champs";
        }
    }
    // ici on écrit le formulaire (directement ou par un include)
    ?>
    <form>...</form>
    <?
    // on oublie pas le message d'erreur
    if (!empty($messageErreur)) {
        echo'<script type="text/javascript"> alert("'.$messageErreur.'")</script>)';
    }
    Au passage, quelques remarques :
    $_POST est une super-globale qui est toujours renseigné (à vide si rien n'est envoyé), donc isset($_POST) est toujours vrai. Tu peux éventuellement tester !empty($_POST) pour voir si des données sont reçues.
    Utiliser extract sur $_POST (ou $_GET, $_REQUEST, $_COOKIES...) est une mauvaise idée, car ça ouvre une faille de sécurité. Imagine que tu as une variable $admin = false en début de ton script. Il suffit à un utilisateur mal intentionné d'ajouter un champ au formulaire et hop, variable écrasée par ce qu'il veut. Si tu veux le faire, utilise au moins le flag EXTR_SKIP qui empêche une variable existante d'être écrasée : extract($_POST, EXTR_SKIP);.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Le premier

    tu peux l'enlever si tu testes tout les autres

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour vos réponse le formulaire fonctionne, mais je ne reçois pas le mail que le formulaire est censé envoyer. Si quelqu'un sait pourquoi? merci d'avance.

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/01/2006, 07h23
  2. [Formulaire] de contact
    Par inferno66667 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2005, 19h32
  3. Prob avec formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2005, 18h53
  4. Prob avec PHP sur le formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 17h06
  5. Problème d'accès formulaire de contact
    Par Mystic26 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2005, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo