nombre de ligne dans un mail/formulaire?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : nombre de ligne dans un mail/formulaire?

par Boro64 » 11 déc. 2006, 18:30

Grand merci à toi Ultim4T0m,
et honte à moi... :oops: ...mon grand âge m'empeche de comprendre plus facilement qu'un plus jeune...fichtre!
Effectivement le code en est simplifié...et fonctionnel!
On va dire que c'est parceque je n'ai qu'un mois d'apprentissage du php :?

Donc encore mille mercis Ultim4T0m, ainsi qu'à vous tous et toutes qui avez la patience de me lire et de me répondre. Merci pour votre pédagogie aussi.
J'espère que vous ne m'en voudrez pas trop de mes questions de débutants (j'en ais encore plein... :wink: ).
Mais je ne désespère pas, grâce à vous tous.
A très vite

par Ultim4T0m » 11 déc. 2006, 17:52

Ecrire
<?
$variable.= 'Bonjour';
?>
revient en fait à faire tout simplement :
<?
$variable = $variable . 'Bonjour' ;
?>
Donc non, la concaténation ne se fera pas.

Ensuite, je t'ai précisé que tu devrais créer ta variable $message avec tout son contenu AVANT la fonction mail(); et non dedans.

En gros :
<?php

$adresse_destinataire = '[email protected]';
$objet = 'Reservation';
$message = addslashes(
"Date d'arrivee : \n" . $_POST['Jour A'] . $_POST['Mois A'] . $_POST['Annee A'] . 
"\n Depart : \n" . $_POST['Jour D'] . $_POST['Mois D'] . $_POST['Annee D'] .
"\n Nombre de personnes : \n" . $_POST['nombre'] .
"\n Animaux : \n" . $_POST['choix'] .
"\n Nom du locataire : \n" . $_POST['nom'] .
"\n Email du locataire : \n" . $_POST['email']
"\n Adresse du locataire : \n" . $_POST['adresse']);



 mail(
    $adresse_destinataire,
    $objet,
    $message); 
?>
Là c'est sans doute un peu mieux, bien qu'il y ait encore des choses à modifier. J'ai un peu changer ta mise en forme pour une meilleure clarté du mail.

Dernière chose, c'est \n et non /n ;)

Pour les accents dans "Arrivée", tu parles du é ? ^^
Non, cela ne perturbera pas le code en lui même, sauf si tu t'amuses à nommer des variables avec des accents, mais cela peut poser des soucis pour l'affichage dans le navigateur. C'est pourquoi il vaut mieux utiliser les entités html é => &eacute;

par Boro64 » 11 déc. 2006, 16:45

Merci Ultim4T0m,
mais je croyais les "." servait à concaténer....et si je ne mets pas de point devant le "=" la concaténation va-t-elle se faire?
Ceci étant c'est vrai que mon script n'était pas très propre, je les nettoyé suivant tes avisés conseils et voilà maintenant l'erreur que j'obtiens :(

Code : Tout sélectionner

Parse error: syntax error, unexpected T_VARIABLE in /home.7/*****verif.php on line 55
mon script étant devenu:
<?php
	$message = "Reservation";
	$JourA = $_POST['Jour A'];
	$MoisA = $_POST['Mois A'];
	$AnneA = $_POST['Annee A'];
	$JourD = $_POST['Jour D'];
	$MoisD = $_POST['Mois D'];
	$AnneD = $_POST['Annee D'];
	$nombre = $_POST['nombre'];
	$animaux = $_POST['choix'];
	$nom = $_POST['nom'];
	$email = $_POST['email'];
	$adresse = $_POST['adresse'];
	
	if(empty($nombre))
	{
	print ("<center>Le nombre doit être renseigné</center>");
	exit();
	}
	if(empty($animaux))
	{
	print ("<center>La ligne animaux doit être renseignée</center>");
	exit();
	}
	if (empty($nom))
	{
	print ("<center>Le nom doit être renseigné</center>");
	exit();
	}
	if(empty($email))
	{
	print ("<center>Votre email doit être renseigné</center>");
	exit();
	}
	if(empty($adresse))
	{
	print ("<center>Votre adresse doit être renseignée!</center>");
	exit();
	}
	else
	{
	
	mail(
	"[email protected]",
	$message = "Reservation",
	$_POST['Jour A'] $_POST['Mois A'] $_POST['Annee A']"Date d'arrivee""/n",
	$_POST['Jour D'] $_POST['Mois D'] $_POST['Annee D']"Depart=" "/n",
	$_POST['nombre']  "Nombre de personnes""/n" $_POST['choix'] . "Animaux""</hr>",
	$_POST['nom']  "Nom du locataire""/n" $_POST['email'] . "Email du locataire""/n"
	$_POST['adresse']  "Adresse du locataire""</hr>");
	echo ('Merci. Votre demande a bien été envoyée; nous vous contactons très vite');
	exit();
	}
	?>
Autre chose: est-il exact que les accents dans mes "" (ex:"Arrivee") puissent "perturber" mon code? ou est-ce une légende?

par Ultim4T0m » 11 déc. 2006, 16:17

Hum, pas trop sûr, mais c'est déjà plus proche de quelque chose de correct. Attention aux points virgules ! Les virgules servent ici à délimiter les paramètres que tu passes à la fonction mail();
Un point virgule termine une instruction.

En l'occurrence, tu dois tout mettre dans ta variable $message avant la fonction mail(); et non dedans ^^

J'ai sans doute fait plein d'erreurs, j'ai du mal à lire correctement ton code avec toutes ces virgules et ces points qui ne sont pas où ils devraient... Les points servent à concaténer, relis quelques tutos php, car quelque chose de ce genre est totalement faux et vide de sens :
<?php    
$message .= .$_POST['nombre'] . "Nombre de personnes""/n/n"<hr />,
.$_POST['choix'] . "Animaux""</hr>", 
?>
Bref, voilà un semblant de correction, j'espère que ça pourra t'aider un peu.
$message =  = "Reservation";
$message .= "Arrivee=".$_POST['Jour A'].$_POST['Mois A'].$_POST['Annee A']."/n";
$message .= "Depart=".$_POST['Jour D'].$_POST['Mois D'].$_POST['Annee D']."/n";
$message .= $_POST['nombre']."Nombre de personnes /n/n<hr />,".$_POST['choix']. "Animaux</hr>";
$message .= $_POST['nom'] . "Nom du locataire""/n";

mail(
    "[email protected]",
    $message,
    $_POST['email'] . "Email du locataire/n",
    $_POST['adresse'] . "Adresse du locataire</hr>");

par Boro64 » 11 déc. 2006, 16:06

Pffffff...ça s'arrange pas!
Bonjour à mes éventuel(le)s lecteurs(trices).
Alors voilà ce qu'est devenu mon script:
<?php
	
	$JourA = $_POST['Jour A'];
	$MoisA = $_POST['Mois A'];
	$AnneA = $_POST['Annee A'];
	$JourD = $_POST['Jour D'];
	$MoisD = $_POST['Mois D'];
	$AnneD = $_POST['Annee D'];
	$nombre = $_POST['nombre'];
	$animaux = $_POST['choix'];
	$nom = $_POST['nom'];
	$email = $_POST['email'];
	$adresse = $_POST['adresse'];
	
	if(empty($nombre))
	{
	print ("<center>Le nombre doit être renseigné</center>");
	exit();
	}
	if(empty($animaux))
	{
	print ("<center>La ligne animaux doit être renseignée</center>");
	exit();
	}
	if (empty($nom))
	{
	print ("<center>Le nom doit être renseigné</center>");
	exit();
	}
	if(empty($email))
	{
	print ("<center>Votre email doit être renseigné</center>");
	exit();
	}
	if(empty($adresse))
	{
	print ("<center>Votre adresse doit être renseignée!</center>");
	exit();
	}
	else
	{
	
	mail(
	"[email protected]",
	$message = "Reservation",
	$message .= "Arrivee=" .$_POST['Jour A'] .$_POST['Mois A'] .$_POST['Annee A']"/n",
	$message .= "Depart=" .$_POST['Jour D'] .$_POST['Mois D'] .$_POST['Annee D']"/n",
	$message .= .$_POST['nombre'] . "Nombre de personnes""/n/n"<hr />,
	 .$_POST['choix'] . "Animaux""</hr>",
	$message .= .$_POST['nom'] . "Nom du locataire""/n",
	.$_POST['email'] . "Email du locataire""/n",
	.$_POST['adresse'] . "Adresse du locataire""</hr>"),
	echo ('Merci. Votre demande a bien été envoyée; nous vous contactons très vite');
	exit();
	}
	?>
et jobtiens ce message :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home.7/******* on line 55
La ligne 55 c'est:
$message .= "Arrivee=" .$_POST['Jour A'] .$_POST['Mois A'] .$_POST['Annee A']"/n",
et là, franchement je suis perdu... :x
Heu, si quelqu'un(e) à une idée, une info, une indication, n'importe quoi, ça serait vraiement aimable.
Merci d'avance

par Boro64 » 11 déc. 2006, 01:04

Merci Truc,

je viens de tester ...et j'ai le message suivant:
Parse error: syntax error, unexpected ';' in...
J'ai déjà eu ce type de message, j'avais alors remplacé ";" par ","....???
C'est étrange car toi, comme toutes les docs que je lis précise bien un ";"...Mon hébergeur (ovh) dispose bien de php4 etphp5, je ne pense pas que cela vienne donc d'un désaccord entre ma synthaxe et son install...Exact?
Mon script devient donc:
<?php
	
	$JourA = $_POST['Jour A'];
	$MoisA = $_POST['Mois A'];
	$AnneA = $_POST['Annee A'];
	$JourD = $_POST['Jour D'];
	$MoisD = $_POST['Mois D'];
	$AnneD = $_POST['Annee D'];
	$nombre = $_POST['nombre'];
	$animaux = $_POST['choix'];
	$nom = $_POST['nom'];
	$email = $_POST['email'];
	$adresse = $_POST['adresse'];
	
	if(empty($nombre))
	{
	print ("<center>Le nombre doit être renseigné</center>");
	exit();
	}
	if(empty($animaux))
	{
	print ("<center>La ligne animaux doit être renseignée</center>");
	exit();
	}
	if (empty($nom))
	{
	print ("<center>Le nom doit être renseigné</center>");
	exit();
	}
	if(empty($email))
	{
	print ("<center>Votre email doit être renseigné</center>");
	exit();
	}
	if(empty($adresse))
	{
	print ("<center>Votre adresse doit être renseignée!</center>");
	exit();
	}
	else
	{
	
	mail(
	"[email protected]",
	$message = "Reservation";
	$message .= "Arrivee=" .$_POST['Jour A'] .$_POST['Mois A'] .$_POST['Annee A']"/n";
	£message .= "Depart=" .$_POST['Jour D'] .$_POST['Mois D'] .$_POST['Annee D']"/n";
	$message .= .$_POST['nombre'] . "Nombre de personnes""/n/n"</hr>;
	 .$_POST['choix'] . "Animaux""</hr>";
	$message .= .$_POST['nom'] . "Nom du locataire""/n"
	$_POST['email'] . "Email du locataire""/n",
	$_POST['adresse'] . "Adresse du locataire""</hr>");
	echo ('Merci. Votre demande a bien été envoyée; nous vous contactons très vite');
	exit();
	}
	?>
Vous en pensez quoi?
Encore toutes mes excuses pour ces posts de débutant, et mille mercis pour vos aides et soutient.

par Truc » 11 déc. 2006, 00:29

Si je défini une variable "message" pour reprendre l'intégralité de mes $_post cela résoudrait il le problème?
Tout à fait :)
Tu peux regarder CECI pour l'envoi de mails.

Tu dois donc t'arranger pour n'avoir qu'une variable contenant tout le message.
$message  = "Bonjour";
$message .= "Ceci est un bon message avec des ".$variables. " à l'interieur"; // note le point avant le = pour concaténer le chaine qui est après le = au contenu précédent de la variable.
Fait des tests pour voir :wink:

nombre de ligne dans un mail/formulaire?

par Boro64 » 10 déc. 2006, 23:50

Bonsoir,
et d'abaord encore merci à Cyrano pour son aide et ses conseils.
Voilà mon problème.
Lorsque mon form est validé puis envoyé, j'obtiens ce message en réponse:
Warning: mail() expects at most 5 parameters, 12 given in ........
Bon, je comprends bien que je depasse un nombre de parametre maximal (pour 5 je suis à 12) mais je ne sais comment résoudre cela
Si je défini une variable "message" pour reprendre l'intégralité de mes $_post cela résoudrait il le problème? Si oui quel serait le bon script?
$message = "" suivi de $message .= "JourA : "$_post['Jour A'].; etc?
Je suis un peu perdu et pas très sur de moi.
Voici mon script:
	<?php
	$JourA = $_POST['Jour A'];
	$MoisA = $_POST['Mois A'];
	$AnneA = $_POST['Annee A'];
	$JourD = $_POST['Jour D'];
	$MoisD = $_POST['Mois D'];
	$AnneD = $_POST['Annee D'];
	$nombre = $_POST['nombre'];
	$animaux = $_POST['choix'];
	$nom = $_POST['nom'];
	$email = $_POST['email'];
	$adresse = $_POST['adresse'];
	
	if(empty($nombre))
	{
	print ("<center>Le nombre doit être renseigné</center>");
	exit();
	}
	if(empty($animaux))
	{
	print ("<center>La ligne animaux doit être renseignée</center>");
	exit();
	}
	if (empty($nom))
	{
	print ("<center>Le nom doit être renseigné</center>");
	exit();
	}
	if(empty($email))
	{
	print ("<center>Votre email doit être renseigné</center>");
	exit();
	}
	if(empty($adresse))
	{
	print ("<center>Votre adresse doit être renseignée!</center>");
	exit();
	}
	else
	{
	
	mail(
	"[email protected]",
	$_POST['Jour A'],
	$_POST['Mois A'],
	$_POST['Annee A'],
	$_POST['Jour D'],
	$_POST['Mois D'],
	$_POST['Annee D'],
	$_POST['nombre'] . "Nombre de personnes/n/n",
	$_POST['choix'] . "Animaux/n/n",
	$_POST['nom'] . "Nom du locataire/n/n",
	$_POST['email'] . "Email du locataire/n/n",
	$_POST['adresse'] . "Adresse du locataire/n/n");
	echo ('Merci. Votre demande a bien été envoyée; nous vous contactons très vite');
	exit();
	}
	?>
Je n'en suis qu'au prémices (en php comme pour ce ccode -en fait mon premier...-) et j'imagine que je vais me heurter à d'autres pbs, aussi toute aide est elle la bienvenue...et mille excuses si ce type de post a déjà été fait, mais je suis un peu perdu, là.
Ah et pour répondre à une question de Cyrano, la méthode "die" serait elle effectivement plus appropriée que "exit" ?