11496 sujets

JavaScript, DOM et API Web HTML5

En avant propos, je débute dans la conception de site web, même s'il y a quelques années j'avais déjà créé un site en html et css grâce à Alsacréation. Smiley smile

Dans le cadre d'un site pour une activité pro, j'aimerai mettre en place un formulaire de contact pour mes visiteurs. Après avoir lancé une discussion sur le sujet via alsacréation, j'ai décidé de me lancer via un script trouvé sur le web. J'ai eu quelques soucis pour le personnaliser mais cela semble tenir plus ou moins la route, en tout cas en apparence.
Par contre, quand je valide mon formulaire j'ai systématiquement le même message "votre message n'a pas été envoyé, réessayer plus tard !" J'en déduis que j'ai du faire une bêtise en manipulant le javascript mais je n'arrive pas à trouver où… Votre aide et vos conseils me seront d'un grand secoue, merci par avance.


<div id='formulaire'>
  <form action='send.php' method='post' id='contact_form'>
    <p> Votre nom :
    <div id='name_error' class='error'><img src='images/error.png'> veuillez entrer votre nom !</div>
    <div>
      <input type='text' name='name' id='name'>
    </div>
    </p>
    <p> Votre Email :
    <div id='email_error' class='error'><img src='images/error.png'> veuillez entrer votre e-mail !</div>
    <div>
    <input type='text' name='email' id='email'>
    </div>
    </p>
    <p> Objet :
    <div id='subject_error' class='error'><img src='images/error.png'> veuillez préciser votre sujet !</div>
    <div>
      <input type='text' name='subject' id='subject'>
    </div>
    </p>
    <p> Votre message :
    <div id='message_error' class='error'><img src='images/error.png'> Champs message est requis !</div>
    <div>
      <textarea name='message' id='message'></textarea>
    </div>
    </p>
    <div id='mail_success' class='success'><img src='images/success.png'> Merci ! Votre message a bien été envoyé !</div>
    <div id='mail_fail' class='error'><img src='images/error.png'> votre message n'a pas été envoyé, réessayer plus tard !</div>
    <p id='cf_submit_p'>
      <input type='submit' id='send_message' value='Envoyer votre message'>
    </p>
  </form>
    <br />
</div>



/* Formulaire */
#formulaire {
	width: 400px;
	margin-left: auto;
	margin-right: auto;
}
#formulaire input, #formulaire textarea {
	width: 100%;
	padding: 5px;
	border: 1px solid #80BF40;
}
#formulaire textarea {
	height: 100px;
	border: 1px solid #80BF40;
}
#send_message {
	width: 200px !important;
	border: 1px solid #80BF40;
	cursor: pointer;
	cursor: hand;
}
#cf_submit_p {
	text-align: right;
}
.error {
	display: none;
	padding:5px;
	margin-bottom:2px;
	color: #D8000C;
	font-size:12px;
	background-color: #FFBABA;
	border:1px solid #F00;
	width:400px;	
}
.success {
	display: none;
	padding:5px;
	color: #044406;
	font-size:12px;
	background-color: #B7FBB9;
	width:400px;	
}
.error img {
	vertical-align:top;
}



$(document).ready(function(){
        $('#send_message').click(function(e){
										  
            e.preventDefault();

            var error = false;
            var name = $('#name').val();
            var email = $('#email').val();
            var subject = $('#subject').val();
            var message = $('#message').val();
            
            if(name.length == 0){
                var error = true;
                $('#name_error').fadeIn(1000);
            }else{
                $('#name_error').fadeOut(1000);
            }
            if(email.length == 0 || email.indexOf('@') == '-1'){
                var error = true;
                $('#email_error').fadeIn(1000);
            }else{
                $('#email_error').fadeOut(1000);
            }
            if(subject.length == 0){
                var error = true;
                $('#subject_error').fadeIn(1000);
            }else{
                $('#subject_error').fadeOut(1000);
            }
            if(message.length == 0){
                var error = true;
                $('#message_error').fadeIn(1000);
            }else{
                $('#message_error').fadeOut(1000);
            }
            
            if(error == false){

                $('#send_message').attr({'disabled' : 'true', 'value' : 'Envoi en cours...' });

                $.post("send.php", $("#contact_form").serialize(),function(result){

                    if(result == 'sent'){

                         $('#cf_submit_p').remove();

                        $('#mail_success').fadeIn(1000);
                    }else{
						
                        $('#mail_fail').fadeIn(1000);
                        
                        $('#send_message').removeAttr('disabled').attr('value', 'Message envoyÈ');
                    }
                });
            }
        });    
    });

Modifié par Mazh (13 Dec 2013 - 18:28)
Modérateur
Bonjour,

le problème vient de la réponse du post en ajax: voici ce qui est reçu (hormis l'adresse email que j'ai caché):

