2014-10-01 53 views
-2

我收到以下錯誤:注意:未定義的變量:POST注意:未定義的變量:POST - 很奇怪,因爲我設置的變量

<form action="" method="POST"> 
your email: <br /><input ="text" name="email" size"30"/><br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
<?php 

     $email= $POST['email']; 
     $submit =$POST['submit']; 
+0

重複[PHP:「注意:未定義變量」和「通知:未定義的索引」]的( http://stackoverflow.com/a/4261200/342740) – Prix 2014-10-01 13:28:28

回答

0

因爲它是一個PHP超全局(並因此與_前綴)它是$_POST

+0

部分正確,但忽略了一些重要的東西,即使你用'_'寫它,因爲它是你仍然會得到通知。 – Prix 2014-10-01 13:13:56

+0

這是因爲給定的索引可能不存在於$ _POST數組中。最好使用如下形式:'$ email = isset($ _ POST ['email'])? $ _POST ['email']:null;'。 – rodrigorigotti 2014-10-01 13:15:33

+0

那麼你應該已經將它更新爲你的問題,因爲它現在是一個不完整的答案,或者至少提到爲什麼即使從$ POST更改爲$ _POST也會發出通知。 – Prix 2014-10-01 13:16:58

-1

這不是$POST,這是$_POST,每this answer。 PHP超全球變量需要一個_作爲變量名的前綴。根據this answer,您還應該使用isset()來確保您的變量是首先聲明的。

3

你缺少_它應該是$_POST不是$POST改變他們。如果在爲變量賦值時使用issetempty會更好。

$email= $_POST['email']; 
    $submit =$_POST['submit']; 
+0

我只是提到他是否應該使用isset或空爲此目的 – 2014-10-01 13:15:38

0

你需要empty()isset()檢查,以避免PHP通知還使用$_POST$POST

在PHP POST方法值獲得通過$_POST

if(isset($_POST['submit'])) {  
    $email= (!empty($_POST['email']) ? $_POST['email'] : ''); 
} 
0

你需要用你的代碼一個條件,用於檢查是否發佈了發佈請求,否則代碼將在頁面加載上運行,當沒有發佈數據時:

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
    //you should also probably check the individual keys exist as well... 
    $email= $_POST['email']; 
    $submit =$_POST['submit']; 
} 

此外,如其他人提及的,PHP超全局前綴以下劃線,所以其$_POST$POST