2010-11-22 20 views
14

Làm cách nào để kiểm tra xem yêu cầu đó có phải là một bài đăng trở lại trong PHP hay không?Kiểm tra xem yêu cầu có được đăng lại trong PHP

if (isset($_POST["submit"])) 

nơi submitname của <input type="submit" />

+0

Bạn có muốn kiểm tra xem có dữ liệu 'đăng' hay dữ liệu' submit' hiện diện không? – Ben

+0

Kiểm tra bài đăng hoặc đăng lại? Một bài đăng trở lại là một loại yêu cầu bài đăng cụ thể. –

+0

@Steve, @ Lèse majesté, về cơ bản, tôi chỉ muốn xem nếu một hình thức được đăng trở lại vì vậy tôi xử lý bài viết trở lại –

Trả lời

22

Điều đó sẽ hoạt động nếu bạn biết và mong đợi nút gửi như vậy trên cùng một trang.

Nếu bạn không ngay lập tức biết gì về các biến yêu cầu, một cách khác là để kiểm tra phương thức yêu cầu:

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') 

Như đã chỉ ra trong các ý kiến, để kiểm tra đặc biệt cho một postback và không chỉ bất kỳ Yêu cầu POST, bạn cần đảm bảo rằng liên kết giới thiệu là cùng một trang với trang xử lý. Một cái gì đó như thế này:

if (basename($_SERVER['HTTP_REFERER']) == $_SERVER['SCRIPT_NAME']) 
+1

Bạn chắc chắn nên sử dụng '===' thay vì '=='.Giải thích, tại sao, có thể được tìm thấy trong các bình luận cho [câu trả lời này] (http://stackoverflow.com/a/1372163/1469208) và trong nhiều, nhiều tài nguyên khác, vì đây là những nguyên tắc cơ bản của lập trình PHP. – trejder

3

Bạn muốn $_SERVER['REQUEST_METHOD'] == 'POST'.

Bạn là một câu hỏi rất giống nhau mặc dù ít chung chung hơn this one.

Đây có lẽ là cách tiếp cận tốt hơn so với việc kiểm tra biến bài đăng. Đối với một, bạn không biết liệu biến đó sẽ được gửi cùng. Tôi có linh cảm rằng một số trình duyệt sẽ không gửi khóa nếu không có giá trị nào được chỉ định. Ngoài ra, tôi sẽ lo lắng rằng một số hương vị của PHP có thể không xác định $_POST nếu không có giá trị đã đăng.

+0

Bạn chắc chắn nên sử dụng '===' thay vì '=='. Giải thích, tại sao, có thể được tìm thấy trong các bình luận cho [câu trả lời này] (http://stackoverflow.com/a/1372163/1469208) và trong nhiều, nhiều tài nguyên khác, vì đây là những nguyên tắc cơ bản của lập trình PHP. – trejder

0

Có. Bạn cũng có thể sử dụng if(array_key_exists('submit', $_POST))

1

Có, bạn nên làm điều đó.

Cẩn thận khi bạn đang sử dụng image các lần gửi loại, chúng sẽ không gửi thuộc tính name trong một số trình duyệt và bạn sẽ không thể phát hiện POST. Đập đầu vào bàn một vài lần cho đến khi tôi nhận ra nó.

Giải pháp thay thế cho việc này là thêm đầu vào loại hidden.

3

Nếu bạn muốn có một thói quen chung mà không phụ thuộc "phương pháp" (bài/get) và bất kỳ cái tên khác trong những yếu tố diễn đàn, sau đó tôi khuyên này

<?php 
$isPostBack = false; 

$referer = ""; 
$thisPage = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 

if (isset($_SERVER['HTTP_REFERER'])){ 
    $referer = $_SERVER['HTTP_REFERER']; 
} 

if ($referer == $thisPage){ 
    $isPostBack = true; 
} 
?> 

nay là nếu $ IsPostBack sẽ là sự thật nếu nó là một postback, false nếu không.

Tôi hy vọng điều này sẽ giúp

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