2011-12-08 15 views
1

現在、私はsmsgatewayに接続するプロジェクトに取り組んでいます。ユーザーがsmsをゲートウェイに送信すると、要求がサーバーにリダイレクトされます。問題は$ _GETメソッドで受信されたことです。しかし、smsプロバイダーは、彼らが$ _POSTメソッドでそれを渡していると言います。最後に受け取ったURLは次のようになります。

http://www.example.com/smstest?msg=sample&id=55788

あなたは$ _POSTの方法

答えて

1

HTTP Requestを実行すると、1つの動詞しか使用できません。(POST, GET, PUT, ...)ただし、

<form name="y" method="post" action"y.php?foo=bar"> 

を行うことができ、要求がPOST'edたが、その後PHPは、同様に$ _GET [ 'foo' を]移入します。コメント

については

HTTPリクエストがHTTPメソッドPOSTを使用して、まだクエリパラメータを含むURLを使用することができます

$_SERVER['REQUEST_METHOD'] 
+0

私は$ _GETまたは$ _REQUESTパラメータを正しく使用しています。しかし、私は$ _POSTを使用します。だから私はその要求が投稿であることを保証することができます。 –

+1

編集した回答を確認してください。 –

+0

Ok thats works。リクエストはPOSTですが、URLでデータを送信しています。このメソッドで機密情報を送信するのは安全ですか? –

2

を使用する場合、URLにパラメータを受信することが可能ですはい、そうです。すべてのHTTP要求の最初の行には、method(または動詞)と要求が行われたURIが含まれています。メソッドの選択に基づいてURIに特別な制限はありません。したがって、query stringを含むURIに対してPOST要求を行うことができます。

PHPでは、通常、クエリ文字列のパラメータには、$_GET$_REQUESTで通常アクセスできます。送信されたフォームの一部として渡されたパラメータは、常に$_POST$_REQUESTによってアクセス可能です。

+0

私は$ _GETまたは$ _REQUESTパラメータを正しく使用しています。しかし、私は$ _POSTを使用します。だから私はその要求が投稿であることを保証することができます。 –

2

を使用することにより。 POSTは、HTTPヘッダーで使用される単なる動詞で、GET(およびPUTおよびDELETE)と同じです。 URLには常にクエリパラメータを含めることができ、常にリクエストボディを含めることもできます(GETリクエストではありません)。 PHP変数$_GETは、単に解析されたURLクエリパラメータを表し、変数$_POSTは、解析されたリクエスト本文を単に表します。彼らは実際にはHTTP動詞とは関係がないので、やや誤った名前になります。

+0

私は$ _GETまたは$ _REQUESTパラメータを正しく使用しています。しかし、私は$ _POSTを使用します。だから私はその要求が投稿であることを保証することができます。 –

+0

@Rakもう一度、 '$ _GET'または' $ _POST'変数を使用すると、リクエストの種類と何も関係がありません。あなたのゲートウェイがURLクエリパラメータとして興味のある変数を送信している場合は、HTTPリクエストの種類にかかわらず、 '$ _GET'を使います。ゲートウェイがPOSTリクエストでボディを送信していない場合は、それをそのままにして、 '$ _POST'を使用しないでください。 – deceze

+0

リクエストはPOSTですが、URLでデータを送信しています。このメソッドで機密情報を送信するのは安全ですか? –