<?php 
		  
		  //IMPORTANT!!
		  //Put in your email address below:
		  $to = 'XXXXXX';
		 
		  
		  //User info (DO NOT EDIT!)
		  $name = stripslashes($_POST['name']); //sender's name
		  $email = stripslashes($_POST['email']); //sender's email
		  
		  //The subject
		  $subject  = "Le sujet :"; //The default subject. Will appear by default in all messages. Change this if you want.
		  $subject .= stripslashes($_POST['subject']); // the subject
		  
		  
		  //The message you will receive in your mailbox
		  //Each parts are commented to help you understand what it does exaclty.
		  //YOU DON'T NEED TO EDIT IT BELOW BUT IF YOU DO, DO IT WITH CAUTION!
		  $msg  = "From : $name \r\n";  //add sender's name to the message
		  $msg .= "e-Mail : $email \r\n"; //add sender's website to the message
		  $msg .= "$subject \r\n\n"; //add subject to the message (optional! It will be displayed in the header anyway)
		  $msg .= "---Message--- \r\n\n".stripslashes($_POST['message'])."\r\n\n";  //the message itself
		  
		  //Extras: User info (Optional!)
		  //Delete this part if you don't need it
		  //Display user information such as Ip address and browsers information...
		  $msg .= "---Contact information--- \r\n\n"; //Title
		  $msg .= "Son IP : ".$_SERVER["REMOTE_ADDR"]."\r\n"; //Sender's IP
		  $msg .= "Navigateur : ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; //User agent
		  $msg .= "Page : ".$_SERVER["HTTP_REFERER"]; //Referrer
		  // END Extras
		  
				
		  if  (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
		  
		  echo "sent";
		  
		  }else{
			  
		  echo "echoue";
		  
		  }

?>

au lieu de 'sent' ou 'echoue';

On dirait donc que le PHP n'est pas exécuté sur votre serveur. Peut-être qu'il n'est pas actif avec votre hébergement?
J'ai hébergé mes pages chez Orange, via l'espace offert pour les pages perso… comment savoir si l'hébergement php est actif ?

Merci… Smiley smile
Modifié par Mazh (13 Dec 2013 - 18:29)
Bon... j'ai installé le tout sur un autre hébergement, lequel accepte le php. Effectivement, cela semble mieux fonctionner puisque je n'ai plus le précédent message d'erreur.
Par contre, si j'ai bien l'indication "envoi en cours" sur le bouton d'envoi, le soucis c'est que l'état reste tel quel et que le formulaire ne semble pas "partir".
J'ai vérifié à plusieurs reprises sur ma boîte mail et aucune réception, ce qui semble confirmer que le formulaire ne part pas. J'ai bien entendu également vérifié le dossier des courriers indésirables mais rien non plus.
J'ai refais plusieurs essais en vain, y compris en laissant en stand-by le statut plus de 15 mn.

Une idée ?
Modifié par Mazh (13 Dec 2013 - 18:29)
Merci de ta réponse.

J'ai fais une recherche suite à ta réponse. Si j'ai bien compris et sachant que mon hébergement est chez 1&1, il va donc falloir que je crée à la racine un fichier .htaccess pour donner les autorisations au .php, c'est bien ça ?
Modifié par Mazh (10 Dec 2013 - 19:17)
J'avais vérifié suite aux infos trouvées via la piste que tu m'avais donné. L'autorisation sur le fichier était 604. J'ai lu que l'on pouvait tester en le passant à 777 mais cela n'a rien changé pour autant.
Bon, ben si tu es sûr que ton hébergement supporte PHP et que tu n'a pas déjà un .htaccess qui viendrait interférer, les premiers résultats de Google proposent effectivement d'en créer un avec AddType x-mapp-php5 .php dedans. Ça me paraît un peu dingue de devoir effectuer ce genre de précisions pour un hébergement web, mais enfin...
Je vais contacter l'hébergeur pour m'assurer du service car après relecture dans tout les sens de leur site, c'est loin d'être très clair...
Vive les offres multiples et pas claires qu'il faut savoir décortiquer dans le détail et surtout tout au fond des CGU des sites, après les variantes multi-langues (et vu mon niveau d'anglais… Smiley rolleyes ).
J'ai donc obtenu une réponse du service concerné, effectivement le php est disponible mais pas sur mon pack malgré les apparences et informations contradictoires. Je vais donc chercher un hébergement sérieux proposant le php et je reviens vers vous si j'ai de nouveau soucis avec ce formulaire.
En l'état, j'ai ma réponse et je vous remercie donc pour votre aide, vous m'avez permis d'orienter mes recherches… Je passe le sujet en "Résolu".
Désolé du doublon, je viens de trouver comment passer en résolu. Si un modérateur estime nécessaire de supprimer un des messages, aucun souci. Smiley confused