2014-10-01 99 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