[RESOLU] problème formulaire envoi mail

Eléphant du PHP | 320 Messages

22 sept. 2023, 11:07

Bonjour !

Je n'arrive pas à expédier un email avec ce formulaire pourtant très basique :oops:
     <form name="contact_form" method="post" action="">
    <table width="500">
    <tr>
     <td valign="top">
      <label for="pseudo">PSEUDO *</label>
     </td>
     <td valign="top">
      <input  type="text" name="nom" maxlength="50" size="30" value="<?php if (isset($_POST['pseudo'])) echo htmlspecialchars($_POST['pseudo']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="email">EMAIL *</label>
     </td>
     <td valign="top">
      <input  type="text" name="email" maxlength="80" size="30" value="<?php if (isset($_POST['email'])) echo htmlspecialchars($_POST['email']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="message">DEMANDE *</label>
     </td>
     <td valign="top">
      <textarea  name="message" cols="28" rows="10"><?php if (isset($_POST['message'])) echo htmlspecialchars($_POST['message']);?></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value=" Envoyer ">
     </td>
    </tr>
    </table>
    </form>
</body>
</center>
</html>
<?php        
//si le bouton envoyer a été cliqué  
if (isset($_POST["envoyer"])){   
//on recupère le nom  
$pseudo = $_POST["pseudo"];  
//on recupère l'adresse email  
$email = $_POST["email"];      
//on recupère le message  
$message = $_POST["message"];  
$to = "[email protected]";      
$headers = "From:" . $pseudo . " " . $pseudo ." " . $email;    
//on envoie le message avec la fonction mail  
if (mail($to,$message,$headers))   
//si le message a été envoyé, on le confirme  
{   
echo " ton message est bien envoyé.";    
}   
//sinon on n'affiche un message d'erreur  
else   
{   
echo "Une erreur s'est produite";   
}   
}   
?>     

ynx
Mammouth du PHP | 586 Messages

22 sept. 2023, 11:36

Bonjour,

<input  type="text" name="nom"...
La variable $_POST['pseudo'] n'existe pas puisque l'attribut name de ton input est "nom"

if (mail($to,$message,$headers))
Le 2e paramètre de la fonction mail est le sujet et pas le message
https://www.php.net/manual/fr/function.mail.php

Eléphant du PHP | 320 Messages

23 sept. 2023, 01:21

ok pour "nom" (erreur de copier coller).
J'avais mis $message comme variable et nom du champ dans le formulaire...

Ca ne fonctionne toujours pas.

     <form name="contact_form" method="post" action="">
    <table width="500">
    <tr>
     <td valign="top">
      <label for="pseudo">PSEUDO *</label>
     </td>
     <td valign="top">
      <input  type="text" name="pseudo" maxlength="50" size="30" value="<?php if (isset($_POST['pseudo'])) echo htmlspecialchars($_POST['pseudo']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="email">EMAIL *</label>
     </td>
     <td valign="top">
      <input  type="text" name="email" maxlength="80" size="30" value="<?php if (isset($_POST['email'])) echo htmlspecialchars($_POST['email']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="sujet">DEMANDE *</label>
     </td>
     <td valign="top">
      <textarea  name="sujet" cols="28" rows="10"><?php if (isset($_POST['sujet'])) echo htmlspecialchars($_POST['sujet']);?></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value=" Envoyer ">
     </td>
    </tr>
    </table>
    </form>
</body>
</center>
</html>
<?php        
//si le bouton envoyer a été cliqué  
if (isset($_POST["envoyer"])){   
//on recupère le nom  
$pseudo = $_POST["pseudo"];  
//on recupère l'adresse email  
$email = $_POST["email"];      
//on recupère le message  
$sujet = $_POST["sujet"];  
$to = "[email protected]";      
$headers = "From:" . $pseudo . " " . $pseudo ." " . $email;    
//on envoie le message avec la fonction mail  
if (mail($to,$sujet,$headers))   
//si le message a été envoyé, on le confirme  
{   
echo " ton message est bien envoyé.";    
}   
//sinon on n'affiche un message d'erreur  
else   
{   
echo "Une erreur s'est produite";   
}   
}   
?>     
J'ai pas un soucis à la ligne $headers.... (quote vs double quotes)?

Mammouth du PHP | 2630 Messages

23 sept. 2023, 15:16

if (isset($_POST["envoyer"])){
cela rentre dans ce if ?

Eléphant du PHP | 320 Messages

24 sept. 2023, 00:00

ben oui...

Eléphant du PHP | 320 Messages

24 sept. 2023, 00:45

j'ai refais un script minimaliste
if (isset($_POST["envoyer"])){   

    $to = "[email protected]";

    $subject = 'Demande postée par envoi formulaire  sur jeu en ligne';

    $from = $_POST["email"];

    $message = $_POST["msg"];

    $headers = "From: $from";


    if (mail($to, $subject, $message, $headers)) {

        $responseText = 'Mail sent successfully.';

    } else {

        $responseText = 'Unable to send mail. Please try again.';

    }
}
?>
et toujours rien qui s'affiche.
(ca serait pas à tout hasard au niveau de l'hebergeur ou soucis dans php.ini?)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9661 Messages

24 sept. 2023, 12:29

D'un autre côté, c'est normal que rien ne s'affiche puisque ton script ne demande à aucun moment d'afficher quelque chose :-D
Peut être ajouter echo $responseText ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 320 Messages

25 sept. 2023, 11:08

<?php
session_start();
require_once 'config.php';
$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
 
if (isset($_POST["envoyer"])){   

    $to = "[email protected]";

    $subject = 'Demande postée par email sur jeu en ligne';

    $from = $_POST["email"];

    $message = $_POST["msg"];

    $headers = "From: $from";


    if (mail($to, $subject, $message, $headers)) {

      $responseText = 'Mail sent successfully.';
	  echo $responseText;

    } else {

        $responseText = 'Unable to send mail. Please try again.';
echo $responseText;
    }
}
?>

toujours une page blanche.

Mammouth du PHP | 2630 Messages

25 sept. 2023, 11:24

ben oui...
qu'avez-vous fait pour affirmer cela ?

ynx
Mammouth du PHP | 586 Messages

25 sept. 2023, 12:01

Page blanche : vérifier les logs et/ou activer l'affichage des erreurs
tutoriels/page-blanche-script-php-comme ... 73178.html