我正在创建一个网站或社交网站。问题是当我不使用cookie登录时,登录脚本成功回显会话存储的用户名,即echo $_SESSION['username'];
,但是当我尝试使用会话和cookie登录时,它不会回显会话存储的用户名!图片:[https://i.stack.imgur.com/bgniz.png][1]
请帮帮我!我的代码是:
的index.php(主页)
<?php
class Redirect{
public function redirectLogin(){
session_start();
if(isset($_SESSION['username']) || isset($_COOKIE['username'])){
header('Location: logarea.php');
}
}
}
$red = new Redirect;
$red->redirectLogin();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login Form</title>
<script src = "jquery-3.2.1.js"></script>
</head>
<body>
<form action = "login.php" method = "post" onSubmit = "">
Username:<input type = "text" name = "username" id = "user" /><br /><br />
Password:<input type = "password" name = "password" id = "pass "/><br /><br />
<input type = "checkbox" name = "rememberme" id = "remember" />Remember Me<br /><br />
<input type = "submit" name = "login" value = "Log In" id = "login" /><br /><br />
<p id = "responsemsg"></p>
</form>
</body>
</html>
login.php(登录流程)
<?php
class Validate{
protected $DB_HOST = 'localhost';
protected $DB_USER = 'root';
protected $DB_PASS = '';
protected $DB_NAME = 'logindb';
public function connect(){
ob_start();
session_start();
session_regenerate_id(true);
global $conn;
$conn = new mysqli($this->DB_HOST, $this->DB_USER, $this->DB_PASS, $this->DB_NAME);
}
public function loginStatus(){
global $conn;
self::connect();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(isset($_POST['username'])){
$username = $_POST['username'];
}
if(isset($_POST['password'])){
$password = $_POST['password'];
}
if(isset($_POST['rememberme'])){
$rememberme = $_POST['rememberme'];
}
if(!empty($username) && !empty($password)){
$query = "SELECT `username`, `password` FROM `login` WHERE `username` = '$username' AND `password` = '$password'";
$query_run = $conn->query($query);
$user = null;
$pass = null;
while($quo = $query_run->fetch_array()){
$user = $quo['username'];
$pass = $quo['password'];
}
if($username == $user && $password == $pass){
if(!empty($rememberme)){
setcookie('username', $username, time()+(24*60*60));
}else{
$_SESSION['username'] = $username;
}
header('Location: logarea.php');
}else{
echo('Incorrect Username Or Password');
}
}else{
echo('Please fill username and password');
}
}
}
}
$validation = new Validate;
$validation->loginStatus();
用户日志区域(logarea.php)
<?php
session_start();
if(isset($_SESSION['username']) || isset($_COOKIE['username'])){
echo('You are now logged in, '. ucwords($_SESSION['username']));
echo('<br />'.'<br />');
echo('<a href = "logout.php">Log Out</a>');
}else{
header('Location: index.php');
}
?>
退出(logout.php)
<?php
session_start();
session_destroy();
setcookie('username' ,'', time()-(24*60*60*60));
header('Location: index.php');
请帮帮我。
答案 0 :(得分:0)
你有一个if else声明:
if(!empty($rememberme)){
setcookie('username', $username, time()+(24*60*60));
}else{
$_SESSION['username'] = $username;
}
摆脱其他人。当然,您可以设置一个cookie来记住他们的用户名,但是无论如何都应该设置会话?