Assumindo uma URL de:
www.example.com/?val=1#part2
O PHP pode ler as variables de requisição val1
usando o array GET.
O hash value part2
também é legível? Ou isso é apenas até o navegador e JavaScript?
O principal problema é que o navegador nem sequer envia uma solicitação com uma parte de fragment. A parte do fragment é resolvida ali mesmo no navegador. Então, é alcançável através do JavaScript.
De qualquer forma, você poderia analisar uma URL em bits, incluindo a parte do fragment, usando parse_url () , mas obviamente não é o seu caso.
Teste simples, acessando http: // localhost: 8000 / ola? Foo = bar # this-is-not-send-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 -
O servidor recebe a solicitação sem o #appendage – nada depois que a hashtag é simplesmente uma pesquisa de âncora no cliente.
Você pode encontrar o nome da âncora usado dentro do URL através do javascript usando, por exemplo:
A function parse_url () em PHP pode funcionar se você já tiver a string de URL necessária, incluindo o fragment ( http://codepad.org/BDqjtXix ):
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT); ?> Output: fizzbuzz
Mas eu não acho que o PHP receba as informações do fragment porque é somente cliente.
É recuperável do Javascript – como window.location.hash
. De lá, você poderia enviá-lo para o servidor com o Ajax, por exemplo, ou codificá-lo e colocá-lo em URLs, que podem então ser passadas para o lado do servidor.
O hash nunca é enviado para o servidor, então não.
Sim, é verdade, o servidor não obtém a parte de âncora. No entanto, há uma solução alternativa usando cookies. Você pode encontrá-lo aqui: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
A resposta é não.
O principal objective do hash é rolar para uma determinada parte da página onde você definiu um marcador. Por exemplo, vá até esta parte quando a página for carregada.
A navegação rolará de modo que essa linha seja o primeiro conteúdo visível na página, dependendo de quanto conteúdo segue abaixo da linha.
Sim javascript pode acessá-lo e, em seguida, uma simples chamada ajax fará a mágica
Eu acho que o valor de hash é usado apenas no lado do cliente, então você não pode obtê-lo com php.
você poderia redirecioná-lo com javascript para php embora.
Isso deve funcionar
A parte de um URI após o #
é chamado de “fragment” e é, por definição, apenas disponível / processada no lado do cliente (veja https://en.wikipedia.org/wiki/Fragment_identifier ).
No lado do cliente, isso pode ser acessado usando javaScript com window.location.hash
.
Sim você pode:
Use este método para evitar erros:
E, claro, em PHP, explodir esse cachorro e obter um dos valores
$split = explode('/', $_COOKIE['anchor']); print_r($split[1]); //to test it, use print_r. this line will print the value after the anchortag
Podemos fazê-lo com outra abordagem também, como antes de tudo obter o valor de hash de js e chamar o ajax usando esse parâmetro e pode fazer o que quisermos
Outra solução é adicionar um campo de input oculto à página do php:
Usando javascript / jQuery você pode definir o valor deste campo no carregamento da página ou responder a um evento:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
Em php no lado do servidor você pode ler este valor usando a coleção $ _POST:
$server_location_hash = $_POST['myHiddenLocationHash'];