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行
答案 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
}
有些人不喜欢这样,但我说如果你使用动态语言,你也可以利用它。