lupucide Posté 24 Février 2005 Posté 24 Février 2005 (modifié) Bonjour (ou bonsoir). Mon premier thread sur le Hub, j'en ai la larme à l'oeil Sur un site en construction (pas grand chose, juste un bloc-notes sur Firefox, Apache et PHP) je place un petit formulaire : <form action="themeswitcher.php" method="post"> <p><label for="themeswitcher">Themeswitcher</label></p> <p><select name="design"> <optgroup> <option selected="selected">Hiaho</option> <option>Classique</option> </optgroup> </select> <input type="submit" value="OK" /></p></form> qui appel donc le fichier themeswitcher.php composé de : <?phpsetcookie ('style', $_POST['design'], time()+365*24*3600, '/');header ('Location: index.php');?> Je récupère ensuite le cookie avec ceci : <?phpif (isset($_COOKIE['style'])) { $style = strtolower($_COOKIE['style']);}else { $style = 'hiaho';}?><link rel="stylesheet" href="<?php echo 'themes/'.$style.'.css' ?>" type="text/css" /> Tout fonctionne, c'est que du bonheur, de la joie plein la tête. Le problème est que le script redirige vers index.php mais les URL seront plutôt du style index.php?page=firefox. Je me pose donc de savoir si il est possible de faire passer l'URL en cours au script pour que celui-ci redirige vers la page qui était consulté. Bonne question qui pourrait en intéresser plus d'un je pense. J'ai chercher pendant un petit moment sans résultats, si quelqu'un pouvait m'éclairer sur ce point Note au modérateurs : je m'excuse du titre ne décrivant pas très bien le sujet mais j'ai eu du mal à mieux le décrire. Modifié 24 Février 2005 par lupucide
Jok Posté 24 Février 2005 Posté 24 Février 2005 Tu mets un champ input hidden dans ton formulaire ou tu mets dedans la variable php $_SERVER['PHP_SELF'] qui contient l'url de la page courante. <input type="hidden" name="redir" value="<?=$_SERVER['PHP_SELF']?>" /> Puis dans ton fichier themeswitcher.php tu mets : <?phpsetcookie ('style', $_POST['design'], time()+365*24*3600, '/');header ('Location: '.$_POST['redir'].'');?> Et normalement tout devrai fonctionner.
Thanh Posté 24 Février 2005 Posté 24 Février 2005 Eventuellement, tu peux sans le champ input caché, utiliser directement $_SERVER["HTTP_REFERER"]
lupucide Posté 24 Février 2005 Auteur Posté 24 Février 2005 (modifié) Eventuellement, tu peux sans le champ input caché, utiliser directement $_SERVER["HTTP_REFERER"] J'ai bien essayer ça mais mon serveur local (WAMP5) me dit que je n'ai pas les droits, je n'ai donc pas persister la dessus car sur un hébergement cela pourrais me donner la même chose et je ne pourrais pas modifier la configuration Apache ou PHP. Jok => J'essaye ça et je donne des nouvelles. Merci pour votre aide à tous les deux. [EDIT] Parfois il vaut mieux allez se coucher que s'énerver : <?phpsetcookie ('style', $_POST['design'], time()+365*24*3600, '/');header ('Location: '.$_SERVER["HTTP_REFERER"].'');?> Et ça fonctionne. J'avais juste oublier d'entourer le HTTP_SERVER lors de mes essais :run: Merci encore pour votre aide. Modifié 24 Février 2005 par lupucide
Jok Posté 24 Février 2005 Posté 24 Février 2005 Effectivement solo On pouvais faire plus simple En espérant que personne ne tombe par hasard sur la page themeswitcher.php sans venir du site
Jok Posté 24 Février 2005 Posté 24 Février 2005 (modifié) Arg double post ... désolé Modifié 24 Février 2005 par Jok
Thanh Posté 24 Février 2005 Posté 24 Février 2005 J'ai bien essayer ça mais mon serveur local (WAMP5) me dit que je n'ai pas les droits, je n'ai donc pas persister la dessus car sur un hébergement cela pourrais me donner la même chose et je ne pourrais pas modifier la configuration Apache ou PHP. Jok => J'essaye ça et je donne des nouvelles. Merci pour votre aide à tous les deux. [EDIT] Parfois il vaut mieux allez se coucher que s'énerver : <?phpsetcookie ('style', $_POST['design'], time()+365*24*3600, '/');header ('Location: '.$_SERVER["HTTP_REFERER"].'');?> Et ça fonctionne. J'avais juste oublier d'entourer le HTTP_SERVER lors de mes essais :run: Merci encore pour votre aide. <{POST_SNAPBACK}> Dans ce cas là tu as parse_url() qui te permet d'extraire l'host d'une url et puis tu testes que le referer est bien un lien interne
lupucide Posté 24 Février 2005 Auteur Posté 24 Février 2005 Je me renseigne donc. http://fr2.php.net/manual/fr/function.parse-url.php Cette fonction n'est pas destinée à valider des URL, mais à les scinder en parties. Les URL partielles sont aussi acceptées, parse_url() essaie alors de l'analyser correctement. Ce ne serait pas mieux ? <?phpsetcookie ('style', $_POST['design'], time()+365*24*3600, '/');$url = $_SERVER["HTTP_REFERER"];$host = 'localhost';$search = strpos($url, $host);if ($search === false) { echo 'Erreur !';} else { header ('Location: '.$_SERVER["HTTP_REFERER"].'');} ?>
Jok Posté 25 Février 2005 Posté 25 Février 2005 Pourquoi localhost ? Ah p'tet pour l'exemple... Oé se serai mieux dans ce cas. Au moins tu es sur que la personne vient bien de ton site.
lupucide Posté 25 Février 2005 Auteur Posté 25 Février 2005 Pourquoi localhost ?Ah p'tet pour l'exemple... Oui, pour l'exemple. Si le code un peu mieux présenter intéresse quelqu'un je l'ai mis à disposition ici : http://hiaho.free.fr/index.php?page=themeswitcher-PHP
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant