Aller au contenu

transmission de variables par la méthode POST


Sujets conseillés

Posté

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 :Circuit 4x4 Maroc

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 = _AT_GetHostByAddr(getenv('REMOTE_ADDR'));
}
else
{
$host = _AT_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 = _AT_GetHostByAddr(getenv('REMOTE_ADDR'));
}
else
{
$host = _AT_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_AT_mohatravel.com>\r\n";
$mail_entete .= "Reply-To: postmaster_AT_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:PHP/' . 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_AT_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

Posté

Tu n'envoies pas le formulaire de index.php !

Utilise plutôt les SESSIONs ou les Cookies ;) , ça sera plus simple et tu pourras accéder à ces données sur chaque pages de ton domaine ;)

Exemple :

index.php <= Tu mets dans un cookie le HTTP_REFERER.

formulaire-contact.php => Tu mets dans une variable le contenu de ce fameux cookie ! :)

Posté

Utiliser le HTTP_REFERER ne me semble pas une bonne idée car cette variable n'est pas retournée par tous les navigateurs (voir doc php). des infos risquent donc d'être perdue en cour de route !

sinon le problème vient de là (dans formulaire-contact.php)

if (isset($urlReferer) || (empty($urlReferer)) || ($urlReferer=="")) {$urlReferer = "Pas de donnees sur la provenance du visiteur";} 

exactement ça

isset($urlReferer)

Qui signifie littéralement dans ton contexte : "si $urlReferer existe alors remplace ça valeur par Pas de donnees sur la provenance du visteur".

tu n'allais pas aller très loin comme ça !

Remplace

isset($urlReferer)

Par

!isset($urlReferer)

(le point d'exclamation)

et ça ira beaucoup mieux !

Pour Neroth :

Le formulaire étant traité dans formulaire-contact.php, il est donc normal de rediriger vers formulaire-contact.php ! Il n'y a aucune erreur sur ce point.

++

Patrick

Posté

Certes ! Mais un script envoie le formulaire ? dans index.php ? (J'ai pu me tromper ! Cela fais longtemps que je n'utilise plus les formulaires ^^')

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...