如何检查邮件是否成功?

时间:2011-03-08 01:02:14

标签: php post xdebug easyphp

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);
}

我没有发帖,但是它说$email没有在第10行定义。为什么?我使用EasyPHP

  

注意:未定义的索引:电子邮件   C:\ PROGRAM   文件\的EasyPHP-5.3.5.0 \ WWW \ V0.3 \型号\的login.php   在第10行

3 个答案:

答案 0 :(得分:5)

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

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ... you're in a post ...
}

检查特定表单字段存在风险 - 您可能会重命名/删除该字段并忘记更新表单。但是检查$ _SERVER值是100%可靠的 - 它始终可用,无论脚本被调用的方法是什么。

答案 1 :(得分:0)

它表示因为$_POST数组为空(当然,您没有发布)并且您正在尝试访问该数组email的{​​{1}}索引,存在。

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

if(isset($_POST["email"]))

注意:这只是一个通知,它不会影响你的应用程序,所以我建议你不要太担心它,你会得到一个更干净的代码。 这是个人意见请查看您不应该在此处的原因:How to avoid isset() and empty()

<强>更新

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

答案 2 :(得分:0)

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

if($_POST)
{
    // stuff
}

有些人不喜欢这样,但我说如果你使用动态语言,你也可以利用它。