0

私はこのようなものが欲しい:

<a href="http://localhost/index.php?get=abc&post=cde&post=efg">link</a>

ハイパーリンクのGETおよび2xPOST。どうやってやるの?何も働きたくない

PHPにGET配列があり、それらのGET変数を提供する正しいURLにつながるリンクを生成したいと思います。

4

4 に答える 4

4

同じ名前のGET変数を2つ持つことはできません。次のように、それらを配列に配置できます。

<a href="http://localhost/index.php?get=abc&post[]=cde&post[]=efg">link</a>

明確にするために、これはまだGETリクエストであり、リンクは通常POSTリクエストを生成できません。また、通常ではないことを達成しようとする必要があります。

編集:OPのcalrificationに答えるため。

$_GET配列があり、そこに到達するためのリンクを生成したい場合は、次を使用できます。http_build_query()

于 2012-07-24T20:08:18.417 に答える
2

HTTPの世界でGETとPOSTが何を意味するのか理解していないと思います。URLのクエリ文字列に入力するアイテムはすべてGETパラメータであり、同じ名前の2つを持つことはできません。POSTパラメータは、URLのクエリ文字列としてではなく、リクエストの一部として送信されます。

于 2012-07-24T20:13:33.253 に答える
0

GETとPOSTはhttp操作です。

?を使用して値を送信する URLの区切り文字は異なりますが、関連しています。例えば:

foo.com/page.php?val1=1&val2=2

値はクエリ文字列値と呼ばれます。

GET操作の場合、値はクエリ文字列値として送信されます。POST操作の場合、値はPOSTリクエストの本文で送信されます。これが、大量のデータがサーバーに送信されるときにPOSTを使用する必要がある理由です。(クエリ文字列には最大長がありますが、HTTPリクエストにはありません。)

クエリ文字列値を含むURLに対してPOST操作を実行できます。これはAjaxリクエストでより一般的ですが、フォームで実行することもできます。actionURLをindex.php?val1=1&val2=2フォームの(追加の)値がhttp本文として送信されるようなものに設定するだけです。method="post"フォームに設定することを忘れないでください。

この例では、適切にエスケープすることを含め、クエリ文字列を自分で作成する必要があることに注意してください。

クエリ文字列値で値の名前を繰り返す

通常、これにより両方の値が送信されますが、サーバーは変数を上書きし、最後の値のみをクライアントソフトウェアに提示することになります。

したがって、次のようなURLを使用する場合

<a href="http://localhost/index.php?get=abc&post=cde&post=efg">

//phpとほとんどのサーバーサイドフレームワークによって次のようにデコードされます

gettoabcを設定します

投稿をcdeに設定

投稿をefgに設定

結果:2つの変数、getpost

于 2012-07-24T20:32:08.253 に答える
0

HTTP標準には、同じ名前の2つのクエリ文字列パラメータを送信できないということは何もありません。ただし、$_GETを使用してこれらの値を取得することはできません。$_GETは最後のものをピックアップします。代わりに、$ _SERVER['QUERY_STRING']を手動で解析する必要があります。それはそれほど難しいことではなく、PHPがサードパーティのツールによって生成されたURLパターンを処理しなければならないときに何度もそれを行いました。本当に気が向いている場合は、クエリ文字列解析ルーチンで$ _GETメンバーを配列として生成し、そのメンバーのインスタンスが複数検出された場合に使用できます。

于 2012-08-10T17:22:17.090 に答える