Test simple, accès à http: // localhost: 8000 / hello? Foo = bar # this-is-not-sent-to-server
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
Le serveur reçoit la demande sans #appendage - tout ce qui se trouve après la balise de hachage est simplement une recherche d'ancrage sur le client.
Vous pouvez trouver le nom de l'ancre utilisé dans l'URL via javascript en utilisant, par exemple:
<script>alert(window.location.hash);</script>
La fonction parse_url () en PHP peut fonctionner si vous avez déjà la chaîne URL nécessaire, y compris le fragment ( http://codepad.org/BDqjtXix ):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Mais je ne pense pas que PHP reçoive les informations sur les fragments car elles sont réservées au client.
www.example.com/?val=1#part2
vous devrez rediriger vers celui-ci sur le serveur, comme ceci:www.example.com/?redirectUrl=%2F%3Fval%3D1%23part2
et bien sûr, vous devrez ajouter du support pour rediriger vers cette autre URL dans votre autre page. Pas génial, et ne fonctionne pas pour tous les cas d'utilisation bien sûr, mais fonctionne pour les signets. Notez que si vous faites cela, vous ne devez pas autoriser les redirections vers des URL absolues, uniquement des URL relatives, pour vous assurer de ne pas vous ouvrir à des redirections dangereusesLe hachage n'est jamais envoyé au serveur, donc non.
la source
Oui c'est vrai, le serveur ne reçoit pas la partie d'ancrage. Cependant, il existe une solution de contournement en utilisant des cookies. Vous pouvez le trouver ici: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
la source
La réponse est non.
Le but principal du hachage est de faire défiler jusqu'à une certaine partie de la page où vous avez défini un signet. Par exemple, faites défiler jusqu'à cette partie lorsque la page se charge.
La navigation défilera de manière à ce que cette ligne soit le premier contenu visible de la page, selon la quantité de contenu qui suit sous la ligne.
Oui javascript peut y accéder, puis un simple appel ajax fera la magie
la source
Qu'en est-il de:
Saisissez dynamiquement le #hash
Pour le rendre plus fluide:
Exemple complet utilisant uniquement Javascript et PHP
la source
Je pense que la valeur de hachage n'est utilisée que côté client, donc vous ne pouvez pas l'obtenir avec php.
vous pouvez cependant le rediriger avec javascript vers php.
la source
C'est devrait fonctionner
la source
La partie d'un URI après
#
est appelée "fragment" et est par définition uniquement disponible / traitée côté client (voir https://en.wikipedia.org/wiki/Fragment_identifier ).Côté client, cela est accessible en utilisant javaScript avec
window.location.hash
.la source
Oui, vous pouvez:
Utilisez cette méthode pour éviter les erreurs:
Et bien sûr en PHP, faites exploser ce chiot et obtenez l'une des valeurs
la source
Une autre solution consiste à ajouter un champ de saisie masqué à la page php:
En utilisant javascript / jQuery, vous pouvez définir la valeur de ce champ lors du chargement de la page ou répondre à un événement:
En php côté serveur, vous pouvez lire cette valeur en utilisant la collection $ _POST:
la source
Nous pouvons le faire avec une autre approche aussi, comme tout d'abord obtenir la valeur de hachage de js et appeler ajax en utilisant ce paramètre et faire ce que nous voulons
la source