8741 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

J'apprends depuis 1 an l'utilisation des codes php...
Cependant, je suis bloquée depuis une dizaine de jours sur la récupération des champs de mon formulaire.
C'est-à-dire que je reçois l'email, mais aucun contenu.
upload/62212-MAILRECU.png

Y aurait-il une bonne âme pour m'aider... ? J'ai beau à lire différent tuto... Changer mon code... Mais rien à faire...
Car je deviens complètement folle.

Code PHP :

    <?php    
    header('Content-type: application/json');   
    $status = array(   
    'type'=>'success',   
    'message'=>'Thank you for contact us. As early as possible  we will contact you      
    );
     
    $name = @trim(stripslashes($_POST['name'])); 
    $email = @trim(stripslashes($_POST['email'])); 
    $subject = @trim(stripslashes($_POST['subject'])); 
    $message = @trim(stripslashes($_POST['message'])); 
     
  
        $email_from = $email;
        $email_to = 'daa.graphiste@skynet.be';//replace with your email
        $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
        $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
     
     
        echo json_encode($status);
        die;


Code HTML :

                <div class="col-md-4 col-sm-12">
                    <div class="contact-form bottom">
                        <h2>Send a message</h2>
                        <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
                            <div class="form-group">
                                <input type="text" name="name" class="form-control" required="required" placeholder="Name">
                            </div>

                            <div class="form-group">
                                <input type="email" name="email" class="form-control" required="required" placeholder="Email Id">
                            </div>
 
                            <div class="form-group">
                                <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea>
                            </div>                        
 
                            <div class="form-group">
                                <input type="submit" name="submit" class="btn btn-submit" value="Submit">
                            </div> 
                        </form>
                    </div>
                </div>


Merci Smiley smile
Modifié par Daa (16 Jun 2016 - 15:06)
En te relisant (et surtout le code PHP) tu vois la différence de couleur dut à un oublier de quote.

'Thank you for contact us. As early as possible  we will contact you      


il manque la quote de fermeture.
JENCAL a écrit :
En te relisant (et surtout le code PHP) tu vois la différence de couleur dut à un oublier de quote.

'Thank you for contact us. As early as possible  we will contact you      


il manque la quote de fermeture.


Bonjour, merci Smiley smile
Malgré cet ajout cela ne change rien...
Je reçois bien l'email mais pas le contenu de mon formulaire...
Bonjour Daa,

Je suppose que n'apparaît aucun message d'erreur.

Ce ne serait pas étonnant au vu que tu as truffé ton code d'arobas.

L'arobas indique de ne pas afficher les erreurs Php mais cela ne signifie pas qu'il n'y en a pas. L'appposer est à mon sens une mauvaise pratique car nous ne devrions pas avoir besoin de les masquer mais plutôt de faire en sorte qu'elles n'existent pas.

Je te suggère donc de prime abord de supprimer ces arobas.

Ensuite je constate que tu définis une variable $subject sensée contenir la valeur homonyme envoyée par ton formulaire. Or il apparaît, ou plutôt, il n'apparaît pas de champs portant ce nom dans le formulaire donc $subject = null (sans l'arobas, le parser te l'aurait signalé Smiley cligne ).

Donc, maintenant que tu as corrigé ceci, quel statut a ton problème ?
Modifié par Greg_Lumiere (17 Jun 2016 - 11:07)
Greg_Lumiere a écrit :

Donc, maintenant que tu as corrigé ceci, quel statut a ton problème ?


Bonjour Greg,

Merci pour cette petite leçon..
Effectivement, je ne comprenais pas cette utilisation mais à force de changer 36x 56x 10000x mon code avec d'autres tuto... Je suis arrivée à ça...

Voici ce que je reçois :
upload/62212-TEST.png

