2011-08-10 32 views
7

は、私は、フォームがあるとしましょう:form.phpオン

<form action="form.php?redirect=false" method="post"> 
    <input type="hidden" name="redirect" value="true" /> 
    <input type="submit" /> 
</form> 

var_dump($_GET['redirect']) // false 
var_dump($_POST['redirect']) // true 
var_dump($_REQUEST['redirect']) // true 

私は$_POST値を上書きするために注入されたクエリ文字列パラメータを取得するにはどうすればよいですだから$_REQUEST['redirect'] = false

+0

を'$ _REQUEST ['redirect']' *は* trueです。 –

+0

彼は実際に彼の最後の行に虚偽を意味すると思う。彼はその値のフォームデータではなくクエリー文字列を使用したいと考えています。 – mrtsherman

+0

もしあなたが偽を意味するなら '$ _REQUEST ['redirect'] = $ _GET ['redirect']' – Josh

答えて

11

する内容に応じて、あなたが$_REQUEST配列に$_POST$_GETの優先順位を変更したい場合は、php.iniでrequest_orderディレクティブを変更します。

デフォルト値は次のとおりです。

request_order = "GP" 

Pは、POSTの略で、Gは、GETの略で、この構成では、クエリ文字列の値がで渡された値を上書きしますので、後の値は、優先度を持っています$_REQUESTアレイ内のPOST。あなたはPOSTをGET値を上書きしたい場合は、ちょうどそうのようにそれらを周りに切り替える:

request_order = "PG" 

あなたはそれを有効にするには、Webサーバ/ PHPを再起動する必要があります。

(ブラッドではなくvariables_orderよりも、示唆されているように、より適切なrequest_orderを使用するように編集)

+2

が代わりに 'request_order'の使用を検討しました。この問題は、より具体的です。 – Brad

+0

@Bradいいことを呼んでください - 私は答えをその例で更新します。ありがとう! –

+0

素晴らしい作品です、ありがとうございます! – Maverick

0
$_REQUEST['redirect'] = $_POST['redirect']; 

または

$_REQUEST['redirect'] = $_GET['redirect']; 

あなたは

2

は、PHPのrequest orderパラメータを参照してください。ここでは、配列がポスト、取得、クッキー、またはそれらのコンボを満たすかどうかを設定できます。

4

PHP.iniのrequest_orderディレクティブを参照してください。

しかし、本当に必要なsuperglobalを明示的に使用する必要があります。それ以外の場合、システム間で一貫性のある動作に頼ることはできず、変数が誤って上書きされる可能性があります。

+0

通常はこれは既存のクライアントフォームプロセッサ用であり、すでに '$ _REQUEST ['redirect']'を処理しています。 +1、ありがとう! – Maverick

0

あなたがそこにその最後の行でfalseを意味している場合、および$_REQUESTはまだ両方のPOSTからのデータを持っているし、データを取得し、設定を台無しにしたくない、この使用したい:それはそう

$_REQUEST = array_merge($_POST, $_GET); 
関連する問題