8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis bloqué sur une transmission de variables php. Voici la logique de ma

demande: Quand un client laisse un message ou une reservation sur mon formulaire de

contact je voudrais savoir de quel moteur de recherche il provient. J'ai déjà un

petit programme qui tourne sur ma page index.php pour savoir d'ou il provient et je

voudrais recuperer une des variables (dans formulaire-contact.php) pour la

transmettre en meme temps que les informations envoyés par le formulaire de

contact(infos envoyées par cible.php). Suis-je clair?
En bref, il a y a pages concernées: index (d'ou je veux recuperer une variable),

formulaire-contact.php (la ou je veux integrer ma variable) et cible.php qui est la

page s'occupant d'envoyer le mail.

Mon soucis est je ne recupère pas ma variable nommée urlReferer avec mon

$_POST['urlReferer']. Le résultat est toujours: "Pas de donnees sur la provenance du

visiteur"

Est-ce que quelqu'un voit ou le probleme se situe, est-ce que ca pourrait venir du

chemin (action="../voyage-maroc/formulaire-contact.php") du formulaire (hidden) de

index.php?

Voici les extraits de codes, ou sinon directement :http://www.mohatravel.com:

index.php:
<?php
$vraieip = getenv("HTTP_X_FORWARDED_FOR");
$urlReferer = $_SERVER['HTTP_REFERER'];
$id_timestamp= time();
$annee=date("Y");
$mois=date("m");
$jour=date("d");
$heure=date("H");
$minute=date("i");
$seconde=date("s");
///////////////////////////////////////////////////
// Fonctions- Méthodes.
///////////////////////////////////////////////////
/* Récupération Host et IP */
if ($vraieip=="") { $vraieip = $REMOTE_ADDR;}

if (getenv('REMOTE_ADDR') != "")
{
$host = @GetHostByAddr(getenv('REMOTE_ADDR'));
}
else
{
$host = @GetHostByAddr($_SERVER['REMOTE_ADDR']);
}
?>
<form id="envoi_stats" method="post" action="./voyage-maroc/formulaire-contact.php">
<input type="hidden" name="urlReferer" id="urlReferer" value="<?php echo

$urlReferer; ?>" />
</form>


formulaire-contact.php:
<tr>
<td>

<?php
$vraieip = getenv("HTTP_X_FORWARDED_FOR");
$urlReferer = $_POST['urlReferer'];
$navig = $_SERVER["HTTP_USER_AGENT"];
$id_timestamp= time();
$annee=date("Y");
$mois=date("m");
$jour=date("d");
$heure=date("H");
$minute=date("i");
$seconde=date("s");

if (isset($urlReferer) || (empty($urlReferer)) || ($urlReferer=="")) {$urlReferer =

"Pas de donnees sur la provenance du visiteur";}

/* Récupération Host et IP */
if ($vraieip=="") { $vraieip = $REMOTE_ADDR;}

if (getenv('REMOTE_ADDR') != "")
{
$host = @GetHostByAddr(getenv('REMOTE_ADDR'));
}
else
{
$host = @GetHostByAddr($_SERVER['REMOTE_ADDR']);
}
$visites = "Visite de $host le $jour/$mois/$annee a $heure:$minute:$seconde, le

visiteur vient de :$urlReferer avec $navig";
?>

</td>
<td><input type="hidden" name="visites" id="visites" value="<?php echo $visites; ?>"

/>
</td>
</tr>


cible.php: (celui-ci fonctionne bien)
<?php
$mail_entete = "MIME-Version: 1.0\r\n"; // Ca ces les en tetes de ta fonction mail,

ca sert a donner le type de messages que tu transporte en locurence du texte simple
$mail_entete .= "From: {$_POST['nom']} "
."<postmaster@mohatravel.com>\r\n";
$mail_entete .= "Reply-To: postmaster@mohatravel.com\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer Smiley langue HP/' . phpversion()."\r\n";


$var = 'Nom: ' . $_POST['nom']."\r\n"; // C'est le contenu du

message
$var .= ' Prenom: ' . $_POST['prenom']."\r\n\r\n";
$var .= ' E-mail: ' . $_POST['email']."\r\n";
$var .= ' Télephone: ' . $_POST['telephone']."\r\n\r\n";
$var .= ' Adresse: ' . $_POST['adresse']."\r\n";
$var .= ' Ville: ' . $_POST['ville']."\r\n\r\n";
$var .= ' Circuit choisi: ' . $_POST['circuits']."\r\n";
$var .= ' Véhicule choisi: ' . $_POST['vehicules']."\r\n";
$var .= ' Nb personnes: ' . $_POST['nb_personnes']."\r\n\r\n";
$var .= ' Commentaires: ' . $_POST['commentaires']."\r\n\r\n";
$var .= ' Provenance des Reservations: ' ."\r\n".

$_POST['visites']."\r\n\r\n";


if ($_POST['nom'] == "" OR $_POST['prenom'] == "" OR $_POST['email']

== "") { // si les champs suivants sont vides , on affiche le texte suivant sur la

page en demandant de cliquer sur formulaire pour y revenir
?>



<p>Erreur d'envoi du mail.</p>
<?php
} else {

$res_mail=mail("postmaster@mohatravel.com", "Reservation

CLIENT INTERNET", "$var", "$mail_entete" ); // Fonction d'envoi du mail, tu peut

augmenter le nom de variables a envoyer et le nom, ici Reservation Internet
?>

Merci d'avance de consacrer quelques minuets ou secondes pour certains à mon souci.

miu2rennes
Modifié par miu2rennes (24 Mar 2010 - 14:03)
Coucou,

Je vois à peut pres mais je sais pas trop d'ou ca vient si ce n'est qu'il y a un souci au niveau du http de récupération..
En tete de fichier, sous la récupération essaie de mettre var_dump($urlReferer) et poste la réponse ^^
Biz
Merci Littledaem pour ta rapidité!

J'ai tenté le var_dump pour y voir plus clair et voila ce que cela donne:

var_dump($urlReferer);
$urlReferer = $_POST['urlReferer'];
var_dump($urlReferer);


Je l'ai mis en amont et en aval pour voir la différence, et comme on pouvait s'y attendre, la fonction renvoi NULL et NULL. La méthode POST ne fonctionne donc pas du tout alors qu'elle fonctionne bien de formulaire-contact.php vers cible.php.
Je pense que c'est un truc tout bête mais mon regard n'arrive pas dessus!