Asumiendo una URL de:
www.example.com/?val=1#part2
PHP puede leer las variables de solicitud val1
utilizando la matriz GET.
¿El valor hash part2
también es legible? ¿O esto solo depende del navegador y JavaScript?
fuente
Asumiendo una URL de:
www.example.com/?val=1#part2
PHP puede leer las variables de solicitud val1
utilizando la matriz GET.
¿El valor hash part2
también es legible? ¿O esto solo depende del navegador y JavaScript?
El principal problema es que el navegador ni siquiera enviará una solicitud con una parte de fragmento. La parte del fragmento se resuelve allí mismo en el navegador. Entonces es accesible a través de JavaScript.
De todos modos, podría analizar una URL en bits, incluida la parte del fragmento, usando parse_url () , pero obviamente no es su caso.
Prueba simple, accediendo a http: // localhost: 8000 / hello? Foo = bar # this-is-not-sent-sent-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 -
El servidor recibe la solicitud sin el #appendage; cualquier cosa después de la etiqueta hash es simplemente una búsqueda de anclaje en el cliente.
Puede encontrar el nombre de anclaje utilizado dentro de la URL a través de javascript usando, como ejemplo:
<script>alert(window.location.hash);</script>
La función parse_url () en PHP puede funcionar si ya tiene la cadena de URL necesaria, incluido el fragmento ( http://codepad.org/BDqjtXix ):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Pero no creo que PHP reciba la información del fragmento porque es solo para clientes.
Es recuperable de Javascript - as window.location.hash
. Desde allí, puede enviarlo al servidor con Ajax, por ejemplo, o codificarlo y ponerlo en URL que luego se pueden pasar al lado del servidor.
www.example.com/?val=1#part2
tendrías que redirigirlo al servidor de esta manera:www.example.com/?redirectUrl=%2F%3Fval%3D1%23part2
y, por supuesto, tendrías que agregar soporte para redirigir a esa otra url en tu otra página. No es impresionante, y no funciona para todos los casos de uso, por supuesto, pero funciona para marcadores. Tenga en cuenta que si hace esto, no debe permitir redireccionamientos a URL absolutas, solo URL relativas, para asegurarse de no abrirse a redireccionamientos insegurosEl hash nunca se envía al servidor, por lo que no.
fuente
Sí, es cierto, el servidor no obtiene la parte de anclaje. Sin embargo, existe una solución alternativa al uso de cookies. Puede encontrarlo aquí: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
fuente
La respuesta es no.
El objetivo principal del hash es desplazarse a cierta parte de la página donde ha definido un marcador. Por ejemplo, desplácese a esta parte cuando se carga la página.
La exploración se desplazará de manera tal que esta línea sea el primer contenido visible en la página, dependiendo de cuánto contenido siga debajo de la línea.
Sí, JavaScript puede acceder a él, y luego una simple llamada ajax hará la magia
fuente
Qué pasa:
Toma dinámicamente el #hash
Para hacerlo más fluido:
Ejemplo completo usando solo Javascript y PHP
fuente
Creo que el valor hash solo se usa en el lado del cliente, por lo que no se puede obtener con php.
Sin embargo, puede redirigirlo con JavaScript a PHP.
fuente
Esto debería funcionar
fuente
La parte de un URI después del
#
se llama "fragmento" y, por definición, solo está disponible / procesada en el lado del cliente (consulte https://en.wikipedia.org/wiki/Fragment_identifier ).En el lado del cliente, se puede acceder a esto usando javaScript con
window.location.hash
.fuente
Sí tu puedes:
Use este método para evitar errores:
Y, por supuesto, en PHP, explota ese cachorro y obtén uno de los valores
fuente
Otra solución es agregar un campo de entrada oculto a la página php:
Usando javascript / jQuery puede establecer el valor de este campo en la carga de la página o responder a un evento:
En php en el lado del servidor, puede leer este valor utilizando la colección $ _POST:
fuente
También podemos hacerlo con otro enfoque, al igual que antes que nada obtener el valor hash de js y llamar al ajax usando ese parámetro y podemos hacer lo que queramos
fuente