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 html, methode post, code php : variables vides


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Formulaire html, methode post, code php : variables vides
    Bonjour,

    J'ai téléchargé un template de site "one page".
    J'ai pu me l'approprier jusqu'à une certaine limite je l'avoue, raison pour laquelle je viens vers vous.
    Je voudrais envoyer un email grâce à un formulaire html avec une méthode post ; chose à priori simple et pourtant...

    D'une part, après divers test, je crois comprendre que le script php destinataire reçoit des variables vides, ou alors que rien n'est transmis. En tout cas les $_POST['name'] (par exemple) sont vides. Y a t-il des choses à faire pour qu'un post fonctionne qui ne serait pas bien effectué dans ce code ?

    D'autre part, je suis face à une véritable énigme, créée par l'inconnu. Je m'explique. Il y a à la fin de la balise <form> 2 div qui sont appelées et j'ai l'impression qu'elles s'affichent selon un résultat renvoyé par le code php destinataire du formulaire. Pourtant il n'y a pas de if dans le code html et je ne vois rien de très explicite, en tout cas je ne le comprends pas, dans le code php.

    Pourriez-vous m'aider à y voir clair svp ?

    Merci d'avance,

    Vince

    Mon code html :
    Code html : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <form>
        <div class="row">
            <div class="col-lg-4">
                <address>
                    <div class="address-row">
                        <div class="address-sign">
                            <i class="icon-map-marker"></i>
                        </div>
                        <div style="address-info">
                            <b>Single Page Responsive Template</b>,<br>
                            Using Twitter Bootstrap 3,<br>
                            EGrappler.com
                        </div>
                    </div>
                </address>
                <div class="visible-xs visible-sm">
                    <br class="gap-30" />
                    <hr class="gap-divider" />
                    <br class="gap-30" />
                </div>
            </div>
            <div class="col-lg-7 col-lg-offset-1">
                <form method="post" action="send_form_email.php" id="contactform">
                    <div class="form-group">
                        <div class="row">
                            <div class="col-lg-6">
                                <input type="text" class="form-control" id="name" name="name" placeholder="Your Name *"><br class="gap-15" />
                            </div>
                            <div class="col-lg-6">
                                <input type="text" class="form-control" id="email" name="email" placeholder="Your Email *">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <textarea class="form-control" id="message" name="message" rows="8"></textarea>
                    </div>
                        <button id="button-send" class="btn btn-block btn-success" type="submit" form="contactform">
                        Send Message Now
                        </button>
                        <div id="success">
                            Your message has been sent successfully!</div>
                        <div id="error">
                            Unable to send your message, please try later.</div>
                        </form>
                    </div>
                </div>
            </form>
        </div>
    </div>

    Mon code php :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
     
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
     
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $send_email_to = "monemail@yahoo.fr";
    $email_subject = "Pre-inscription a Pay Fair";
    function send_email($name,$email,$email_message){
      global $send_email_to;
      global $email_subject;
      $headers = "MIME-Version: 1.0" . "\r\n";
      $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
      $headers .= "From: ".$email. "\r\n";
      $message = "<strong>Email = </strong>".$email."<br>";
      $message .= "<strong>Name = </strong>".$name."<br>";  
      $message .= "<strong>Message = </strong>".$email_message."<br>";
      @mail($send_email_to, $email_subject, $message,$headers);
      return true;
    }
     
    function validate($name,$email,$message){
      $return_array = array();
      $return_array['success'] = '1';
      $return_array['name_msg'] = '';
      $return_array['email_msg'] = '';
      $return_array['message_msg'] = '';
      if($email == ''){
        $return_array['success'] = '0';
        $return_array['email_msg'] = 'Saisissez votre email svp';
            mail("vincentmarce@yahoo.fr","erreur","Saisissez votre email svp");
      }
      else{
        $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
        if(!preg_match($email_exp,$email)) {
          $return_array['success'] = '0';
          $return_array['email_msg'] = 'Saisissez un email valide svp';  
              mail("vincentmarce@yahoo.fr","erreur","Saisissez un email valide svp");
        }
      }
      if($name == ''){
        $return_array['success'] = '0';
        $return_array['name_msg'] = 'Saisissez votre nom svp';
            mail("vincentmarce@yahoo.fr","erreur","Saisissez votre nom svp");
      }
      else{
        $string_exp = "/^[A-Za-z .'-]+$/";
        if (!preg_match($string_exp, $name)) {
          $return_array['success'] = '0';
          $return_array['name_msg'] = 'Saisissez un nom valide svp';
              mail("vincentmarce@yahoo.fr","erreur","Saisissez un nom valide svp");
        }
      }
     
      if($message == ''){
        $return_array['success'] = '0';
        $return_array['message_msg'] = 'Saisssez un message svp';
            mail("vincentmarce@yahoo.fr","erreur","Saisissez votre message svp");
      }
      else{
        if (strlen($message) < 2) {
          $return_array['success'] = '0';
          $return_array['message_msg'] = 'Saisissez un message valide svp';
              mail("vincentmarce@yahoo.fr","erreur","Saisissez un message valide svp");
        }
      }
      return $return_array;
    }
    $return_array = validate($name,$email,$message);
     
    if($return_array['success'] == '1'){
            mail("vincentmarce@yahoo.fr","succes","message");
            send_email($name,$email,$message);
    }
    header('Content-type: text/json');
    echo json_encode($return_array);
    die();
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Retire le premier <form> qui n'a pas d'attributs et le dernier </form>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci, j'ai tenté. Mais cela ne change rien. J'ai toujours le message qui s'affiche "Unable to send your message, please try later". Et les emails de test que je reçois m'indiquent que le code php passe par les cas où les variables sont vides...

    Vince

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Met un input au lieu d'un button pour le submit.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui c'est ce que je pensais faire en dernier recours. Mais j'aimerais vraiment comprendre ce code. Je le trouve bien pensé et esthétique, j'aimerais apprendre.

    Merci,

    Vince

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    Bonjour,

    tu peux essayer de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $name = $_REQUEST['name'];
    $email = $_REQUEST['email'];
    $message = $_REQUEST['message'];
    peut etre ton ajax submit du get

  7. #7
    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
    M'est avis qu'il nous manque un élément. Par exemple, est-ce que tout ce schmilblick fonctionne avec un framework JS ?

    ça peut servir d'ajouter un var_dump($_POST) au début de ton script PHP histoire de voir si il y a effectivement des choses qui arrivent.
    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]

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui c'est ce que je pensais faire en dernier recours. Mais j'aimerais vraiment comprendre ce code. Je le trouve bien pensé et esthétique, j'aimerais apprendre.
    Certes mais est-ce que ça marche ou non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    @selmouadin

    Merci,

    Je ne connaissais pas $_REQUEST.
    J'ai tenté ma pas mieux.

    Vince

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Certes mais est-ce que ça marche ou non ?
    Oui ça a marché. Enfin c'est assez bizarre : je reçois bien l'email mais j'ai aussi une fenêtre qui s'ouvre pour me demander si je veux télécharger mon fichier php qui est destinataire de mon formulaire...

    Vince

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Celira Voir le message
    M'est avis qu'il nous manque un élément. Par exemple, est-ce que tout ce schmilblick fonctionne avec un framework JS ?

    ça peut servir d'ajouter un var_dump($_POST) au début de ton script PHP histoire de voir si il y a effectivement des choses qui arrivent.
    Mon schmilblick fonctionne avec du js oui. Framework, j'avoue ne pas savoir trop ce que c'est.

    Voici les appels en fin de ma page html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
        <script type="text/javascript" src="js/bootstrap.min.js"></script>
        <script type="text/javascript" src="js/jquery.smooth-scroll.min.js"></script>
        <script type="text/javascript" src="js/jquery.mixitup.min.js"></script>
        <script src="js/jquery.easing.1.3.js" type="text/javascript"></script>
        <script src="js/modernizr.js" type="text/javascript"></script>
        <script src="js/jquery.fancybox.pack.js" type="text/javascript"></script>
        <script type="text/javascript" src="js/custom.js"></script>
    	<script type="text/javascript" src="js/toggle.js"></script>

    Par ailleurs, j'ai trouvé cela, mais qui me dépasse un peu, dans le custom.js :
    Code javascript : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    $(function () {
        $('a.folio').fancybox();
        $('#portfolio').mixitup();
     
        $('.nav-tabs a').click(function (e) {
            e.preventDefault();
            $(this).tab('show');
        })
        $('.navbar-nav a').click(function (e) {
            e.preventDefault();
            $(this).parent('li').toggleClass('active');
            $(this).parent('li').siblings('.active').removeClass('active');
        })
     
        $('.header .navbar-nav a').smoothScroll();
     
        $('#jump2top').css('bottom', '-100px');
        $(window).scroll(function () {
            var btn = $('#jump2top');
            if ($(this).scrollTop() > 100) {
                btn.stop().animate({ 'bottom': '0' }, 200);
            } else {
                btn.stop().animate({ 'bottom': '-100px' }, 200);
            }
        });
     
        $('#jump2top').smoothScroll();
     
        //setup email here
        $('#button-send').click(function (event) {
            $('#button-send').html('Sending E-Mail...');
            event.preventDefault();
     
            $.ajax({
                type: 'POST',
                url: 'send_form_email.php',
                data: $('#contact_form').serialize(),
                success: function (html) {
                    if (html.success == '1') {
                        $('#button-send').html('Send E-Mail');
                        $('#success').show();
                    }
                    else {
                        $('#button-send').html('Send E-Mail');
                        $('#error').show();
                    }
                },
                error: function () {
                    $('#button-send').html('Send E-Mail');
                    $('#error').show();
                }
            });
     
        });
     
    });
     
    function scrollTo(elem) {
        $('body,html').animate({
            scrollTop: elem.offset().top
        }, 500);
    }
     
    function valemail(email) {
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    }

    Merci pour le déplacement

Discussions similaires

  1. je veut afficher un formulaire html avec echo de php
    Par lunick dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2011, 17h23
  2. [debutant]Simuler un formulaire html => methode post
    Par Emcy dans le forum Services Web
    Réponses: 7
    Dernier message: 15/04/2009, 16h11
  3. Réponses: 3
    Dernier message: 08/01/2009, 14h44
  4. [HTML] Inclure un code php dans une page html
    Par sanddddy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/07/2007, 17h44
  5. Appel d'une page avec la methode POST depuis php
    Par QuantuX dans le forum Langage
    Réponses: 9
    Dernier message: 04/08/2006, 12h45

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