来自wikihow的安全登录脚本

时间:2014-01-28 20:51:27

标签: php mysql

有没有人在wikihow中使用过这个script

默认情况下,登录和注册页面都会将您重定向到“protected_pa​​ge.php”,受保护的页面应该通过以下方式验证您的登录:`

<?php

include_once 'includes/db_connect.php';
include_once 'includes/functions.php';

sec_session_start();
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Secure Login: Protected Page</title>
        <link rel="stylesheet" href="styles/main.css" />
    </head>
    <body>
        <?php if (login_check($mysqli) == true) : ?>
        <p>Welcome <?php echo htmlentities($_SESSION['username']); ?>!</p>
            <p>

<?php else : ?>
            <p>
                <span class="error">You are not authorized to access this page.</span> Please <a href="index.php">login</a>.
            </p>
        <?php endif; ?>

问题是我总是得到错误消息,即使我的数据库已配置并且注册信息被发送到数据库,我甚至编辑了注册表单以在数据库端添加更多信息而没有任何问题,但仍然尝试登录网站时,我总是收到此错误消息。有人有这个问题吗?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并找到了解决方案。我的问题出在我的php.ini文件中。

我不得不改变

session.save_path = "/var/php_sessions"

到:

session.save_path = "THE_DOCUMENT_ROOT_FOLDER_FROM_MY_HOST"

祝你好运

答案 1 :(得分:0)

我没有答案,但我知道必须在sec_session_start函数中找到问题: 如果您不使用$session_name = 'sec_session_id',  session_name($session_name);session_regenerate_id(true); 代码有效。

function sec_session_start() {

//  $session_name = 'sec_session_id';   // Set a custom session name

    /*Sets the session name.
     *This must come before session_set_cookie_params due to an undocumented bug/feature in PHP.
     */

//  session_name($session_name);

    $secure = true;
    // This stops JavaScript being able to access the session id.
    $httponly = true;
    // Forces sessions to only use cookies.
    if (ini_set('session.use_only_cookies', 1) === FALSE) {
        header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
        exit();
    }
    // Gets current cookies params.
    $cookieParams = session_get_cookie_params();
    session_set_cookie_params($cookieParams["lifetime"],
            $cookieParams["path"],
            $cookieParams["domain"],
            $secure,
            $httponly);

    session_start();            // Start the PHP session
//  session_regenerate_id(true);    // regenerated the session, delete the old one.

}