2012-03-28 104 views
3
<?php echo $_POST['ss'];?> 
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> 
<input name="ss" type="text" /> 
<input type="submit" name="submit"> 
</form> 

這個代碼應該打印什麼,當點擊提交時在文本框中輸入name =「ss」。
但它沒有打印。使用method =「get」而不是post,有什麼問題。PHP POST不能正常工作

+0

你看到了什麼,當你'的print_r($ _ POST);'? – Brad 2012-03-28 20:17:02

+3

爲什麼你使用'$ _SERVER ['PHP_SELF']',如果你想讓它提交給自己,可以讓action屬性爲空? – Shef 2012-03-28 20:17:06

+0

看起來對我來說,print_r($ _ POST)會告訴你什麼? – 2012-03-28 20:17:38

回答

11

如果你剛剛刷新頁面,這樣做:的

action='' 

代替:

action="<?php echo $_SERVER['PHP_SELF'];?>" 

此外,添加此2號線,看看有什麼被存儲(如果有的話)的$ _POST數組:

var_dump($_POST); 

嗯......所以它是空的提交?嘗試添加這對你的PHP文件的頂部:

if(empty($_SERVER['CONTENT_TYPE'])) 
{ 
    $_SERVER['CONTENT_TYPE'] = "application/x-www-form-urlencoded"; 
} 

好,現在請檢查您的php.ini文件(通常需要須藤或根在/ etc):

post_max_size = 8M 
variables_order = "EGPCS" 

你有這兩個規則組?如果是這樣,請注意您分配的內存量。超過2048MB的任何內容都可能會給您帶來麻煩,具體取決於您的系統規格。

注意:如果您對php.ini文件進行更改並且PHP作爲apache模塊運行,則需要重新啓動apache。沿着線的東西:

sudo /etc/init.d/httpd restart 
+2

其不工作 – 2012-03-28 20:19:04

+0

var_dump說什麼?陣列(0)? – 2012-03-28 20:20:04

+0

我做了print_r($ _ POST),當第一次加載頁面的時候說Array(),但是當我提交時,沒有任何數組。 – 2012-03-28 20:20:28

5

我打破了我的POST方法一旦我設定post_max_sizeupload_max_filesize相同。我覺得post_max_size必須小於upload_max_filesize
在RHEL 6.0

+1

你節省了我的一天。非常感謝 – Limon 2014-03-27 19:20:26

+1

很高興我可以幫忙:-D – zx1986 2014-03-28 09:33:39

+0

那正是發生了什麼事。謝謝! – MadTurki 2014-04-28 13:46:58

5

測試與PHP 5.3.3這可能是由於重寫在.htaccess規則file.Add這個條件.htaccess文件

RewriteCond %{REQUEST_METHOD} !POST [NC] 

或加入這一行

RewriteRule ^welcome_post.php - [PT] 
+2

非常感謝!我遇到了這個問題,並且你的第一個重寫條件完全解決了它!救了我幾個小時的痛苦:) – wyzkid207 2015-02-17 21:23:21

+0

這是工作.. !!!! :)謝謝.. – 2015-12-28 05:30:42

-2

用這個代替;

$variable_name = $_REQUEST["ss"]; 
echo $variable_name; 
0

今天我的朋友遇到了這個問題。答案是很簡單 - 基本上,你必須利用的method="POST"

POST部分的最終結果應該

<?php echo $_POST['ss'];?> 
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST"> 
<input name="ss" type="text" /> 
<input type="submit" name="submit"> 
</form> 
+1

這不可能吧...看到http://www.w3schools.com/php/showphp.asp?filename=demo_form_post – m13r 2016-09-15 08:05:44

+1

不正確。 [枚舉屬性(如'method')不區分大小寫](https://www.w3.org/TR/html5/infrastructure.html#enumerated-attribute)。 – Quentin 2017-07-31 10:02:42

-2

改變你的IDE,我用phpstorm,這是夢幻般的,但是當我使用Dreamweaver它的工作原理可能,測試你可以直接從wampserver本地主機上運行您的網頁,我改變了apache的默認端口,我認爲問題是從那裏,如果您使用phpstorm或更改apache服務器的端口來更改您的IDE。

-1

<form action="" method="post"> method =「post」對POST數據很重要。

使用PHP請求,而不是:

<form action="" method="post"> 
    <input type="email" name="mail"> 
    <input type="submit" name="submit" value="Submit"> 
</form> 
PHP: 

if(isset($_REQUEST['submit'])){ 
    $val= $_REQUEST['mail']; 
    echo $val; 
} 
+0

「不要忘了給POST方法的HTML表單屬性」 - 他們沒有。您可以在問題的代碼中清楚地看到它。 – Quentin 2017-07-31 10:00:44

+0

方法=「後」,如果舊的緩存存儲在Web瀏覽器將無法正常工作。爲了使method =「post」處於活動狀態,客戶端必須驗證POST方法在高速緩存存儲中正在工作。 – 2017-08-01 05:55:09