226

URL を次のように仮定します。

www.example.com/?val=1#part2

val1PHP は、GET 配列を使用してリクエスト変数を読み取ることができます。

ハッシュ値part2も読み取り可能ですか? それとも、これはブラウザと JavaScript だけですか?

4

12 に答える 12

210

主な問題は、ブラウザがフラグメント部分を含むリクエストさえ送信しないことです。フラグメント部分はブラウザで解決されます。したがって、JavaScript を介してアクセスできます。

とにかく、 parse_url()を使用して、フラグメント部分を含む URL をビットに解析できますが、明らかにあなたのケースではありません。

于 2009-06-02T17:45:22.600 に答える
100

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 -

サーバーは #appendage なしでリクエストを受け取ります。ハッシュ タグの後のものは、クライアントでの単なるアンカー ルックアップです。

例として、JavaScript を使用して URL 内で使用されているアンカー名を見つけることができます。

<script>alert(window.location.hash);</script>

PHP の parse_url() 関数は、フラグメント ( http://codepad.org/BDqjtXix )を含む必要な URL 文字列が既にある場合に機能します。

<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>

Output: fizzbuzz

しかし、PHP はクライアントのみであるため、フラグメント情報を受け取ることはないと思います。

于 2009-06-02T17:57:05.980 に答える
48

Javascript - as から取得できwindow.location.hashます。そこから、たとえば Ajax を使用してサーバーに送信するか、エンコードして URL に入れ、サーバー側に渡すことができます。

于 2009-06-02T17:53:26.813 に答える
26

ハッシュがサーバーに送信されることはありません。

于 2009-06-02T17:44:22.070 に答える
9

答えはノーだ。

ハッシュの主な目的は、ブックマークを定義したページの特定の部分にスクロールすることです。例: ページの読み込み時にこのパートまでスクロールします。

ブラウズは、その行の下に続くコンテンツの量に応じて、この行がページで最初に表示されるコンテンツになるようにスクロールします。

はい、javascript でアクセスできます。単純な ajax 呼び出しで魔法のように動作します。

于 2011-06-29T13:06:03.523 に答える
3

ハッシュ値はクライアント側でのみ使用されると思うので、php では取得できません。

ただし、javascriptを使用してphpにリダイレクトできます。

于 2009-06-02T17:47:04.717 に答える
2

URIの の後の部分は#「フラグメント」と呼ばれ、定義上、クライアント側でのみ利用可能/処理されます ( https://en.wikipedia.org/wiki/Fragment_identifierを参照)。

クライアント側では、javaScript with を使用してこれにアクセスできますwindow.location.hash

于 2016-12-27T18:15:44.207 に答える