2011-06-14 27 views
5

Ai đó có thể giải thích điều này cho tôi không?

Tôi có đoạn mã sau:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input type="text" id="testField" /> 
<input type="submit"> 
</form> 
<br /><br /> 
<pre> 
<?php print_r($_POST); ?> 
</pre> 

này hoạt động tốt trên hộp dev chính của tôi, và trên máy chủ. Tuy nhiên, tôi đang phải làm việc từ xa trên máy tính xách tay của tôi vào lúc này. Tôi đã cài đặt chính xác WAMPServer 2.1a xây dựng như trên thiết lập dev của tôi, và mảng $ _POST rỗng.

Nếu Tôi tuyên bố lĩnh vực này như:

<input type="text" name="testField" /> 

tôi nhận được kết quả mong muốn.

+2

Tắt điểm, nhưng bạn nên lưu ý rằng điều này tạo ra lỗ hổng XSS: ' '. Thay vào đó hãy sử dụng ' '. – Chris

Trả lời

8

Từ HTML 4,01 đặc điểm kỹ thuật, §17.2, "Controls":

của một kiểm soát "tên kiểm soát" được đưa ra bởi thuộc tính tên của nó.

...

Khi một mẫu được gửi để xử lý, một số điều khiển có tên của họ kết hợp với giá trị hiện tại của họ và những cặp được nộp cùng với biểu mẫu.

"id" không quan trọng.

7

Hành vi tiêu chuẩn. Luôn sử dụng name trong biểu mẫu.

+0

Thật vậy. Tôi ngạc nhiên về hành vi trên hộp dev. "Nó hoạt động tốt" có vẻ hoàn toàn trái với ý thức chung, và hành vi thông thường của các hình thức HTML. –

+2

Đây là trường hợp. Nó có thể là trình duyệt trên hộp dev chính của bạn tự động sử dụng 'id' làm thuộc tính' name' còn thiếu. – Chris

0

Bạn không bao giờ có thể chuyển giá trị cho trang khác bằng id, thuộc tính duy nhất mà php có thể đọc qua methos POST đang sử dụng tên của đối tượng.

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