Récup URL complexe (index.php/#/mapage/)

Récup URL complexe (index.php/#/mapage/) - PHP - Programmation

Marsh Posté le 07-06-2007 à 11:16:15    

Bonjour à tous :)
 
donc voilà, un petit probleme,
je voudrais récuperer l'url complete de la page ou du moins ce qui se trouve apres le #
 
mes urls seront comme suit :
 
www.site.com/#/mapage/
www.site.com/index.php/#/mapage/
 
sachant que dans les 2 cas c'est la meme page qui fait le traitement (index.php); en fonction de ce que j'ai apres le # je fait un include de l'html de la bonne page.
 
je suis obligé de garde ce style d'url parce que le but du jeu est de faire cohabiter une version html accessible avec une version full flash du site (sans refaire le flash, donc pas touche au format des url)
 
et là impossible de récupérer ce qu'il y'a apres #
j'ai essayé :

Code :
  1. $_SERVER['QUERY_STRING'] --> kedall
  2. $_SERVER['REQUEST_URI'] --> kedall
  3. $_SERVER['SCRIPT_FILENAME'] -->kedall


 
alors si quelqu'un peut m'aider ca serait très sympa :)
 
merci.

Reply

Marsh Posté le 07-06-2007 à 11:16:15   

Reply

Marsh Posté le 07-06-2007 à 11:57:13    

Bonjour,
 
avec ceci:

Code :
  1. $tab = explode('#', $_SERVER['PHP_SELF']);
  2. echo $tab[1];


 
?

Reply

Marsh Posté le 07-06-2007 à 12:00:35    

$_SERVER['PHP_SELF'] me retourne index.php il va pas plus loin donc le explode ne retourne rien puisqu'il y'a pas de # dans ce que je lui donne.

Reply

Marsh Posté le 07-06-2007 à 12:58:45    

C'est totalement impossible, ce qui vient après le # n'est pas envoyé au serveur, il est gardé par le navigateur. Si tu regardes la requête HTTP envoyé, tu vera qu'il n'apparaît nulle part. C'est ce qu'on appelle le fragment identifier

Reply

Marsh Posté le 07-06-2007 à 13:09:35    

Plus précisement, le protocole HTTP définit une URI comme :

Citation :

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]


 
Pas de # à l'horizon :( En Flash c'est évidemment possible de récupérer le FI, vu que c'est fait côté client, on peut très bien accéder à l'url en cours affichée par le navigateur.

Reply

Marsh Posté le 07-06-2007 à 13:15:22    

Ba sinon, si j'ai bien compris, le # est utilisé comme une sorte d'identifiant de séparation dans ton cas. Auquel cas il suffit d'utiliser un autre caractère comme identifiant et ça passera très bien.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-06-2007 à 13:16:56    

Et il va donc falloir refaire le Flash :( Celui qui l'a fait aurait dû savoir les différences client et server-side, et le fonctionnement n'un navigateur et du protocole HTTP... Ca aurait été moins la galère

Reply

Marsh Posté le 07-06-2007 à 13:19:29    

A merde j'avais lu en diagonale... Donc ouai ça pose des problèmes au niveau du flash.
Ceci-dit ça me parait quand même être la solution la plus propre.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-06-2007 à 15:02:15    

merci pour vos réponses :)
 
sinon y'a pas moyen de bidouiller cette url avec l'url rewriting en donnant a php les variables qu'il veut c'est a dire ?page=mapage tout en gardant #/mapage/ (necessaire pour le flash) ?

Reply

Marsh Posté le 07-06-2007 à 15:06:54    

Même avec de l'url rewrinting ça ne change rien puisque ça n'arrivera pas jusqu'au serveur. Il est peut être possible de faire quelque chose comme ça :

 

Tu envois le client ver ?page=blabla
Tu stock en session que la page à afficher prochainement c'est blabla
Ensuite tu renvois le client vers #/blabla
Et a partir des session tu sais ce que tu dois inclure

 

Mais c'est pas terrible et a part ça je vois pas vraiment d'autre solution que de refaire le flash.


Message édité par dwogsi le 07-06-2007 à 15:07:29

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 07-06-2007 à 15:06:54   

Reply

Marsh Posté le 07-06-2007 à 20:47:58    

bon alors, aucun moyen en vue ?
 
meme le flash on ne peut pas le modifier en fait, les # c'est la lib SWFAdresse qui les mets pour :
- ne pas recharger la page quand on change de page dans le flash
- et avoir des urls différentes pour chaque page, ne pas passer toujours par la page home.
 
donc il s'avere que le # est obligatoire.
 
le truc c'est que pour la version html du site, on doit avoir les meme urls que la version flash (referencement, accessibilité, etc.)
 
alors, d'apres vous, qu'elle serait la solution ? si toute fois il y'en a une :)
 
merci.

Reply

Marsh Posté le 08-06-2007 à 10:31:14    

Malheureusement y'en a aucune :'( Il faut d'autres URL pour la version HTML...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed