Assumindo um URL de:
www.example.com/?val=1#part2
O PHP pode ler as variáveis de solicitação val1
usando a matriz GET.
O valor do hash part2
também é legível? Ou isso é apenas com o navegador e JavaScript?
fonte
Assumindo um URL de:
www.example.com/?val=1#part2
O PHP pode ler as variáveis de solicitação val1
usando a matriz GET.
O valor do hash part2
também é legível? Ou isso é apenas com o navegador e JavaScript?
O principal problema é que o navegador nem envia uma solicitação com uma parte do fragmento. A parte do fragmento é resolvida ali no navegador. Portanto, é acessível através do JavaScript.
De qualquer forma, você pode analisar uma URL em bits, incluindo a parte do fragmento, usando parse_url () , mas obviamente não é o seu caso.
Teste simples, acessando http: // localhost: 8000 / hello? Foo = bar # isto não é enviado ao servidor
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 - qualquer coisa após a tag hash é simplesmente uma pesquisa de âncora no cliente.
Você pode encontrar o nome da âncora usado no URL via javascript usando, como exemplo:
<script>alert(window.location.hash);</script>
A função parse_url () no PHP pode funcionar se você já tiver a string de URL necessária, incluindo o fragmento ( http://codepad.org/BDqjtXix ):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Mas não acho que o PHP receba as informações do fragmento porque são apenas para clientes.
É recuperável a partir de Javascript - as window.location.hash
. A partir daí, você pode enviá-lo ao servidor com o Ajax, por exemplo, ou codificá-lo e colocá-lo em URLs que podem ser passadas para o lado do servidor.
www.example.com/?val=1#part2
você teria que redirecionar para ele no servidor, assim:www.example.com/?redirectUrl=%2F%3Fval%3D1%23part2
e, claro, você teria que adicionar suporte para redirecionar para o outro URL em sua outra página. Não é impressionante, e não funciona para todos os casos de uso, é claro, mas funciona para indicadores. Note que se você fizer isso, você não deve permitir que os redirecionamentos URLs absolutos, apenas URLs relativos, para garantir que você não se abrir para redirecionamentos insegurasO hash nunca é enviado para o servidor, então não.
fonte
Sim, é verdade, o servidor não recebe a parte â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/
fonte
A resposta é não.
O principal objetivo do hash é rolar para uma determinada parte da página em que você definiu um marcador. Por exemplo, role para esta parte quando a página for carregada.
A navegação será rolada de modo que esta linha seja o primeiro conteúdo visível na página, dependendo da quantidade de conteúdo que se segue abaixo da linha.
Sim, o javascript pode acessá-lo e, em seguida, uma simples chamada ajax fará a mágica
fonte
A respeito:
Agarre dinamicamente o #hash
Para torná-lo mais fluente:
Exemplo completo usando apenas Javascript e PHP
fonte
Eu acho que o valor de hash é usado apenas no lado do cliente, então você não pode obtê-lo com php.
você pode redirecioná-lo com javascript para php.
fonte
Isso deve funcionar
fonte
A parte de um URI após o
#
nome é "fragmento" e, por definição, só está disponível / processada no lado do cliente (consulte https://en.wikipedia.org/wiki/Fragment_identifier ).No lado do cliente, isso pode ser acessado usando javaScript com
window.location.hash
.fonte
Sim você pode:
Use este método para evitar erros:
E, claro, em PHP, exploda esse filhote e obtenha um dos valores
fonte
Outra solução é adicionar um campo de entrada oculto à página php:
Usando javascript / jQuery, você pode definir o valor desse campo no carregamento da página ou responder a um evento:
No php do lado do servidor, você pode ler esse valor usando a coleção $ _POST:
fonte
Também podemos fazer isso com outra abordagem. Como, em primeiro lugar, obtenha o valor de hash de js e chame o ajax usando esse parâmetro e faça o que quisermos
fonte