EDIT : Solution trouvée, 1&1 aurait un filtre anti-abus (à confirmer), donc testez vos formulaires avec de vraies coordonnées !

Bonjour à tous !

Je suis en train de coder le site de mon groupe de musique et j'en suis presque au bout, mais je rencontre un obstacle. Je précise que je suis chez 1&1, offre Unlimited Linux, et que j'ai activé PHP 5.5 sur mon domaine. Et surtout, je précise que je suis un noob qui a appris sur le tas en flânant sur le web.

J'ai créé un formulaire HTML qui renvoie vers une page PHP qui est censée m'envoyer par mail les données du formulaire. Le problème, c'est que malgré tous mes essais je n'ai jamais reçu de mail et je suis plutôt désespéré...

Donc voici le formulaire HTML :

<form name="contact" method="post" action="http://spitback.fr/contact.php">
    
    <div style="width: 800px; height:25px; margin:auto; margin-bottom:20px;">
   	  <div style="width: 150px; margin:auto; float:left;">
    		<p>Your e-mail address : *</p>
        </div>
      <div style="width: 650px; margin:auto; float:left;">
        	<input type="email" size="105" name="email" value="">
      </div>
    </div>
    
    <div style="width: 800px; height:25px; margin:auto; margin-bottom:20px;">
   	  <div style="width: 150px; margin:auto; float:left;">
    		<p>Your name : *</p>
        </div>
      <div style="width: 650px; margin:auto; float:left;">
        	<input type="text" size="105" name="name" value="">
      </div>
    </div>    
    
    <div style="width: 800px; height:25px; margin:auto; margin-bottom:20px;">
   	  <div style="width: 150px; margin:auto; float:left;">
    		<p>Subject : *</p>
        </div>
      <div style="width: 650px; margin:auto; float:left;">
        	<input type="text" size="105" name="subject">
      </div>
    </div>
             
    <div style="width: 800px; height:200px; margin:auto; margin-bottom:20px;">
   	  <div style="width: 150px; margin:auto; float:left;">
    		<p>Your message : *</p>
        </div>
      <div style="width: 650px; margin:auto; float:left;">
        	<input class="inputheight" type="text" size="105" name="message">
      </div>
    </div>

    <div style="width: 800px; height:25px; margin:auto;">
   	  <div style="width: 150px; margin:auto; float:left;">Submit !</div>
      <div style="width: 650px; margin:auto; float:left;">
        	<input type="submit" value=" Submit ">
      </div>
    </div>
    
    </form>


Puis j'ai adapté un code PHP trouvé dans les bafonds de l'Internet qui me paraissait séduisant :

<?php
if(isset($_POST['email'])) {
     
    // CHANGE THE TWO LINES BELOW
    $email_to = "contact@spitback.fr";	
     
    $email_subject = "website html form submissions";
     
     
    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }
     
    // validation expected data exists
    if(!isset($_POST['email']) ||
        !isset($_POST['name']) ||
        !isset($_POST['subject']) ||
        !isset($_POST['message'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');      
    }
     
    $name = $_POST['name']; // required
    $subject = $_POST['subject']; // required
    $email_from = $_POST['email']; // required
    $message = $_POST['message']; // required
     
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$name)) {
    $error_message .= 'The name you entered does not appear to be valid.<br />';
  }
  if(strlen($message) < 2) {
    $error_message .= 'The message you entered do not appear to be valid.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Form details below.\n\n";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
     
    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Subject: ".clean_string($subject)."\n";
    $email_message .= "Message: ".clean_string($message)."\n";
     
     
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 
?>
 
<!-- place your own success html below -->
 
Thank you for contacting us. We will be in touch with you very soon.
<br>
<br>
<a href="http://spitback.fr/home"><img src="http://spitback.fr/images/enter.png" /></a>
 
<?php
}
die();
?>


Enfin, j'ai rajouté un .htaccess à la racine (la page concernée se trouve aussi à la racine) contenant ceci:

Options +Indexes
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php


Quelqu'un aurait une solution en vue ? Merci d'avance !

Max
Modifié par MaxSxB (10 Feb 2015 - 23:11)
J'ai honte... en fait j'avais fait tous mes tests en entrant des données complètement bidon du genre test@test.com. En entrant des données cohérentes ça marche. J'ai lu à quelque part que 1&1 aurait un filtre contre les abus, bien joué. En espérant qu'il n'y ait aucun faux-positif !

Donc sujet clos !