Kiko Posté 21 Mai 2005 Posté 21 Mai 2005 Bonjour à tous, Je suis débutant en PHP (en HTML aussi d'ailleurs) , et je pensait trouver de moi-même un moyen simple en PHP de réserver l'acces à une page qui ne doit être accédée que par un formulaire. Malheureusement ça ne marche pas . Voila un passage PHP que j'ai introduit au début de mon <body>: <?php if ( $_SERVER['REQUEST_METHOD'] == "GET") { header("Location: http://www.pagedaccueil.com/"); exit(); } ?> Le but étant de rediriger l'internaute sur la page d'accueil du site, s'il entrait l'URL de la page en question . Merci d'avance de m'aider à avancer.
YannCo Posté 21 Mai 2005 Posté 21 Mai 2005 Salut et bienvenue au HUB et dans le monde du PHP; Bon, c'était bien tenter et c'est à peu près comme ça que je procède. Seulement, à moins qu'il soit trop tard et que je sois à coté de la plaque, là tu dis que si il y a un GET aller à la page d'accueil, en utilisant la même méthose, que je n'ai jamais testé, ça devrait plutot être if(!$_SERVEUR ....{..} le point d'intérogation "!" avant ta variable va donner une contradiction à ta condition, pour être plus clair si il n'y a pas ... Par contre j'utilise une autre méthode ton GET a une 'identité", name $_GET['id_user'] (par exemple) donc tu peux tester si il existe if(!$_GET['id_user']){echo "Bye";} Seulement on pourra quant même atteindre ta page en mettant une url bidon avec index.php?id_user=1 Donc il te faudra aussi tester la valeur du GET exemple if((!$_GET['id_user']) || ($_GET['id_user'] != 1)){echo "il n'y a pas de get id_user et même si il y en a un il n'est pas égale à 1";} Pour concaténer des conditions tu utilises : "||" pour "ou" "&&" pour "et"
Anonymus Posté 21 Mai 2005 Posté 21 Mai 2005 Tu as 2 méthodes. la première, c'est effectivement de tester le GET. if (! isset($_GET))exit(); La seconde, c'est de tester la provenance du visiteur. S'il ne vient pas de la page du formulaire, alors 'exit'. if (! isset($_SERVER['HTTP_REFERER'])) exit(); le 'isset vérifiant si la variable existe ou non. Anonymus.
enroc Posté 22 Mai 2005 Posté 22 Mai 2005 La seconde, c'est de tester la provenance du visiteur. S'il ne vient pas de la page du formulaire, alors 'exit'. <{POST_SNAPBACK}> C'est une solution qui marche, mais il faut savoir qu'il est très facile de modifier le HTTP_REFERER :-(. Ce n'est donc pas suffisant pour une page sensible mais l'est tout à fait pour simplement éviter les problèmes de navigation.
Thanh Posté 22 Mai 2005 Posté 22 Mai 2005 $_GET et $_POST sont il me semble tjs "existants". Il faut tester la longueur du tableau.
Anonymus Posté 22 Mai 2005 Posté 22 Mai 2005 En fait, tout dépend de la configuration de ton serveur. S'ils sont toujours existants, il suffit de rajouter : if ((!isset($_GET))||(empty($_GET))) Ce qui vérifiera si $_GET n'existe pas, ou s'il est vide. Anonymus.
Kiko Posté 22 Mai 2005 Auteur Posté 22 Mai 2005 Bein merci pour les réponses, mais rien ne marche. La methode : if (!isset($_SERVER['HTTP_REFERER'])) exit(); me plait bien, mais ou dois-je ajouter if ((!isset($_GET))||(empty($_GET))) et pourquoi y a t'il plus de parenthèse fermantes qu'ouvrantes ?
Anonymus Posté 23 Mai 2005 Posté 23 Mai 2005 Au lieu de mettre : if ( $_SERVER['REQUEST_METHOD'] == "GET") {header("Location: http://www.pagedaccueil.com/");exit();} Tu mets : if ( ( ! isset($_GET) ) || ( empty ($_GET) ) ) header("Location: http://www.pagedaccueil.com/"); Il y a bien autant de parenthèses ouvrantes que fermantes, comme dans mes exemples La seconde méthode est identique, à savoir : if ( ( ! isset($_SERVER['HTTP_REFERER']) ) || ( empty ($_SERVER['HTTP_REFERER']) ) ) header("Location: http://www.pagedaccueil.com/"); Tu peux mettre les 2 méhodes tout en haut de ta page, en premier. Voilà.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant