2013-03-05 36 views
20

Tôi muốn biết cách phát hiện xem $ _POST có được đặt hay không.

Ngay bây giờ tôi phát hiện nó như thế này:

if(isset($_POST['value'])) 

Nhưng Tôi không tìm kiếm nếu giá trị được thiết lập nữa. Về cơ bản, mọi POST đều hoạt động.

if(isset($_POST)) 

Tôi không chắc PHP xử lý như thế nào. Perhabs isset ($ _ POST) luôn trả về true vì nó là một PHP toàn cầu?

Về cơ bản, tôi làm cách nào để thực hiện việc này?

+1

'$ _POST' luôn đi kèm với yêu cầu tiêu đề và ** sẽ ** chứa giá trị. Có thể bạn muốn '$ _SERVER ['REQUEST_METHOD'] == 'POST''. – BenM

+2

Bạn có muốn tìm hiểu xem liệu '$ _POST' có chứa bất kỳ dữ liệu * nào hay liệu yêu cầu đó có sử dụng phương thức HTTP POST không? – deceze

Trả lời

48

Hãy thử với:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {} 

để kiểm tra xem kịch bản của bạn đã được đăng.

Nếu dữ liệu bổ sung được thông qua, $_POST sẽ không trống, nếu không sẽ bị xóa.

Bạn có thể sử dụng phương pháp empty để kiểm tra xem nó có chứa dữ liệu hay không.

if (!empty($_POST)) {} 
+1

không hoạt động tôi đã thử nghiệm nó .. –

+5

Vì '$ _POST' luôn tồn tại' if ($ _POST) 'sẽ làm tốt, không cần' rỗng'. – deceze

+1

@DipeshParmar Điều gì không hoạt động? – hsz

3

Một giải pháp đơn giản cũng có thể chỉ cần sử dụng

if (!empty($_POST)) 
+1

không phải là giải pháp sai câu trả lời ... –

3

Chỉ cần sử dụng nó như dưới đây. bởi vì số super global của nó nên luôn trả về đúng khi kiểm tra issetempty.

<?php 
    if($_POST) 
    { 
     echo "yes"; 
    } 
?> 
+0

@ xuống-cử tri xin giải thích nó tôi cũng đã cố gắng sản phẩm nào nhưng không làm việc ... –

+1

Thật vậy, điều này hoạt động tốt. Vì vậy, nên '! Empty', nhưng nó không cần thiết. – deceze

9

$_POST là một mảng. Bạn có thể kiểm tra:

count($_POST) 

Nếu nó lớn hơn 0 có nghĩa là một số giá trị đã được đăng.

2

Tôi biết câu trả lời này đã được trả lời, nhưng đây là một phương pháp đơn giản tôi đang sử dụng thuộc một trong các lớp học của tôi để tìm xem bài đã được thiết lập (có lẽ ai đó sẽ tìm thấy nó hữu ích):

public function isPost($key = null) { 

    if ($_SERVER['REQUEST_METHOD'] != 'POST') { 

     return false; 

    } 

    if (!empty($key)) { 

     return isset($_POST[$key]); 

    } 

    return true; 

} 
-1

Cách tốt nhất để kiểm tra $ _POST

<?php 
if(isset($_POST['value']) && !empty($_POST['value'])) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
+0

Hãy cẩn thận với 'rỗng()'! Một chuỗi có số không (''0'') được coi là rỗng. Hơn nữa, nó dư thừa để sử dụng nó cùng với 'isset()'. –

Các vấn đề liên quan