Aller au contenu

Accceder à page si bon referer


Sujets conseillés

Posté

Bonjour à tous,

Auriez vous un tuto qui me permettrait de faire un truc assez facile je pense ... :)

Je souhaite qu'une page de mon site ne soir disponible que si on est passé par une autre page avant !

Exemple :

L'accés à la page protege.php ne peut se faire que si on vient de la page confirmation.php

en gros, si on vient de toutes les autres pages de la planète (même de mon site) avant de pouvoir arriver sur confirmation.php, on est obligé de passer (donc d'être redirigé) vers protege.php

Si quelqu'un a compris merci de me faire signe :wacko:

Posté

Tu peux essayer avec $_SERVER['HTTP_REFERER'] pour connaitre la dernière page.

Tu fait un test et si la page précédente n'est pas celle que tu veux tu fais une redirection avec un header.

<?php
if ($_SERVER['HTTP_REFERER'] != "http://www.monsite.com/confirmation.php")
header('Location: mapage.php');
?>

Je ne l'ai pas testé mais c'est ce que j'essaierai. Par contre en effectuant une recherche j'ai trouvé ceci à propos du HTTP_REFERER :

"L'url du site d'où vient le visiteur de la page (pas toujours renseigné ou exact)" à cette adresse : tout est facile.

A voir donc...

Posté
"L'url du site d'où vient le visiteur de la page (pas toujours renseigné ou exact)"

Oui, car certains Pare-Feus (ex: Norton Internet Security 200x) vident cette variable ou bien la remplacent par des chaines de caractères aléatoires :)

Posté

Merci de vos elements de réponse.

Existe t-il la même chose sans modifier le header ?

chris

Posté

Du coup je me répond tous seul mais grâce à votre aide :)

voici donc ce que j'ai fait car je ne pouvais pas modifier les informations header

<?php
if ($_SERVER['HTTP_REFERER'] == "confirmation.php")
{
echo 'c bon';
}
else {
echo 'Vous devez accepter les conditons d\'utilisation';}
?>

qu'en pensez vous ?

Posté

On en pense que le HTTP_REFERER n'est pas toujours renvoyé, et donc que tu risque de bloquer certains internautes.

Pourquoi ne pas rendre le lien valable uniquement 5 minutes par exemple ?

Je m'explique : dans confirmation.php tu génère une clé aléatoire basé sur la date et tu pointe vers ta page avec la clé :

<a href="page.php?cle=TON_CODE_ALEATOIRE">page</a>

dans page.php

1/ tu vérifie le HTTP_REFERER

2/ si le 1/ ne passe pas, tu vérifie que la clé est bien valide.

enfin, c'est une idée..

Posté
Pourquoi ne pas rendre le lien valable uniquement 5 minutes par exemple ?

Pourquoi, tout simplement car je sais pas le faire :mad2:

Enfin je vais approfondir ...

Posté (modifié)

Bonjour,

Et un petit formulaire en post sur ta page confirmation avec sur ta page protege un

if (isset($_POST['acceptation'])
{
Bla bla
}
else{
echo '<a href="acceptation.php">Veuillez accepter les conditions....</a>';
...
}

Ca ne modifie en rien le header et ça évite le problème du http referer ?

Modifié par ghost
Posté

Je suis désolé mais je n'ai pas compris ?

if (isset($_POST['acceptation']) ???

Merci ghost

Posté

Désolé, j'avais l'apéro sur le feu ...

Bon dans ta page de confirmation tu crées un petit formulaire en mode $_post, dans ta page protege, tu récupères ton $_post, si il "existe" ( if (isset($_POST['acceptation'] ) et éventuellement si la valeur attendue est correcte 'acceptation'= 'oui' tu affiches ta page sinon ta page ne s'affiche pas et te renvoit sur un lien du style "pour continuer veuillez accepter préalablement ..." qui renvoit tes visiteurs vers la page confirmation. Dans le cas où tes visiteurs arrivent de "l'extérieur" $_post n'existera pas mais le lien vers confirmation oui, mais ça cela doit se pouvoir se régler pour les rediriger vers ... ta page d'accueil par exemple.

Ce n'est qu'une idée !! Il ya sûrement mieux

Posté
Commençons par le début. Pour quelle raison est ce que tu veux faire ça ? Est-ce un problème de sécurité ? ou non ?

Effectivement en formulant la question comme cela, même moi je me rend compte que je ne vais pas vers le chemin le plus court :blush:

En fait, je veux que les utilisateurs accepte les conditions générale avant de remplir un formulaire !

Donc je pourrais peut-être inclure un simple bouton dans le formulaire ...

Posté (modifié)
Effectivement en formulant la question comme cela, même moi je me rend compte que je ne vais pas vers le chemin le plus court :blush:

En fait, je veux que les utilisateurs accepte les conditions générale avant de remplir un formulaire !

Donc je pourrais peut-être inclure un simple bouton dans le formulaire ...

Pourquoi faire simple quand on peut faire compliqué :)

C'est la meilleure méthode à mon sens. Pour une boutique en ligne je vérifie en javascript que la case (j'ai bien lu les conditions générales) soit cochée et sur la page de destination je vérifie une deuxième fois en PHP.

Pourquoi deux vérifications ? En le faisant en javascript tu ne fait pas perdre de temps à ton internaute, il sait immédiatement qu'il a oublié de cocher la case.

En PHP pour s'assurer que tes internautes qui n'ont pas le javascript d'activé (entre 7 et 11% suivants les études) ne soient pas bloqués et que tu sois sûr qu'ils aient accepté tes conditions générales.

Le code js sur la première page :

<script language="javascript" type="text/javascript"> 
function validation()
{

if(document.choix.cgv.checked == false)
{
alert("Vous ne pouvez continuer sans avoir accepté les conditions générales de ventes." );
return false;
}

else
{return true;}
}
</head>
<body>
<form action="validation.php" method="post" name="choix" onsubmit="return validation()";>
<input name="cgv" value="1" type="checkbox"> Je déclare avoir lu et accepté les <a href="popu-up.php">conditions générales de ventes</a>
[...]

sur ta page validation.php :

<?
if (!isset($_POST['cgv']))
{
echo "Vous avez oublié d'accepter les CGV, cliquez sur le bouton precedent de votre navigateur";
}
else
{
echo "CGV acceptées, on continue...";
}
?>

Tu n'as presque plus qu'à copier / coller et à changer les noms de tes champs de formulaire :smartass:

Modifié par dldstyle

Veuillez vous connecter pour commenter

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



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