URL de départ suite à une redirection

Matthiouw Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
Matthiouw Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, Bonjour,

Je travaille actuellement sur un petit projet de PHP dans le cadre de mon DUT Informatique et j'ai un petit problème. Je travaille sur Wamp et le localhost pour le moment.

Je souhaite récupérer l'URL de départ après une redirection 404 de mon fichier .htaccess qui ne contient que la ligne suivante :
ErrorDocument 404 http://toto.com/erreur.php 


J'explique ce que j'essaie de faire par un petit exemple :

1 - Je lance l'URL : "http://www.toto.com/azerty"
2 - Je suis alors rediriger vers : "http://www.toto.com/erreur.php"
Et je souhaite afficher sur cette page un message du genre : "Vous aviez envie d'aller sur toto.com/azerty. Mais cela n'est pas possible !"

J'ai découvert dans mes recherches, le champ HTTP_REFERER grâce à "phpinfo();". Mais cela ne fonctionne pas dans mon exemple. J'ai réussi à obtenir une URL suite à un clic sur une balise "a", que je pourrais alors découper à l'aide de parse_url. Exemple :
Dans page_1.php :
 <a href="page_2.php">suivant</a>

Dans page_2.php :
<?  
$toto = $_SERVER['HTTP_REFERER'];  
echo $toto;  
?>

Et j'obtiens bien "http://localhost/page_1.php" en affichage sur page_2.php.

Mais comme dit plus haut, cela ne marche pas avec la redirection de mon .htaccess.

Auriez-vous une idée pour obtenir ce que je souhaite ?

Merci par avance :)

Matthieu.

3 réponses

Utilisateur anonyme
 
salut,

avec de l'URL rewriting, tu prends tout se qui suit le slash apres les domaine, et tu le passes en parametre dans une autre page :
http://www.toto.com/azerty
==>
http://www.toto.com/depot_de_cookie.php?cookie=azerty

La page depot_de_cookie.php va deposer un cookie sur le pc hote, et faire juste apres une redirection sur la page erreur.php , qui s'affichera et le javascript lira la valeur du cookie et l'affichera .

j'espere avoir repondu a ta question :)




P.S : apres, tu peux utiliser la variable $_SESSION pour le depot du cookie ^^
0
Matthiouw Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci pour ta réponse, et désolé du temps que j'ai mis à tester la solution.

Faut juste que je trouve un bon tutoriel pour piger les redirections de la sorte, j'ai un peu du mal avec les ^ les $ ,...

Dans ton exemple, tu as "?cookie=azerty".
Est-ce que je peux atteindre "azerty" en faisant qqc du genre "echo $_cookie" ? Ou bien je dois passer par le parse_url et obtenir le champ en question ?

Pour mon projet, il faut que je code les requêtes qui interroge ma base pour avancer. J'essaie de faire ça rapidement et fin de la semaine je reviens mettre "résolu" ou avec d'autres questions.
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
C'est étonnant que ça ne fonctionne pas car le code du fichier .htaccess est correcte et doit théoriquement rediriger vers la page d'erreur (sauf si l'url qui est en local est incorrecte).

Dans la page d'erreur :
	  if(empty($HTTP_REFERER)) { 
	  $provenance="Pas de lien intermédiaire, connexion directe"; }
	  else 
	  { 
	  $provenance=$HTTP_REFERER; 
	  }
0
maka54 Messages postés 698 Date d'inscription   Statut Membre Dernière intervention   80
 
En fait tu tourne en rond

tu appelles une page qui n'existe pas, on va l'appeler not_exist.php

elle n'existe pas donc tu est redirigé vers erreur.php

sur cette page tu utilises le code $_SERVER['HTTP_REFERER']

$_SERVER['HTTP_REFERER'] qui vaut not_exist.php
0
Matthiouw Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Okay, je vais réfléchir pour simplifier la chose alors.

Le projet me permet de réduire des URL.

Je veux par exemple que "toto.com/12345" me redirige vers google.com (une table de ma base me permet de stocker cela).
J'utilise donc "12345" pour lancer une requête qui va me chercher le champ "google.com" et le stock dans $redirection.
Ensuite, j'effectue la redirection avec un code du type :
header('Location: '.$redirection);


Cependant, je souhaite arriver sur l'accueil si je fais toto.com/index, ou sur une page de gestion de compte si on avait saisie toto.com/compte sans pour autant les stocker dans la table (et je crois que ça risque de boucler indéfiniment si je le fait en plus).

Est-ce possible de "filtrer" les redirections ? Si on a une page qui existe dans le répertoire, alors on la charge, sinon on lance la requête.
Faut-il tout rediriger et tester sur la page PHP, ou bien ajouter des lignes dans le .htaccess?

Edit : c'est peut-être un peu confus, mais quand j'écris, pleins d'idées me viennent...
0
Matthiouw Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Pour le moment, j'ai résoudre mes petits soucis avec un .htaccess contenant :
ErrorDocument    404    /toto/error404.php


Mais, je viens de remarquer dans le sujet la phrase suivante : "votre projet doit fonctionner quel que soit le répertoire utilisé pour l'installation".
Il faudrait donc que j'ai quelque chose du genre :
ErrorDocument     404    ./error404.php

avec "./" qui renvoie le dossier courant comme sur Unix ou cmd Windows.

Ca me renvoi un page ayant comme code source juste le " ./error404.php", alors que j'ai une page error404 avec une 40aine de ligne de code.

Par quels moyens puis-je faire la redirection qui fonctionne que je soit placé à la racine ou que je soit dans 15 sous dossiers (/toto/bibi/lala/pom/yop/error404.php)?
0