0

今日まで、$_REQUEST には常に $_POST および $_GET からのすべての変数が含まれていると考えていました。

しかし今日、ある変数が $_GET の一部であり、$_REQUEST の一部ではないという奇妙な経験をしました。パラメータを渡す URL を少しいじってみましたが、常に最初のパラメータが $_REQUEST 配列にないようです。

なぜこれが起こるのか分かりますか?

ありがとう!

URL:

localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%2Flogo.svg&filename=logo.svg&requesttoken=e250827c341650990cd4
4

2 に答える 2

5

getfile変数が正しくエンコードされていません:

localhost/?app=files&getfile=ajax/newfile.php?dir=%2Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%2Flogo.svg&filename=logo.svg&requesttoken=e250827c341650990cd4
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

URL GET 要求の最初の変数は、疑問符 ( ?) の後に来ます。すべての追加変数は、アンパサンド ( &) の後に続く必要があります。

URL に複数の疑問符がある場合は、プロトコルに違反しており、混乱を招く可能性があります。2 番目の変数にテキストが欠落していると思います: ajax/newfile.php

URL は次のようになります。

localhost/?app=files&getfile=app%3Dfiles%26getfile%3Dajax%2Fnewfile.php%3Fdir%3D%252Ftest4&source=http%3A%2F%2Fl‌​ocalhost%2Fimg%
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

関数を使用して、PHP で URL 変数をエンコードできますurlencode()

于 2012-11-15T16:58:07.350 に答える
0

dirパラメーター内のuriのクエリ パラメーターですgetfile。そのため、内部にはありません$_GET(したがって$_REQUEST)。

クエリ文字列の$_GET['getfile']ようなもので解析するか、再構築する必要があります。parse_url()

于 2012-11-15T16:45:31.313 に答える