Et je pense avoir effectuer tous les changements que vous m'avez indiquer :


    <?php
    header('Content-type: application/json'); 
    $status = array(  
    'type'=>'success', 
    'message'=>'Thank you for contact us. As early as possible we will contact you');
     
    $name = trim(stripslashes($_POST['name'])); 
    $email = trim(stripslashes($_POST['email']));  
    $message = trim(stripslashes($_POST['message'])); 
     
  
        $email_from = $email;
        $email_to = 'daa.graphiste@skynet.be';//replace with your email
     
     
        $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Message: ' . $message;
 
        $success = @mail($email_to, $body, 'From: <'.$email_from.'>');
     
     
        echo json_encode($status);
        die;


Même si j'enlève complètement le @mail ça fait la même chose ...
Je suis vraiment désolée du dérangement...
Modifié par Daa (17 Jun 2016 - 11:31)
Re,


Peux-tu faire une petite

var_dump($_POST);
exit();


Tu devrais avoir un résultat dans ta fenetre du navigateur avec ce qui se trouve dans post, mais il m'a l'air vide..

et ton $body est null également.
Modifié par JENCAL (17 Jun 2016 - 11:36)
Daa a écrit :
Je pense avoir effectuer tous les changements que vous m'avez indiquer
Pas tout à fait, il reste @mail dont on se fiche éperduement dans le cas qui nous occupe vu que tu reçois le mail. Toutefois pense à le virer et à tester la réussite de l'envoi par une conditionnelle : plus propre, plus efficace et plus de plus pour moins de moins (+2+pour-2-).



        $success = @mail($email_to, $body, 'From: &lt;'.$email_from.'&gt;');
C'est ici que le bas blesse.
La syntaxe de la fonction mail est la suivante :
mail ( destinataire, sujet, corps de texte, en-têtes (facultatives) )T'as vu la truffe ?
Heuuuu....

Je commence à être perdue... C'est fait Smiley rolleyes Smiley biggol
Je vais relire calmement et essayez d'effectuer des changements correctes...

Merciiiiii Smiley confused
Modifié par Daa (17 Jun 2016 - 11:39)
Au passage et hors sujet mais il me semble que la fonction die est morte. Dépréciée quoi. Son équivalent est exit().
Greg_Lumiere a écrit :
Au passage et hors sujet mais il me semble que la fonction die est morte. Dépréciée quoi. Son équivalent est exit().


D'accord, je regarde ça...

Et je reviens vers vous avec les changements effectués.

Merci à vous deux Smiley cligne Smiley smile
Greg_Lumiere a écrit :
Au passage et hors sujet mais il me semble que la fonction die est morte. Dépréciée quoi. Son équivalent est exit().


Je crois que je vais ... arrêter là ^^

Je ne reçois plus rien maintenant...
J'ai changé ceci... je crois que je ne suis pas faite pour le php ^^


        $success = (mail($name, $email, $message, $body));
     
     
        echo json_encode($status);
     
        exit();
Daa a écrit :
Je ne reçois plus rien maintenant...
J'ai changé ceci... je crois que je ne suis pas faite pour le php ^^
Ne te décourage pas, le plus dur est derrière maintenant c'est juste des corrections de dernière minute à appliquer. Tu vas voir, ça va le faire.

La correction que tu as faîtes est... presque bonne.
Tu as écris $success = (mail($name, $email, $message, $body));
au lieu de $success = mail($name, $email, $message, $body);

Tu vois, c'est pas bien méchant, juste une paire de parenthèse.

Fais une pause, un bon repas, une digestion correcte (20min au repos) et tu vas voir que tu y verras plus clair.
Modifié par Greg_Lumiere (17 Jun 2016 - 12:00)
Heu... tu as remplacé $name_to par $mail, c'est ça ?
Donc ton $email = sujet du mail
$message = au contenu du mail
et $body à tes en-têtes ?

J'ai l'impression que les pinceaux sont mélangés... Smiley decu

