erreur dans mon formulaire de reservation de chambres

Eléphant du PHP | 63 Messages

01 oct. 2015, 10:20

bonjour

j avais trouver un model pour faire un formulaire de contact j ai essayer de l adapter sans mettre le filtre anti spam

et j ai une erreur lorsque je charge la page il affiche quelques seconde > complet every case.

et quand je remplis et que j envoi le formulaire je ne recois pas l email

<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. 
$destinataire = 'monemail.com';

// copie ? (envoie une copie au visiteur)
$copie = 'non';

// Action du formulaire (si votre page a des parametres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Your message send succesfull !";
$message_non_envoye = "send your mail error  │Please tree again.";


$message_formulaire_invalide = "complet every case.";

/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/
/*
 * cette fonction sert a nettoyer et enregistrer un texte
 */
function Rec($text)
{
	$text = htmlspecialchars(trim($text), ENT_QUOTES);
	if (1 === get_magic_quotes_gpc())
	{
		$text = stripslashes($text);
	}

	$text = nl2br($text);
	return $text;
};

/*
 * Cette fonction sert a verifier la syntaxe d'un email
 */
function IsEmail($email)
{
	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
	return (($value === 0) || ($value === false)) ? false : true;
}

// formulaire envoyer on recupere tous les champs.
$datepicker    = (isset($_POST['datepicker']))    ? Rec($_POST['datepicker'])        : '';
$datepicker1   = (isset($_POST['datepicker1']))   ? Rec($_POST['datepicker1'])        : '';
$adults        = (isset($_POST['adults']))     ? Rec($_POST['adults'])      : '';
$room          = (isset($_POST['room']))       ? Rec($_POST['room'])    : '';
$email         = (isset($_POST['email']))      ? Rec($_POST['email'])      : '';

// On va verifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; 

if (($datepicker != '') && ($datepicker1 != '') && ($adults != '') && ($room != '') && ($email != ''))
		{
			// les 5 variables sont remplies, on gere puis envoie le mail
			$headers  = 'MIME-Version: 1.0' . "\r\n";
			$headers .= 'From:'.$datepicker.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
				
				// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire;
			}
			else
			{
				$cible = $destinataire;
			};

				// Envoi du mail
			if (mail($cible, $datepicker, $datepicker1, $adults, $room, $headers))
			{
				echo '<p>'.$message_envoye.'</p>';
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>';
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.'</p>';
			$err_formulaire = true;
	
	
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
	// afficher le formulaire
	echo '

	

	<div class="banner">
		<div class="container">
			<div class="banner-top" style="padding-top:2em; padding-right:30px; padding-bottom:2em; padding-left:30px; width:30%; position:absolute; left:17%; top:30%; z-index:1;">
				<h1>For Booking</h1>
				
				<div class="banner-bottom">
					<div class="bnr-one">
						<div class="bnr-left">
							<p>Ckeck In</p>
						</div>
						<form id="contact" method="post" action="'.$form_action.'">
						<div class="bnr-right">
						<input class="date" id="datepicker" type="text" value="'.stripslashes($datepicker).'">
												</div>
												
						</div>
						<div class="clearfix"></div>
					</div>
					<div class="bnr-one">
						<div class="bnr-left">
							<p>Ckeck Out</p>
						</div>
						<div class="bnr-right">
							<input class="date" id="datepicker1" type="text" value="'.stripslashes($datepicker1).'">
										
						</div>
						<div class="clearfix"></div>
					</div>
					<div class="bnr-one">
						<div class="bnr-left">
							<p>Adults</p>
						</div>
						<div class="bnr-right">
						
						 <td>
      	<select id="adults" name="adults" value="'.stripslashes($adults).'" tabindex="1" />>
			<option value="1">1 adult</option>
			<option value="2">2 adults</option>
			<option value="3">3 adults</option>
			<option value="4">4 adults</option>
		</select>
      </td> 
						</div>
						<div class="clearfix"></div>
					</div>
					<div class="bnr-one">
						<div class="bnr-left">
							<p>Room</p>
						</div>
						<div class="bnr-right">
																										
							<td>
							<select id="room" name="room" value="'.stripslashes($room).'" tabindex="1" />
								<option  class="room with balcon" value="1">room with balcon</option>
								<option  class="room without balcon" value="2">room without balcon</option>
								</select>
								</td>
						</div>
						
						
						<div class="bnr-one">
						<div class="bnr-left">
							<p>Email</p>
						</div>
						<div class="bnr-right">
																				
	<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p></span>
								
									</div>
								
													
																				
						</div>
						
						<div class="clearfix"></div>
					</div>
					<div class="bnr-btn">
						
						<div style="text-align:center;"><input type="submit" name="envoi" value="send" /></div>
	</form>';
};
?>
Modifié en dernier par dryland le 01 oct. 2015, 10:53, modifié 1 fois.

