PHP登录系统问题...从页面到页面发送错误

时间:2009-04-09 16:58:41

标签: php login

我在网站的每个页面都有一个登录表单,因此用户可以从任何地方登录。我有一个login.php文件,我从表单中引用它(使用'action')。

我使用$_SERVER['HTTP_REFERER']将用户重定向到他成功登录或登出时登录的同一页面。

但如果登录时出现问题,如何将错误发送到他尝试登录的同一页面?我尝试使用$_GET发送错误,如下所示:

// process the script only if the form has been submitted
if (array_key_exists('login', $_POST)) {
    // Login code goes here...

    // If there was a problem, destroy the session and prepare error message
    else {
    $_SESSION = array();
    session_destroy();
    header('Location: '.$_SERVER['HTTP_REFERER'].'?error');
    exit;
}

但问题是网站上的很多网页都是这样的details.php?mid=0172495。他们已经从$_GET方法中重新获取信息,出于安全考虑,我无法使用其他$_GET方法......

那么,我怎样才能传递错误? 感谢...

4 个答案:

答案 0 :(得分:2)

由于您已经在使用会话,因此在销毁会话之后为什么不创建一个带有$ _SESSION ['error']或类似设置的新会话?或者只是根本不删除会话,但设置错误,你可以立即在其他页面检查?

答案 1 :(得分:0)

我不确定你究竟是什么意思“出于安全原因我不能使用另一个$_GET方法”,但是如果查询字符串中已经存在某些内容,则只需要附加另一个变量它,而不是取代它。

也就是说,如果地址与details.php?mid=0172495类似,则应将其发送至details.php?mid=0172495&error,而如果仅details.php,则将其发送至details.php?error

答案 2 :(得分:0)

补充Chad Birch所说的......

在您重定向的登录脚本中,检查字符“?”的HTTP_REFERER值。如果存在,请将“& error”附加到HTTP_REFERER并重定向到该地址。否则将'?error'附加到HTTP_REFERER并重定向到该。

答案 3 :(得分:0)

执行所需操作的另一种方法是在每个具有登录表单的页面中包含login.php文件,并将其发布到同一页面。所以你根本不需要任何重定向。

这可能不是一个好的可扩展和可维护的解决方案,但它很简单。这一切都取决于你正在写什么样的应用程序。但是你说你是php的新手,所以你可以这样开始。你总能在以后看上去......