Oublie les en-têtes pour le moment et concentre-toi sur l'instruction mail ( destinataire, sujet, message).
Tu dois préalablement maîtriser ces 3 variables (dest, sujet et message).
Modifié par Greg_Lumiere (17 Jun 2016 - 12:06)
Greg_Lumiere a écrit :
Heu... tu as remplacé $name_to par $mail, c'est ça ?
Donc ton $email = sujet du mail
$message = au contenu du mail
et $body à tes en-têtes ?

J'ai l'impression que les pinceaux sont mélangés... Smiley decu


Je crois que mon cerveau a bien tout mélangé Smiley lol Je préfère en rire qu'en pleurer... Mais je dois vous avouez que là je m'y perds...


     <?php
    header('Content-type: application/json');
    $status = array(
    'type'=>'success',
    'message'=>'Thank you for contact us. As early as possible we will contact you');
     
    $name = trim(stripslashes($_POST['name'])); 
    $email = trim(stripslashes($_POST['email']));  
    $message = trim(stripslashes($_POST['message'])); 
     
  
        $email_from = $email;
        $email_to = 'daa.graphiste@skynet.be';//replace with your email
     
     
        $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Message: ' . $message;
     
     
        $success = mail($name, $email, $message, $body);
     
     
        echo json_encode($status);   
        exit();
mail ( $email_to, 'Chouette j\'ai un message', $body );
Modifié par Greg_Lumiere (17 Jun 2016 - 12:10)
Ta déclaration $email_from est obsolète aussi.

Je comprends t'as mis ça pour t'y retrouver mais tu n'as pas répercuté la modification donc inutile.
Greg_Lumiere a écrit :
mail ( $email_to, 'Chouette j\'ai un message', $body );


Petit email envoyé Smiley smile
Daa a écrit :


Petit email envoyé Smiley smile
Smiley clapclap

Maintenant tu vas pouvoir t'attacher aux en-têtes.

Alors t'y vas molo, hein ? Tu teste une par une et tu regarde à chaque mail reçu si l'info est bien transmise, ok ?
Greg_Lumiere a écrit :
Smiley clapclap

Maintenant tu vas pouvoir t'attacher aux en-têtes.

Alors t'y vas molo, hein ? Tu teste une par une et tu regarde à chaque mail reçu si l'info est bien transmise, ok ?


Re Smiley smile

Bon... J'ai revu un peu mon code...
Mais ça n'est tjs pas ça, il m'affiche dans mon email le header..


<?php

$name = utf8_decode($_POST['name']); 
$email = utf8_decode($_POST['email']); 
$message = utf8_decode($_POST['message']); 
$to = 'daa.graphiste@skynet.be';//replace with your email

$mail_corps .= "Message de : $name\n";
$mail_corps .= "Email : $email\n"; 
$mail_corps .= "Contenu : $message";
$mail_corps .= $comments;

$header .= "From: $email";
$header .= "Reply-to: $email";
$header .= "MIME-Version: 1.0";
$header .= "X-Priority: 3";
$header .= 'X-Mailer: PHP/';
$header .= "text/html";
$header .= "Charset: UTF-8";
$header .= "Content-Transfer-Encoding: 8bit";

$success = mail($to, $mail_corps, $header, $email);

?>
Daa a écrit :
Mais ça n'est tjs pas ça, il m'affiche dans mon email le header..
Tu n'as pas pus t'en empêcher, hein ? Il a fallut que revienne mettre une bêtise (de Cambrai) !

Regarde bien cette ligne
Daa a écrit :
$success = mail($to, $mail_corps, $header, $email);

Tu ne vois rien qui cloche ? T'as vraiment l'impression d'avoir suivie la syntaxe que je t'ai énoncé plus haut ?

T'as vraiment l'impression de respecter cette écriture ?
mail ( destinataire, sujet, corps-de-texte, en-têtes);

Je sais, je pose beaucoup de questions. Tu en as sûrement déduite les réponses, me tromperais-je ? (hé mince, encore une question Smiley cligne )
Modifié par Greg_Lumiere (17 Jun 2016 - 15:38)
Pages :