Mammouth du PHP | 737 Messages

01 oct. 2015, 10:23

Slt,

Le formulaire est envoyé depuis quel serveur ? En ligne ? En local ?

Mega
;)
Dyslexics are teople poo

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8471 Messages

01 oct. 2015, 10:33

Bonjour,
mail($datepicker, $datepicker1, $adults, $room, $headers)
Tu envoies ton mail à $datepicker, ça me semble curieux ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 737 Messages

01 oct. 2015, 10:35

Bien vu :lol:
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

01 oct. 2015, 11:11

J ai corriger le code j ai rajouter le champ nom comme dans le formulaire d'origine
mais pareil il me dit de remplir toutes les cases , le champ

les champs
$datepicker correspond a un calendrier qui s affiche et qu on selection la date d arriver
$datepicker1 correspond a un calendrier qui s affiche et qu on selection la date de depart

pour les dates genre 2/10/2015 il n y a pas de format special ??

le formulaire est envoyer en ligne sur mon site qui est sur mon serveur en hebergement ( pas en local)



function IsEmail($email)
{
	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
	return (($value === 0) || ($value === false)) ? false : true;
}

// formulaire envoyer on recupere tous les champs.
$nom        = (isset($_POST['nom']))    ? Rec($_POST['nom'])        : '';
$datepicker    = (isset($_POST['datepicker']))    ? Rec($_POST['datepicker'])        : '';
$datepicker1   = (isset($_POST['datepicker1']))   ? Rec($_POST['datepicker1'])        : '';
$adults        = (isset($_POST['adults']))     ? Rec($_POST['adults'])      : '';
$room          = (isset($_POST['room']))       ? Rec($_POST['room'])    : '';
$email         = (isset($_POST['email']))      ? Rec($_POST['email'])      : '';

// On va verifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; 

if (($datepicker != '') && ($datepicker1 != '') && ($adults != '') && ($room != '') && ($email != ''))
		{
			// les 5 variables sont remplies, on gere puis envoie le mail
			$headers  = 'MIME-Version: 1.0' . "\r\n";
			$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
				
				// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire;
			}
			else
			{
				$cible = $destinataire;
			};

				// Envoi du mail
			if (mail($cible, $datepicker, $datepicker1, $adults, $room, $headers))
			{
				echo '<p>'.$message_envoye.'</p>';
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>';
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.'</p>';
			$err_formulaire = true;
	
	
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
	// afficher le formulaire
	echo '

?>
Modifié en dernier par dryland le 01 oct. 2015, 16:30, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8471 Messages

01 oct. 2015, 12:10

Evites stp de rebalancer tout ton code à chaque fois, et ne met que les parties intéressantes qui pourraient poser problème, sinon c'est difficile de suivre correctement la discussion.

Par ailleurs, vérifies les paramètres de la fonction mail(), car pour le moment tu as mis n'importe quoi.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 63 Messages

01 oct. 2015, 15:19

salut @rthur desole je savais pas pour le code de ne pas le mettre entier.

j'ai retrouver le code original sans la verification anti spam
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
	if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
mais lorsque je change les valeur pour l adapter a ma reservation il me dit "Verifiez que tous les champs soient bien remplis "
$nom          = (isset($_POST['nom']))    ? Rec($_POST['nom'])        : '';
$email        = (isset($_POST['email']))      ? Rec($_POST['email'])      : '';
$datepicker   = (isset($_POST['datepicker']))    ? Rec($_POST['datepicker'])        : '';
$datepicker1  = (isset($_POST['datepicker1']))   ? Rec($_POST['datepicker1'])        : '';
$adults       = (isset($_POST['adults']))     ? Rec($_POST['adults'])      : '';
$room         = (isset($_POST['room']))       ? Rec($_POST['room'])    : '';


// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
if (($nom != '') && ($email != '') && ($datepicker != '') && ($datepicker1 != '') && ($adults != '') && ($room != '') )
{
le problem est dans le code html des champs par exemple dans datepicker (date d arrivee) le calendrier quand tu clique sur une date il affiche la date au format selection de date affiche par exemple 10/02/2015 peut etre que le formatage n'est pas reconnu dans mon input ou mal coder, ou maque peut etre quelques chose.
<div class="bnr-right">
<input class="date" id="datepicker" type="text" value="'.stripslashes($datepicker).'" tabindex="3" />
</div>
En fouillant le net il semblerait qu'il faut mettre pour les dates ce type de format:
<input class="date" id="datepicker1" type="text" value="dd/MMM/yyyy" onfocus="this.value = '.stripslashes($datepicker).';" onblur="if (this.value == '') {this.value = '';}" required=>
mais je ne sais pas ce qu il faut mettre dans les champs exemple
if (this.value == '??????') {this.value = '??????';}" required=>


est dans par exemple adultes pour selection combien de personne . pas d'erreur ?
<div class="bnr-right">
						
						 <td>
      	<select id="adults" name="adults" value="'.stripslashes($adults).'" tabindex="5" />
			<option value="1 adult">1 adult</option>
			<option value="2 adult">2 adults</option>
			<option value="3 adult">3 adults</option>
			<option value="4 adult">4 adults</option>
		</select>
      </td> 
						</div>


Rien qu'en allant a url pour tester il me marque d'entree : Verifiez que tous les champs soient bien remplis et il me dit pareil quand je remplis le formulaire.

Eléphant du PHP | 63 Messages

02 oct. 2015, 17:51

bonsoir
Je prends un autre formulaire il me trouve une erreur Parse error: syntax error, unexpected '}', expecting ',' or ';' in /home/..etc....
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
	// afficher le formulaire
	echo '


	  <label>subject</label>
      <input type="text" id="'.stripslashes($subject).'" name="Pre-reservation" placeholder="Pre-reservation">
 
      <label>Nom Prenom :</label>
      <input type="text" id="'.stripslashes($full_name).'" name="full_name" placeholder="Nom prenom" required>
 
      <label>Adresse e-mail :</label>
      <input type="email" id="'.stripslashes($email).'" name="email" required>
 
      <label>Date arrivee :</label>
      <input type="date" id="'.stripslashes($arrival_dt).'" name="arrival_dt" required>
	  
	  <label>Date de depart :</label>
      <input type="date" id="'.stripslashes($departure_dt).'" name="depart_dt" required>

        
      <label>Nombre de personnes :</label>
      <input type="number" id="'.stripslashes($guests).'" name="guests" value="0" min="1" max="4" required>
 
      <label>Nombre de chambres :</label>
      <input type="number" id="'.stripslashes($room).'" name="room" value="0" min="1" max="4" required>
	  
	  <label>Chambre avec ou sans balcon :</label>
      <input type="text" id="'.stripslashes($mess).'" name="Balcon" placeholder="" required>
     
      
		<input type="submit" name="send" value="send"/>
	</form>
'}
?>
 
    
</body>
</html>
j 'ai meme essayer avec '}; ?> pareil

Mammouth du PHP | 1341 Messages

02 oct. 2015, 18:00

</form>
';
}
?>

