envoyer cette page à un ami

Christoff
Invité n'ayant pas de compte PHPfrance

30 août 2006, 09:44

Bonjour
Je fais une page "envoyer cette page a un ami" nommée send.php
je transmet la page à envoyer (ex: index.php) dans un champ caché par $url=$_SERVER['HTTP_REFERER'];
Mon probleme est qu'en cas d'erreur, la meme page send.php est rappelée ($_SERVER["PHP_SELF"]) donc ma variable $url est égale à http://..../send.php et non plus comme je le voudrais à http://..../index.php
Quelqu'un a-t-il déjà rencontré ce problème ?
Merci d'avance pour la ou les réponses... :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 août 2006, 10:53

Afin de renseigner ton champ caché, tu peux peut être tester si celui-ci n'a pas été envoyé via le formulaire, ou s'il y a eu une erreur, ou autre...

Quelque chose de la forme
if(...) // en cas d'erreur, de valeur définie, ou ce que tu veux
  $url = $_POST['url'];
else // sinon, par défaut on utilise le referer
  $url = $_SERVER['HTTP_REFERER'];

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 août 2006, 11:36

Je tiens tout de même à apporter un bemol au script de Ryle : l'utilisation de HTTP REFERER. Cette varaible dépend du navigateur et n'est pas toujours disponible ...
'HTTP_REFERER'

L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Christoff
Invité n'ayant pas de compte PHPfrance

30 août 2006, 11:59

merci pour ces réponses

Ryle, j'ai testé ton bout de code, ça marche nickel ! Merci !

Zeus, je ne sais pas bien comment palier au défaut dont tu parles, peux tu me dire s'il existe une autre "technique" ? Comment ferais-tu ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 août 2006, 12:06

Chuis pas un habitué du referer, mais comme c'est ce que tu uilisais, j'ai gardé :)

Ce que tu peux faire peut être c'est modifier ton lien "envoyer à un ami" vers la page send.php pour que ce soit lui donne le paramètre url de la page en cours de consultation...
<a href="send.php?url=<?php echo $_SERVER['PHP_SELF']; ?>">...</a>

Christoff
Invité n'ayant pas de compte PHPfrance

30 août 2006, 12:32

ouep je vais peut être bien faire ça
la sécurité avant tout...

Invité
Invité n'ayant pas de compte PHPfrance

30 août 2006, 12:35

comment je fais pour le [résolu] ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 août 2006, 14:16

Plutot que d'utiliser le REFERER, je redirige vers la page la plus haut placée dans l'arborescence du site par laquelle le visiteur a dû passé.

Le nom est stocké en dur, certes, mais je n'ai pas de soucis de referer ;)

Sinon, pour le RESOLU, il faut etre enregistré. Mais je l'ai fait pour toi. Pense à t'enregistrer si tu reviens nous sommetre une question, on pourra te faire passer l'epreuve initiatique :twisted: oups, j'aurais rien dû dire :oops:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer