2014-12-12 15 views
5

Một số tiêu chuẩn không phân biệt đối với việc kiểm tra xem tất cả các giá trị $ _POST có được đặt hay không. Tôi biết bạn có thể làm như sau:Kiểm tra xem tất cả các biến POST có được đặt là

if(isset($_POST['name']) && isset($_POST['username'])) 

Nhưng điều gì sẽ xảy ra khi bạn chạy đến các biểu mẫu lớn? Họ sẽ tiếp tục lặp lại cho đến khi tất cả các hình thức đầu vào havr được thiết lập thông qua ['chìa khóa']?

+1

Bạn có thể tạo một hàm hoặc vòng lặp. – Rizier123

+1

Chính xác như ví dụ của bạn. – Madbreaks

+0

Không phải là một tiêu chuẩn công nghiệp, nhưng tôi muốn sử dụng '$ _POST-> có (" tên "," id "," người dùng ")' hoặc một cái gì đó. Hầu hết các khung cung cấp một phương tiện để xác định và kiểm tra các trường bắt buộc. – mario

Trả lời

0

Bạn cũng có thể viết:

<?php 
if (isset($_POST) && $_POST != NULL){ 

    foreach ($_POST as $key => $value) { 

     // perform validation of each item 
    } 
?> 

Dưới đây là một ví dụ chi tiết hơn:

<?php 
if (isset($_POST) && $_POST != NULL) { 

$clean = array(); 

foreach ($_POST as $key => $value) { 
    switch($key) 
    { 
    case "a": 
     if (ctype_digit($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "b": 
     if (ctype_alpha($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "c": 
     if (ctype_alnum($value)){ 
     $clean[$key] = $value;  
     } break; 
    case "d": 
     if (ctype_punct($value)){ 
     $clean[$key] = $value;  
     } break; 
    default: echo $value, " is invalid data\n"; 
    } 
} 
var_dump($clean); 

} 

?> 

Vì vậy, nếu bạn đã có một mẫu với đầu vào các lĩnh vực a, b, c, d và ai đó giả mạo của bạn hình thức và thêm một trường e, sau đó mã trước sẽ không chấp nhận giá trị từ trường e.

0

bạn có thể sử dụng chức năng này:

if(!array_filter($_POST)) { 
    //echo somthing to user to fill the form 
} 

lặp array_filter trên mỗi giá trị trong mảng chuyển chúng tới các chức năng gọi lại. Nếu hàm callback trả về true, giá trị hiện tại từ mảng được trả về trong mảng kết quả. Các phím mảng được giữ nguyên.

+0

Điều này sẽ kiểm tra nếu có ít nhất một giá trị bài mà không có giá trị được gửi đi. Tôi tin rằng OP đang nói nhiều hơn về việc xác nhận, chứ không phải để xem liệu $ _POST có trống không. –

+0

@JonathanKuhn anh ấy không nói gì về việc xác thực! Anh ta nói về việc kiểm tra xem các biến có được đặt hay không –

+0

Nhưng trong ví dụ mã, anh ấy đang tìm kiếm các khóa cụ thể để đảm bảo chúng được đặt. Khác, tại sao họ sẽ không sử dụng 'if (! Empty ($ _ POST))' hoặc 'đáng tin cậy hơn '($ _ SERVER [' REQUEST_METHOD '] ==' POST ')' Và bằng cách xác nhận, tôi cho rằng nó là nhiều hơn có khả năng cho các trường bắt buộc, chỉ cần đảm bảo chúng được đặt vì chúng đang tìm kiếm các trường cụ thể. –

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