0
<?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”更新到当前时间是否正确?为此,数据库结构必须是什么?它没有在我的数据库中更新。

谢谢您的帮助。

4

5 回答 5

1

您的代码非常适合更新 lastlogin,但是您得到的错误是什么?请给出你在这方面遇到的错误类型。从逻辑上讲,您的代码似乎是正确的,可能是一些语法错误。在页面顶部添加 error_reporting(E_ALL) 并查看实际发生了什么错误。

于 2012-10-04T05:26:49.430 回答
0
header("location: profile.php");
                ^ //space should present because in some host environment it creates problem
于 2012-10-04T04:16:53.207 回答
0

如果您从最可能使用 POST 的表单重定向到登录脚本,您不应该使用 $_POST[''] 而不是 $_SESSION 吗?

只是一个想法。

于 2012-10-04T04:30:28.687 回答
0

始终exit();header重定向后使用

于 2012-10-04T04:56:46.833 回答
0

好的,通过广泛的搜索发现了它。标头已经与

include header.html

行,所以它无法执行

header(location: profile.php)

线。直到现在我才听说过这个问题。所以为了解决这个问题,我刚搬家

<?php
...
include header.html
?>

在 HTML 开始之前到 php 代码的底部。现在包含标题行可以做到这一点,然后仍然会为页面加载标题。

感谢您对此的所有帮助。

于 2012-10-04T16:22:00.817 回答