有没有人在wikihow中使用过这个script?
默认情况下,登录和注册页面都会将您重定向到“protected_page.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; ?>
问题是我总是得到错误消息,即使我的数据库已配置并且注册信息被发送到数据库,我甚至编辑了注册表单以在数据库端添加更多信息而没有任何问题,但仍然尝试登录网站时,我总是收到此错误消息。有人有这个问题吗?
答案 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.
}