Eléphant du PHP | 63 Messages

02 oct. 2015, 18:36

bonsoir merci oui c etait bien cela , mais j ai encore une autre erreur quand je charge la page en booking.php il affiche le formulaire je repli et au moment de valider ca bloque ? comme ci il envoi pas pourtant pour envoyer j ai mis
<input type="submit" name="envoi" value="send" />
	</form>';
};
?>

Mammouth du PHP | 1341 Messages

02 oct. 2015, 18:43

dans le code indiqué, il n'y a pas la balise <form ...
elle n'est vraiment pas dans le code exécuté ?

Eléphant du PHP | 63 Messages

02 oct. 2015, 22:14

bonsoir il y a dans le formulaire $form_action = '';
<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'monemail.com';

// copie ? (envoie une copie au visiteur)
$copie = 'non';

// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
	********************************************************************************************
	FIN DE LA CONFIGURATION

Eléphant du PHP | 63 Messages

03 oct. 2015, 07:59

je suis reparti avec le formulaire propre et j ai inserer les nouveaux champ pas a pas.
le problem est dans les dates.
pour l instant j ai mis datein ( date arrivee) quand je valide le formulaire il me dit : L'envoi du mail a echoue, veuillez reessayer SVP.
// formulaire envoyé, on récupère tous les champs.
$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
$datein = (isset($_POST['datein']))   ? Rec($_POST['datein'])   : '';
$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
	if (($nom != '') && ($email != '') && ($datein != '') && ($objet != '') && ($message != ''))

apres dans cible j'ai ajouter addin:
// Envoi du mail
if (mail($cible, $datein, $objet, $message, $headers))

Dans le code htmil j'ai mis :
<label>Date arrivee :</label>
<input type="date" id="'.stripslashes($datein).'" name="datein" tabindex="3" />

Mammouth du PHP | 1341 Messages

03 oct. 2015, 13:32

if (mail($cible, $datein, $objet, $message, $headers))
il faudrait respecter les paramètres de la fonction mail. $datein doit être quelque part dans $message.

Eléphant du PHP | 63 Messages

03 oct. 2015, 16:43

bonsoir or1
message c'est un commentaire
datein c est une date d'arriver avec un calendrier. comme quand tu remplis un formulaire avec date d arrivee et date de depart, je pense pas qu on puisse le mettre dans messages qui est le commentaire du cient qui reserve. je pense que le problem vient du format des dates dd/mm/yy qui semble ne pas etre reconnu par la verification du formulaire . je ne suis pas developpeur mais tous les autres champ fonction sauf les deux dates arrivee et depart.