2011-07-28 32 views
21

Tôi có dạng php như thế này.php mẫu hành động php tự

<form name="form1" id="mainForm" method="post"enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

</form 

Trong hành động biểu mẫu Tôi muốn sử dụng tên trang có thông số. như house.php?p_id=10111. Nhưng $ _SERVER ['PHP_SELF'] chỉ cung cấp số house.php (URL đầy đủ của trang của tôi là house.php?p_id=10111 như thế này) Vui lòng giúp tôi giải quyết vấn đề này. cảm ơn.

+1

Đây không phải là url đầy đủ. Đó là url + GET tham số. –

+1

@Alex Ackerman: Đó là [đường dẫn] (http://tools.ietf.org/html/rfc3986#section-3.3) cộng với [truy vấn] (http://tools.ietf.org/html/rfc3986#section- 3.4). – Gumbo

+2

có. Alex là chính xác. Tôi đang sử dụng '$ _SERVER ['PHP_SELF']."? P_id = ". $ Id' –

Trả lời

71

Làm thế nào để để trống, có gì sai?

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action=""> 

</form> 

Ngoài ra, bạn có thể bỏ qua thuộc tính hành động và nó sẽ hoạt động như mong đợi.

+1

Cảm ơn vì điều này. Tôi nghĩ đây là cách dễ nhất và tốt nhất để làm điều này. –

+11

Bằng cách để trống, hãy hủy xác thực w3c (trong trường hợp bạn quan tâm) – gadlol

+10

@jBaron Có, đó là trường hợp trong HTML5, nhưng bạn có thể bỏ qua hoàn toàn thuộc tính 'action =" "'. Nó sẽ xác nhận và làm việc như mong đợi. – Shef

7

Để trống giá trị hành động sẽ khiến biểu mẫu đăng lại chính nó.

12

Bạn có thể để hành động trống hoặc sử dụng mã này:

<form name="form1" id="mainForm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'];?>"> 
</form> 
0

Đây là hoàn hảo. hãy thử cái này :)

<form name="test" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
/* Html Input Fields */ 
</form> 
+1

Điều này cho phép tấn công XSS, bạn cần lọc/sanatize PHP_SELF – Chad

+0

ok tôi hiểu rồi. cảm ơn bạn. nó rất hữu ích. –

3

Bạn cũng có thể sử dụng phím tắt tiếng vang thay vì gõ "echo blah;" như hình dưới đây:

<form method="POST" action="<?=($_SERVER['PHP_SELF'])?>"> 
+1

Điều này cho phép tấn công XSS, bạn cần lọc/vệ sinh PHP_SELF – Chad

1

khác (và theo ý kiến ​​của tôi đúng) phương pháp là sử dụng __FILE__ liên tục nếu bạn không thích phải dựa vào $_SERVER biến.

$parts = explode(DIRECTORY_SEPARATOR, __FILE__); 
$fileName = end($parts); 
echo $fileName; 

Giới thiệu về ma thuật và hằng số được xác định trước: 1, 2.