2011-02-28 87 views
2

我正在PHP 5.3.5的頁面上工作,而且似乎$_POST不包含從我的表單提交的數據。

這是HTML文件:

<html> 
<body> 

<form action="welcome.php" method="post"> 
Name: <input type="text" name="fname" /> 
Age: <input type="text" name="age" /> 
<input type="submit" /> 
</form> 

</body> 
</html> 

這是PHP文件:

<html> 
<body> 

Welcome <?php echo $_POST["fname"]; ?>!<br /> 
You are <?php echo $_POST["age"]; ?> years old. 

</body> 
</html> 

的問題是,表單值不過去了,所以我得到的輸出是這樣的:

 
Welcome ! 
You are years old. 

取而代之的是:

 
Welcome John! 
You are 28 years old. 

我在做什麼錯?

+0

您確定您已經發布過嗎?你能看到郵件正文與標題中的信息? – alex 2011-02-28 02:13:28

+0

如果您在welcome.php上查看源代碼,您是否看到php或只是空白? – 2011-02-28 02:16:34

+0

它返回空白頁面 – naji 2011-02-28 02:42:23

回答

5

嘗試<?php var_dump($_POST); ?>看看裏面有什麼。沒有辦法破壞$ _POST - 這將是別的東西。可能的服務器設置可能會禁用$ _POST。

0

是您的HTML表方法 se轉至至POST

<form method="post" action="process.php"> 
<fieldset><legend>your data</legend> 
<input type="text" name="txtname" id="id_name" /> 
<input type="text" name="txtage" id="id_age" /> 
</fieldset> 
<button type="submit">OK</button> 
</form> 
+0

糟糕!我在回答時編輯過。 :) – tenshimsm 2011-02-28 02:31:24

0

您還沒有發佈,或什麼是clobbering $_POST

如果您在嘗試訪問代碼之前未在代碼中提到$_POST,那麼您尚未將其發佈到腳本中。

0

這裏工作,但在PHP 5.3.1。試試這個:

<!doctype html> 
<html> 
<head> 
<title>form</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 

<form method="post" action="process.php"> 
<fieldset><legend>your data</legend> 
<input type="text" name="txtname" id="id_name" /> 
<input type="text" name="txtage" id="id_age" /> 
</fieldset> 
<button type="submit">OK</button> 
</form> 

</body> 
</html> 


<?php 
if(isset($_POST["txtname"])) 
    $txtname = $_POST["txtname"]; 
else 
    unset($txtname); 
if(isset($_POST["txtage"])) 
    $txtage = $_POST["txtage"]; 
else 
    unset($txtname); 
?> 
<!doctype html> 
<html> 
<head> 
<title>form</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 

<p>Welcome <?=$txtname; ?>!<br /> 
You are <?=$txtage; ?> years old.</p> 
</body> 
</html> 
+0

抱歉,太多mistyping.Edited很多次。 :( – tenshimsm 2011-02-28 02:51:09

0

嘗試在POST使用大寫:

<form action="file.php" method="POST"> 

相反的:PHP 5.3

<form action="file.php" method="post"> 
2

從使用全局,預先設定的變量移開,像$ _POST,以避免漏洞。

這個問題,據我所知,從來沒有使用過$ _POST或$ _GET的程序員可能會把它當作任何其他變量,並且自己面對安全威脅。

我還沒有發現檢索$ _POST數據的「正確」方法,但是我使用的方法看起來相當衛生。

<?php parse_url(file_get_contents("php://input"), $_POST)); ?> 

這傳遞解析HTTP POST字符串到$ _ POST變量

2

你檢查你的php.ini?
一旦我設置post_max_sizeupload_max_filesize相同,我就會破壞我的帖子方法。我覺得post_max_size必須小於upload_max_filesize
用RHEL 6.0中的PHP 5.3.3測試

0

我也有同樣的問題。我使用Windows記事本編輯.php文件,並意外地保存在Unicode編碼的文件,這是創建問題。然後我把它保存在UTF-8編碼中,它的功能就像一個魅力。希望這可能有所幫助。