Php 如何检查是否制作了帖子?

Php 如何检查是否制作了帖子?,php,post,xdebug,easyphp,Php,Post,Xdebug,Easyphp,我没有发表任何帖子,但它说,$email在第10行没有定义。为什么?我用 注意:未定义索引:中的电子邮件 C:\程序 Files\EasyPHP-5.3.5.0\www\v0.3\model\login.php 第10行 它说,因为$\u POST数组是空的(当然,您没有发布),并且您试图访问该数组的email索引if(isset($\u POST[“email”])),该数组不存在 您可以通过执行以下操作来解决此问题: if(isset($_POST["email"])) { $email =

我没有发表任何帖子,但它说,
$email
在第10行没有定义。为什么?我用

注意:未定义索引:中的电子邮件 C:\程序 Files\EasyPHP-5.3.5.0\www\v0.3\model\login.php 第10行


它说,因为
$\u POST
数组是空的(当然,您没有发布),并且您试图访问该数组的
email
索引
if(isset($\u POST[“email”]))
,该数组不存在

您可以通过执行以下操作来解决此问题:

if(isset($_POST["email"]))
{
$email = mysql_real_escape_string($_POST["email"]); /* Line 10 */
$password = mysql_real_escape_string($_POST["password"]);

$result = mysql_query("SELECT password, id FROM users WHERE email = '$email'");

if (!$result)
    {
        die('Invalid query: ' . mysql_error());
    }

$row = mysql_fetch_assoc($result);

if($row['password'] == $password)
    {
        ini_set("session.cookie_lifetime","360000");
        session_start();
        $_SESSION['valid_user'] = $row['id'];
        $_SESSION['email'] = $row['email'];
        mysql_close($link);
        header('Location: index.php');
    }


mysql_close($link);
}
注意:这只是一个通知,不会影响您的应用程序,因此我建议您不要太担心它,您将有一个更干净的代码这是个人意见请查看您不应在此处查看的原因:

更新


增加了isset功能以防止通知。感谢deceze。

它说,因为
$\u POST
数组是空的(当然,您没有发布),并且您正在尝试访问该数组的
email
索引
if(isset($\u POST[“email”])
,而该数组不存在

您可以通过执行以下操作来解决此问题:

if(isset($_POST["email"]))
{
$email = mysql_real_escape_string($_POST["email"]); /* Line 10 */
$password = mysql_real_escape_string($_POST["password"]);

$result = mysql_query("SELECT password, id FROM users WHERE email = '$email'");

if (!$result)
    {
        die('Invalid query: ' . mysql_error());
    }

$row = mysql_fetch_assoc($result);

if($row['password'] == $password)
    {
        ini_set("session.cookie_lifetime","360000");
        session_start();
        $_SESSION['valid_user'] = $row['id'];
        $_SESSION['email'] = $row['email'];
        mysql_close($link);
        header('Location: index.php');
    }


mysql_close($link);
}
注意:这只是一个通知,不会影响您的应用程序,因此我建议您不要太担心它,您将有一个更干净的代码这是个人意见请查看您不应在此处查看的原因:

更新

增加了isset功能以防止通知。多亏了deceze.

array()==false
,为什么不:

if (isset($_POST['email']))
$email = mysql_real_escape_string($_POST["email"]);
有些人不喜欢这样,但我想说,如果您使用的是动态语言,您最好利用它。

array()==false
,那么为什么不:

if (isset($_POST['email']))
$email = mysql_real_escape_string($_POST["email"]);

有些人不喜欢这样,但我说如果你使用的是动态语言,你最好利用它。

检查帖子是否完成的最可靠的方法是通过

if($_POST)
{
    // stuff
}

检查特定表单字段是有风险的-您可能会重命名/删除该字段并忘记更新表单。但是检查$\u服务器值是100%可靠的-无论脚本通过什么方法调用,它总是可用的。

检查POST是否完成的最可靠的方法是通过

if($_POST)
{
    // stuff
}

检查特定表单字段是有风险的-您可能会重命名/删除该字段并忘记更新表单。但是检查$\u服务器值是100%可靠的-无论脚本通过什么方法调用,它总是可用的。

您发布的代码片段是否位于login.php文件的第9行和第10行?还是其他地方?@deceze,对不起,代码已更新。您确定这是100%正确粘贴的副本吗?里面没有奇怪的unicode字符或其他不可见的东西?如果键入的所有内容都正确,那么这种情况就不会发生……嘿,ilhan,您应该阅读这篇关于安全存储密码的文章:您发布的代码片段是否位于login.php文件的第9行和第10行?还是其他地方?@deceze,对不起,代码已更新。您确定这是100%正确粘贴的副本吗?里面没有奇怪的unicode字符或其他不可见的东西?如果键入的所有内容都正确,则不会发生这种情况……嘿,ilhan,您应该阅读这篇关于安全存储密码的文章:这不是Javascript,如果未设置
电子邮件
,则肯定会发出通知
isset
是正确的使用方法!你必须担心通知-1通知不会影响我的申请,但访问者必须向下滚动几个小时pages@deceze我担心的是我的答案是否正确,而不是其他用户的答案,考虑到这些通知,我有好几年的时间忽略它们,从来没有遇到过问题,但我想那只是个人问题opinion@ilhan如果您在生产代码中显示被视为违反安全的通知和错误,则只应在开发过程中显示错误。请参阅和。这不是Javascript,如果未设置
电子邮件
,这肯定会引发通知
isset
是正确的使用方法!你必须担心通知-1通知不会影响我的申请,但访问者必须向下滚动几个小时pages@deceze我担心的是我的答案是否正确,而不是其他用户的答案,考虑到这些通知,我有好几年的时间忽略它们,从来没有遇到过问题,但我想那只是个人问题opinion@ilhan如果您在生产代码中显示被视为违反安全的通知和错误,则只应在开发过程中显示错误。请参阅和。这有助于澄清
if($\u SERVER['REQUEST\u METHOD']='POST'){…}
if($\u POST){…}
之间在功能上的确切区别,这有助于澄清
if($\u SERVER['REQUEST\u METHOD']='POST'){…}
if($\u POST){…}