2012-11-12 25 views
5

Trong một trong những câu hỏi phỏng vấn tôi nhận được bên dưới câu hỏiHạn chế những người bằng cách sử dụng PHP GET Biến

"Làm thế nào bạn có thể hạn chế phát triển của bạn trong xây dựng khuôn khổ tuỳ chỉnh của bạn sử dụng $_GET biến."

Chúng tôi có riêng khung tùy chỉnh xây dựng của chúng tôi nhưng trong khuôn khổ của chúng tôi, chúng tôi không thể hạn chế người sử dụng $_GET hoặc $_POST ở vị trí của $this->request->get hoặc $this->request->post.

Chúng tôi có phương pháp truy cập biến này nhưng hầu hết mọi người sử dụng $_GET hoặc $_POST thay vì phương pháp của chúng tôi.

Bạn có thể vui lòng trả lời câu hỏi đó không?

Cảm ơn

+1

Tạo một kho lưu trữ * từ chối * cho mã chứa $ _GET/$ _ POST và hướng dẫn bên vi phạm những kỹ thuật nào để sử dụng :) (Ngoài ra, đừng từ chối, nhưng đổ lỗi/mã-xem lại: ý tưởng tương tự - phát hiện và sửa.) –

+0

Bất kể bạn sử dụng giải pháp nào, nhà phát triển sẽ luôn có thể 'parse_str (getenv ('QUERY_STRING'), $ _GET = array())' để phá vỡ nó. – eggyal

Trả lời

6

Trong php.ini, loại bỏ các GP ký tự từ tùy chọn variables_order.

Ngoài ra, nếu bạn muốn họ ghét em mãi mãi, bạn có thể sao chép nội dung của superglobal, sau đó đặt nó vào một thể hiện của một lớp học mà ném một ngoại lệ bất cứ khi nào bạn cố gắng để tương tác với nó:

class supaglobal implements arrayaccess 
{ 
    public function _construct(){} 

    function offsetExists($offset) { 
     throw new Exception("Don't use GET, bro"); 
    } 
    function offsetSet($property, $value){ 
     throw new Exception("Don't use GET, bro"); 
    } 
    function offsetUnset($property) { 
     throw new Exception("Don't use GET, bro"); 
    } 
    function offsetGet($property){ 
     throw new Exception("Don't use GET, bro"); 
    } 
} 

$approvedget = $_GET; 
$_GET = new supaglobal(); 
$abcd = $_GET["abcd"]; // throws exception 
$abcd = $approvedget["abcd"]; // A - OK 
+1

Đề cập đến '$ this-> request-> get' và' $ this-> request-> post' có thể sử dụng '$ _POST' và' $ _GET'. Vì vậy, bằng cách loại bỏ 'G' và' P' các thuộc tính đó sẽ trả về 'null'. – Leri

+1

@PLB Bạn nói đúng. Xem giải pháp cập nhật. –

+0

giải pháp thay thế tuyệt vời +1 – Leri

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