2011-08-10 33 views
7

Nói rằng tôi có một hình thức:

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

On form.php:

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

Làm thế nào để tôi có được tham số chuỗi truy vấn tiêm để ghi đè giá trị $_POST vì vậy $_REQUEST['redirect'] sẽ = false?

+0

Dường rằng '$ _REQUEST ['redirect']' * là * true. –

+0

Tôi nghĩ rằng anh ta thực sự có ý định sai trong dòng cuối cùng của anh ta ở đó. Anh ta muốn sử dụng chuỗi truy vấn, không phải dữ liệu biểu mẫu cho giá trị đó. – mrtsherman

+0

Nếu bạn có nghĩa là sai .. '$ _REQUEST ['chuyển hướng'] = $ _GET ['chuyển hướng']' – Josh

Trả lời

11

Nếu bạn muốn thay đổi độ ưu tiên của $_GET qua $_POST trong mảng $_REQUEST, thay đổi chỉ thị request_order trong php.ini.

Giá trị mặc định là:

request_order = "GP" 

P là viết tắt của POST và G là viết tắt của GET, và các giá trị sau có độ ưu tiên, vì vậy trong cấu hình này, một giá trị trong chuỗi truy vấn sẽ ghi đè lên một giá trị thông qua ĐĂNG trong mảng $_REQUEST. Nếu bạn muốn POST ghi đè các giá trị GET, chỉ cần chuyển đổi chúng xung quanh như vậy:

request_order = "PG" 

Bạn cần phải khởi động lại máy chủ web/php để có hiệu lực.

(Edited sử dụng thích hợp hơn request_order như Brad đề nghị, chứ không phải là variables_order)

+2

Cân nhắc sử dụng 'request_order' để thay thế. Nó cụ thể hơn cho vấn đề. – Brad

+0

@Brad Tốt cuộc gọi - Tôi sẽ cập nhật câu trả lời của tôi với một ví dụ về điều đó. Cảm ơn! –

+0

Hoạt động tuyệt vời, cảm ơn bạn! – Maverick

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

hoặc

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

tùy thuộc vào những gì bạn muốn

2

Xem request order tham số của PHP. Ở đây bạn có thể thiết lập cho dù mảng điền vào bài, nhận được, cookie hoặc bất kỳ kết hợp đó.

4

Xem chỉ thị request_order trong PHP.ini.

Thực sự, bạn nên sử dụng rõ ràng superglobal mà bạn đặc biệt muốn. Nếu không, bạn không thể dựa vào hành vi nhất quán từ hệ thống đến hệ thống, và sau đó các biến của bạn có thể vô tình bị ghi đè.

+0

Thông thường tôi sẽ nhưng điều này là dành cho một bộ xử lý mẫu khách hàng hiện có và họ đã xử lý tắt '$ _REQUEST ['redirect']'. 1 mặc dù, cảm ơn! – Maverick

0

Nếu bạn có nghĩa là false tại đó dòng cuối cùng ở đó, và muốn $_REQUEST vẫn có dữ liệu từ cả hai POST và GET dữ liệu, và không muốn gây rối với các cấu hình, sử dụng này:

$_REQUEST = array_merge($_POST, $_GET); 
Các vấn đề liên quan