<?php
session_start();
include 'db.php';
include 'header.html';
if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['email'])) {
header("location:profile.php");
} elseif(!empty($_POST['email']) && !empty($_POST['pass'])) {
$email = mysql_real_escape_string($_POST['email']);
$pass = md5(mysql_real_escape_string($_POST['pass']));
$sql = mysql_query("SELECT id, name, email, pass FROM users WHERE email='$email' AND pass='$pass'");
$row = mysql_fetch_array($sql);
$id = $row['id'];
$email1 = $row['email'];
$name = $row['name'];
$num = mysql_num_rows($sql);
if($num == 1) {
$_SESSION['id'] = $id;
$_SESSION['email'] = $email1;
$_SESSION['name'] = $name;
$_SESSION['LoggedIn'] = 1;
$update = mysql_query("UPDATE users SET lastlogin=NOW() WHERE email='$email1'");
header("location:profile.php");
} else {
echo "<h1>Error</h1>";
echo "<p>Sorry! Either your account could not be found or you have entered the wrong email or password. Please try again.</p>";
}
}
?>
此脚本在我的localhost环境中运行良好,但在上传到主机后,登录后不会转到profile.php。此外,如果会话设置为非空,则不会重定向到profile.php。有什么想法吗?
第二个问题,我的代码是否正确将'lastlogin'更新为当前时间?数据库结构必须是什么?它没有在我的数据库中更新。
感谢您的帮助。
答案 0 :(得分:1)
你的代码非常适合更新lastlogin,但你得到的错误是什么?请给出你得到的错误类型。逻辑上你的代码似乎是正确的,它可能是一些语法错误。在页面顶部添加error_reporting(E_ALL),看看实际发生了什么错误。
答案 1 :(得分:0)
header("location: profile.php");
^ //space should present because in some host environment it creates problem
答案 2 :(得分:0)
如果您使用最可能的POST从表单重定向到登录脚本,是否应该使用$ _POST ['']而不是$ _SESSION?
只是一个想法。
答案 3 :(得分:0)
exit();
重定向
header
答案 4 :(得分:0)
好的,通过广泛的搜索找到了它。标题已经与
一起发送include header.html
行,因此无法执行
header(location: profile.php)
线。直到现在我才从未听说过这个问题。所以为了解决这个问题,我刚刚移动了
<?php
...
include header.html
?>
在HTML开始之前到php代码的底部。现在include标题行可以做到这一点,然后仍然会为页面加载标题。
感谢您对此的所有帮助。