我需要您的帮助才能使用此登录脚本。当用户注册时,数据库中的列active
被设置为零(0),并且激活链接被发送到他们提供的电子邮件。单击激活链接后如果成功,则其各自的active
列将设置为1。
但只有当我点击两次提交按钮时,才能正确组合用户名和密码。
在第一次点击时,我得到以下行
注意:未定义的索引:请记住第37行的C:\ wamp \ www \ church \ login.php
尚未验证
但是当我第二次点击登录时。
<?php
if (isset($_POST['submit'])) {
$username = trim($_POST['username']);
$username = strip_tags($_POST['username']);
$username = htmlentities($_POST['username']);
$username = stripslashes($_POST['username']);
$username = mysql_real_escape_string($_POST['username']);
$password = sha1($_POST['password']);
if (isset($_POST['username']) && isset($_POST['password'])) {
$query = mysql_query("SELECT username, password
FROM USERS
WHERE username = '$username'
AND password = '$password'") or die (mysql_error());
$user = mysql_num_rows($query);
if ($user == 1) {
$row = mysql_fetch_assoc($query);
if ($row['active'] == 1) {
$_SESSION['logged_username'] = $username;
if ($_POST['remember']) {
setcookie("CookieUser", $_SESSION['logged_username'], time() + 60 * 60 * 24 * 100, "/");
setcookie("CookiePass", $password, time() + 60 * 60 * 24 * 100, "/");
header('Location: http://127.0.0.1/church/index.php?id=1');
}
}
if ($row['active'] !== 1) {
echo "Not Verified Yet";
}
}
else {
echo "<div id='content' >";
echo "<div class='OpenError' >";
echo "Username & Password Combination Is Wrong";
echo "</div>";
echo "</div>";
}
}
}
?>
答案 0 :(得分:1)
将if ($_POST['remember']) {
更改为if (isset($_POST['remember']) && $_POST['remember']) {
老实说,从错误消息中,它应该是非常明显的,尤其是。看到你的脚本中的其他地方都有isset
测试代码。
答案 1 :(得分:0)
问题不是您没有登录。这是因为您的代码在发送重定向标头后没有die()
,因此继续执行该页面上的代码。此外,如果用户未选择remember
,则不会发生任何事情。要修复(第一期),只需在 die();
之后立即添加header("location: ...");
。
die();
之后我需要header("location: ...");
? header()
函数向浏览器(或请求页面的其他程序)发送字符串(文本)。但是,服务器不知道header("location: ...");
和header("somerandomthing: ...");
之间的区别,因此它会继续执行代码,直到它到达脚本末尾,错误或客户端断开连接。因此,为了防止代码执行继续,只需在每次 die();
调用后添加header("location: ...");
。
<?php
if ($user == 1) {
$row = mysql_fetch_assoc($query);
if ($row['active'] == 1) {
$_SESSION['logged_username'] = $username;
if ($_POST['remember']) {
setcookie("CookieUser", $_SESSION['logged_username'], time() + 60 * 60 * 24 * 100, "/");
setcookie("CookiePass", $password, time() + 60 * 60 * 24 * 100, "/");
}
// Redirect even if not 'remembered'
header('Location: http://127.0.0.1/church/index.php?id=1');
die;
}
if ($row['active'] !== 1) {
echo "Not Verified Yet";
}
}