2009-11-02 11 views
0

Je suis en train de stocker une URL telle que:Comment puis-je stocker une URL complète contenant un hashmark dans une variable?

http://localhost/pro_print/index.php#page=home

dans une variable, mais je ne peux pas trouver une fonction qui fait cela. J'ai trouvé beaucoup de solutions pour stocker l'index.php, mais il n'inclut pas le hashmark et ce qui le suit. Existe-t-il une solution PHP pour cela?

J'ai vu que je peux obtenir l'URL complète, y compris hashmark avec javaScript en utilisant document.write(document.url) ou document.write(location.href) mais comment puis-je stocker cela dans ma variable? Est-il possible de combiner PHP avec javaScript dans une sorte de solution comme celle-ci?

<?php $url ="?><script>document.write(document.url)</script><?php "?> 
+3

Vous vous rendez compte que PHP est analysé avant que la page n'atteigne votre navigateur et que JavaScript commence à s'exécuter? – Marius

+0

euh, ouais, vous semblez avoir l'ordre d'exécution entre le client et le serveur complètement mélangé. Si vous voulez que le JavaScript côté client renvoie une variable vers PHP sur le serveur, vous devez regarder une soumission de formulaire ou XMLHttpRequest. – bobince

Répondre

3

L'identifiant de fragment (# et tout ce qui apparaît après) est entièrement géré côté client, et n'est pas envoyé au serveur lorsque l'URI est demandé.

Pour le rendre disponible à PHP, vous devez:

  1. Allow la page pour charger
  2. Lire l'emplacement avec JavaScript
  3. Envoyer au serveur en utilisant une technique Ajax (par exemple XMLHttpRequest) ou dans une demande suivante

Cela ne le rendra pas disponible pour le serveur au moment de l'exécution du script d'origine, mais rien d'autre ne peut le faire.

Une approche alternative serait de dupliquer l'information dans l'identificateur de fragment ailleurs dans l'URI (par exemple la chaîne de requête). Ceci est utilisé par ce site lors de la soumission d'une réponse.

Questions connexes