我被创建为简单的登录和注册系统,并遇到了一些问题。但不确定是使用cookie还是cookie和php。我的代码是下一个:
在index.php上(登录页面我的标头中包含此代码):
<?php
include('includes/config.php');
if(!$user->is_logged_in()){
header('Location: index.php');
exit;
}
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
if($user->login($username,$password)){
$_SESSION['username'] = $username;
header('Location: home.php');
exit;
} else {
$error[] = 'Wrong username or password or your account has not been activated.';
}
}
?>
用户成功登录后,在主页上:
<?php include('includes/config.php');
if(!$user->is_logged_in()){
header('Location: index.php');
exit;
}
?>
配置文件:
<?php
ob_start();
session_start();
date_default_timezone_set('Europe/London');
define('DBHOST','localhost');
define('DBUSER','root');
define('DBPASS','pass');
define('DBNAME','db_name');
define('DIR','http://example.com/');
define('SITEEMAIL','noreply@domain.com');
try {
$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
exit;
}
include('classes/user.php');
include('classes/phpmailer/mail.php');
$user = new User($db);
?>
下一个问题是,当用户成功登录并重定向到主页时,当用户注销时一切都很好,但是当用户登录但未注销时,返回索引页面(登录页面),则出现此错误:
此页面无法正常运行website.com将您重定向了太多次。尝试清除您的cookie。 ERR_TOO_MANY_REDIRECTS
当我从Google chrome浏览器中清除cookie时,错误已修复,但用户必须再次登录,并且当同一步骤再次执行时,我再次遇到相同的错误。
答案 0 :(得分:0)
您应该按照以下逻辑将其分解为三个脚本:
主页(和所有其他内容页面):如果未登录,它将重定向到登录页面。
登录页面:如果已经登录,则重定向到主页。
密码检查器:这是登录页面上登录表单的操作。它检查用户名和密码。如果它们是正确的,它将设置表示用户已登录的会话变量,然后重定向到主页。如果它们不正确,它将重定向回登录页面。
答案 1 :(得分:0)
问题出在索引页(登录页)上:
旧代码
if( $user->is_logged_in()){
header('Location: index.php'); --> THIS IS WHERE PROBLEM IS
}
新代码
if( $user->is_logged_in()){
header('Location: home.php'); // Work correctly
}