8721 sujets

Développement web côté serveur, CMS

Bonjour,

C'est encore moi !! Smiley biggrin

Je suis en train de faire mon formulaire de contact, mais j'ai un bug. J'ai repris le formulaire de téléchargement, mais je coince. (J'ai pas encore mis le jQuery, je le ferais quand ça fonctionnera déjà en PHP.)

Voici mon code : http://cjoint.com/?3FCjSNlN2BU
J'ai une erreur sur la ligne 123.
"Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/a1056217/public_html/contact.php on line 123"

La partie en question :
//=====Déclaration des messages au format texte et au format HTML.
		$message_txt = "Nouveau message :
					Nom : ".$nom"
					Prénom : ".$prenom"
					Email: ".$email"
					Message : ".$message"";
		$message_html = '<html><head><title></title></head><body>
					<p>Un nouveau message sur le site The VieWers :</p>
					<p>	Nom : $nom <br />
					Pr&eacute;nom : $prenom <br />
					Email : $email <br />
					Message : $message</p>
					</body></html>';
//==========


Merci d'avance à vous.

Edit : J'ai réussi à corriger mon erreur :
//=====Déclaration des messages au format texte et au format HTML.
		$message_txt = "Nouveau message :
					Nom : ".$nom."          <-- AJOUT D'UN POINT A LA FIN
					Prénom : ".$prenom."  <-- AJOUT D'UN POINT A LA FIN
					Email: ".$email."         <-- AJOUT D'UN POINT A LA FIN
					Message : ".$message."";   <-- AJOUT D'UN POINT A LA FIN
		$message_html = '<html><head><title></title></head><body>
					<p>Un nouveau message sur le site The VieWers :</p>
					<p>	Nom : $nom <br />
					Pr&eacute;nom : $prenom <br />
					Email : $email <br />
					Message : $message</p>
					</body></html>';
//==========


Mais je dois toujours avoir une erreur, parce que le formulaire ne se valide pas.
Modifié par Alexbass (02 Jul 2013 - 18:13)
Bonjour,

la syntaxe n'est pas correcte :


$message_txt = "Nouveau message :
					Nom : ".$nom[b].[/b]"
					Prénom : ".$prenom[b].[/b]"
					Email: ".$email[b].[/b]"
					Message : ".$message; // pas de double guillemets à la fin


La deuxième partie ne marchera pas non plus car tes variables ne seront pas interprétées à cause des guillemets simple '. Il faut utiliser les doubles " pour que ça fonctionne.

Essaye d'utiliser la même syntaxe sur tes deux chaîne, tu éviteras de te mélanger les pinceaux
Modifié par bzh (28 Jun 2013 - 10:28)
Bonjour bzh,

J'ai corrigé comme ça :
//=====Déclaration des messages au format texte et au format HTML.
		$message_txt = "Nouveau message :
					Nom : ".$nom."
					Prénom : ".$prenom."
					Email: ".$email."
					Message : ".$message;
		$message_html = "<html><head><title></title></head><body>
					<p>Un nouveau message sur le site The VieWers :</p>
					<p>	Nom : $nom <br />
					Pr&eacute;nom : $prenom <br />
					Email : $email <br />
					Message : $message</p>
					</body></html>";
//==========

Je ne reçois toujours pas d'email.
ps : j'ai quand même mis le jquery : http://www.alexbass.net23.net/contact.php
Modifié par Alexbass (28 Jun 2013 - 10:42)
A ta demande voici tout le code de ma page:

<!DOCTYPE html>
<html>
    <head>
		
		<title>.:: The VieWers - Contact ::.</title>
	
		<meta charset="utf-8" />
		<meta name="keywords" content="the viewers, THE VIEWERS, viewers, VIEWERS, musique bourges, MUSIQUE BOURGES,the viewers bourges, THE VIEWERS BOURGES, viewers bourges, VIEWERS BOURGES, groupe viewers, groupe the viewers, GROUPE VIEWERS, GROUPE THE VIEWERS, run run, RUN RUN"/>
		<meta name="description" content="Contacter The VieWers."/>
		<meta name="author" content="Alexandre *********"/>
		<meta name="robots" content="all"/>
        
		<link rel="stylesheet" href="style.css"/>
		<link rel="shortcut icon" href="images/the_viewers.ico"/>
		<!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
		<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
		<script type="text/javascript" src="./jquery/jquery.validate.js"></script>
		<script>
			$(document).ready(function () {
				jQuery.validator.addMethod("maReglePerso", function(value) {
                return value.toLowerCase() == "chaud";  
				},"Mauvaise réponse");
					$("#formulaire").validate({
						rules: {
							nom: {
								required: true,
								maxlength: 30
							},
							prenom: {
								required: true,
								maxlength: 30
							},
							mail: {
								required: true,
								maxlength: 50,
								email: true
							},
							mail2: {
								required: true,
								email: true,
								equalTo: "#mail"
							},
							commentaire: {
								required: true,
								maxlength: 1000
							},
							verif: {
								required: true,
								maReglePerso: true
							},
						},
						messages: {
							nom: {
								required: "Merci d'indiquer votre nom.",
								maxlength: "30 caractères maximum."
							},
							prenom: {
								required: "Merci d'indiquer votre prénom.",
								maxlength: "30 caractères maximum."
							},
							mail: {
								required: "Merci d'indiquer une adresse mail.",
								maxlength: "50 caractères maximum.",
								email: "Merci d'indiquer une adresse valide."
							},
							mail2: {
								required: "Merci de confirmer votre email.",
								equalTo: "Les adresses email ne sont pas identiques.",
								email: "Merci d'indiquer une adresse valide."
							},
							commentaire: {
								required: "Merci d'indiquer votre message.",
								maxlength: "Votre commentaire ne peut depasser 1000 carcatères."
							},
							verif: {
								required : "Merci de répondre à la question.",
								equalTo: "Mauvaise réponse."
							},
						}		
					});                 
			});
		</script>
				
    </head>

	<body>
	<div id="fb-root"></div>
	<script>(function(d, s, id) {
	var js, fjs = d.getElementsByTagName(s)[0];
	if (d.getElementById(id)) return;
	js = d.createElement(s); js.id = id;
	js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
	fjs.parentNode.insertBefore(js, fjs);
	}(document, 'script', 'facebook-jssdk'));</script>
	<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
	
	
		<div id="bloc_page">
		    <header>
                <?php include("entete.php"); ?>
                 
                <?php include("menus.php"); ?>
				<?php
				$monfichier = fopen('compteurcontact.txt', 'r+');
				  
				$pages_vues = fgets($monfichier); // On lit la première ligne (nombre de pages vues)
				$pages_vues++; // On augmente de 1 ce nombre de pages vues
				fseek($monfichier, 0); // On remet le curseur au début du fichier
				fputs($monfichier, $pages_vues); // On écrit le nouveau nombre de pages vues
				  
				fclose($monfichier);
				//echo '<p>Cette page a été vue ' . $pages_vues . ' fois !</p>';
				?>
			</header>
			<section>
				<div id="bloc_page_contact">
					<h1>Formulaire de contact :</h1>
					
					<div id="bloc_formulaire">
					<?php
					//Initialisations des variables
					$verif2 = "chaud";				
						//Traitement global de vérification des champs
						if ((!isset($_POST['nom']) OR $_POST['nom'] == "") 
							OR (!isset($_POST['prenom']) OR $_POST['prenom'] == "")
							OR (!isset($_POST['mail']) OR $_POST['mail'] == "")
							OR (!isset($_POST['mail2']) OR $_POST['mail2'] <> $_POST['mail'])
							OR (!isset($_POST['message']) OR strlen($_POST['message'] ) > 1000)
							OR (!isset($_POST['verif']) OR (strcasecmp($_POST['verif'], $verif2) <> 0)))
						{
					
					// Afficher ou réafficher le formulaire de saisie des informations
					?>
						<form id="formulaire" method="post" action="contact.php">
							
								<p class="floatstop">
								<label for="nom">Nom * : </label>
								<input type="text" name="nom" value="<?php if(!empty($_POST['nom'])) echo $_POST['nom']?>" id="nom" placeholder="Nom" maxlength="31" required/>
								<br />
								<label for="prenom">Prénom * : </label>
								<input type="text" name="prenom" value="<?php if(!empty($_POST['prenom'])) echo $_POST['prenom']?>" id="prenom" placeholder="Prénom" maxlength="31" required/>
								<br />				
								<label for="mail">E-mail * : </label>
								<input type="email" name="mail" value="<?php if(!empty($_POST['mail'])) echo $_POST['mail']?>" id="mail" placeholder="exemple@mail.fr" maxlength="51" required/>
								<br />
								<label for="mail">Confirmez votre E-mail * : </label>
								<input type="email" name="mail2" value="<?php if(!empty($_POST['mail2'])) echo $_POST['mail2']?>" id="mail2" placeholder="exemple@mail.fr" maxlength="51" required/>
								<br />
								<label for="verif">Le feu est chaud ou froid ? * :<br /><small>(Anti-spam)</small></label>
								<input type="text" name="verif" id="verif" required/>
								<br /><br />
								<label for="commentaire" id="lblcom">Votre message * :</label>
								<textarea name="commentaire" id="commentaire" value="<?php if(!empty($_POST['message'])) echo $_POST['message']?>" rows="5" cols="20" maxlength="1000" required></textarea><br/> <!--ici, la zone de texte n'a pas de valeur par défaut-->
								<br /><small>(*) = champs obligatoires.</small>
								<br />
									<div id="bouton_centré">
										<input type="submit" name="envoi" value="Envoyer" title="Cliquez ici envoyer votre message"/>
									</div>
								<!--</p>-->
							
						</form>
					</div>
					<?php
					}//fin de la condition if
					else // Les informations sont toutes remplies on peut envoyer le mail avec les infos.
					{
					//déclaration des variables à envoyer par mail :
					$nom = $_POST['nom'];
					$prenom = $_POST['prenom'];
					$email = $_POST['mail'];
					$message = $_POST['message'];
					//=====Mail destinataire.
					$destinataire = "************@laposte.net";
					//=========
							
					//Envoi mail 2 :
						if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui rencontrent des bogues.
						{
							$passage_ligne = "\r\n";
						}
						else
						{
							$passage_ligne = "\n";
						}
						//=====Déclaration des messages au format texte et au format HTML.
						$message_txt = "Nouveau message :
										Nom : ".$nom."
										Prénom : ".$prenom."
										Email: ".$email."
										Message : ".$message.;
						$message_html = "<html><head><title></title></head><body>
										<p>Un nouveau message sur le site The VieWers :</p>
										<p>	Nom : ".$nom." <br />
											Pr&eacute;nom : ".$prenom." <br />
											Email : ".$email." <br />
											Message : ".$message."<br />
										Fin du message.</p>
										</body></html>";
						//==========
						  
						//=====Création de la boundary
						$boundary = "-----=".md5(rand());
						//==========
						  
						//=====Définition du sujet.
						$sujet = "Contact via  www.theviewers.fr";
 
						//=========
						//=====Mail destinataire.
						$destinataire = "**************@laposte.net";
						//=========
						  
						//=====Création du header de l'e-mail.
						$header = "From: <".$email.">".$passage_ligne;
						$header.= "Reply-To: ".$email."".$passage_ligne;
						$header.= "MIME-Version: 1.0".$passage_ligne;
						$header .= "X-Priority: 3".$passage_ligne;
						$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
						//==========
						  
						//=====Création du message.
						$message1 = $passage_ligne."--".$boundary.$passage_ligne;
						//=====Ajout du message au format texte.
						$message1.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
						$message1.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
						$message1.= $passage_ligne.$message_txt.$passage_ligne;
						//==========
						$message1.= $passage_ligne."--".$boundary.$passage_ligne;
						//=====Ajout du message au format HTML
						$message1.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
						$message1.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
						$message1.= $passage_ligne.$message_html.$passage_ligne;
						//==========
						$message1.= $passage_ligne."--".$boundary."--".$passage_ligne;
						$message1.= $passage_ligne."--".$boundary."--".$passage_ligne;
						//==========
						  
						//=====Envoi de l'e-mail.
						mail($destinataire,$sujet,$message1,$header);
						//==========
					// Message de confirmation
					?>
						<h1 class="floatstop">Merci :</h1> 
						<p>Votre message a bien été envoyé.</p>
						<p>Nous vous remercions de l'interêt que vous portez à notre projet. Enjoy it !!!</p>
					<?php
					}// fin de la condition else
					?>	
					
					
					
					
					
				</div>
			</section>
			<footer>
			<?php include("pied_de_page.php");?>
			</footer>
		</div>
	</body>
</html>

Modifié par Alexbass (29 Jun 2013 - 00:01)
Bonjour,
Je reste persuadé qu'il y a un problème avec les adresses mails en @laposte.net et la fonction mail(), comme je l'avais déjà évoqué dans ce post: http://forum.alsacreations.com/topic-1-67982-1-Fonction-php-mail-chez-ovh.html
Après quelques recherches sur google, il s'avère que plusieurs personnes ont des problèmes pour utiliser la fonction mail() avec des adresses laposte.net.
A mon avis, ton script fonctionne parfaitement, mais comme tu as mis une adresse en @laposte.net (je te conseille d'ailleurs d'éditer tes messages pour ne pas qu'elle apparaisse aux yeux de tous), ça doit foirer quelques part (pas d'envoi ou alors le mail est considéré comme spam).

Essaie d'envoyer le mail sur une autre adresse mail déjà, pour voir si cela vient du code ou pas.
Tu as toujours une erreur dans ton code :

$message_txt = "Nouveau message :
										Nom : ".$nom."
										Prénom : ".$prenom."
										Email: ".$email."
										Message : ".$message.; // Supprimer le point avant le ;


Cette condition est toujours vraie, du coup ton code pour l'envoi du mail n'est jamais exécuté.

						if ((!isset($_POST['nom']) OR $_POST['nom'] == "") 
							OR (!isset($_POST['prenom']) OR $_POST['prenom'] == "")
							OR (!isset($_POST['mail']) OR $_POST['mail'] == "")
							OR (!isset($_POST['mail2']) OR $_POST['mail2'] <> $_POST['mail'])
							OR (!isset($_POST['message']) OR strlen($_POST['message'] ) > 1000) // commentaire
							OR (!isset($_POST['verif']) OR (strcasecmp($_POST['verif'], $verif2) <> 0)))
						{


Car ton textarea renvoie commentaire dans $_POST pas message.
Merci à vous deux, j'ai réussi à corriger mon code grace à vous.

J'avais accumulé les petites étourderies.
Je confirme qu'avec laposte.net, je reçoit bien le message.
Voici que donne l'email reçu :
http://cjoint.com/?3FCp626cjdD

Qu'entendez vous par masquer l'adresse ? Arf je suis béta : dans les poste du forum.. Evidemment.
Modifié par Alexbass (28 Jun 2013 - 16:04)
Par exemple là:
<meta name="author" content="ICI IL Y A TON VRAI NOM/PRENOM"/>

et là:
//=====Mail destinataire.
$destinataire = "************@laposte.net";

(il y en a 2 dans ton code, tu en as masqué un, pas l'autre).

Après, à toi de voir si tu souhaites que tout le web puisse voir ces infos ou non (mais perso je pense que c'est pas le bon plan Smiley smile )

EDIT: Je viens de voir aussi dans ton mail en pièce jointe il y a tes infos perso
Modifié par GroquikMLV (28 Jun 2013 - 16:10)
J'ai encore une question :

Dans mon textarea, si l'utilisateur saute une ligne, le message que je reçois reste, lui, sur une seule ligne.

Est-ce possible de respecter les sauts de lignes faits par l'utilisateur ?
Aussi : Est-ce possible de respecter le format du texte ? (Les accents etc...)

Merci à vous pour toute l'aide que vous m'apportez.
Regarde du coté de cette fonction je pense: http://php.net/manual/fr/function.nl2br.php

Sinon, pour les accents, regardes du coté du charset, tu as surement du mettre de l'utf8, qui ne gère pas les accents. Du coup, soit tu fais un replace de tes "é" en &eacute;", soit tu changes l'encodage je dirais (pas sûr à 100% sur ce coup là...)
Bonjour GroquikMLV,

La fonction nl2br fonctionne bien. Merci beaucoup.

Pour les accents, je n'utilise pas UTF8 dans la procédure d'envoi du mail. Je suis en ISO-8859-1 à 8bit.
J'ai trouvé et réussi.

Je partage :
$message = utf8_decode(nl2br($_POST['message']));

Ma variable message est d'abord traitée par nl2br pour conserver les saut de ligne, puis elle est traitée par utf8_decode pour conserver les accents.

Merci, je met le sujet en Résolu.
Modifié par Alexbass (02 Jul 2013 - 18:12)
Ah je n'avais pas compris que ce texte était celui envoyé par mail... Peux-tu préciser quel est ton problème exactement pour les accents? Tu ne les vois pas? Ils sont remplacés par des caractères bizarres?
Alexbass a écrit :
J'ai trouvé et réussi.

Je partage :
$message = utf8_decode(nl2br($_POST['message']));

Ma variable message est d'abord traitée par nl2br pour conserver les saut de ligne, puis elle est traitée par utf8_decode pour conserver les accents.

Merci, je met le sujet en Résolu.


Il s'agit bien du texte qui m'est envoyé par le formulaire de contact. Mais j'ai résolu mon soucis. Merci.