Я пытался решить эту проблему часами, исследовал везде и безрезультатно. Я храню сеанс, чтобы пользователи могли войти в систему на нескольких страницах моего сайта, но каждый раз, когда я нажимаю на другую страницу, меня возвращают к входу в систему. Я импортирую файл PHP с именем account. php на каждую страницу, которая содержит session_start (); и я также проверяю, не вошел ли пользователь в систему. Пожалуйста, помогите:)
<?php
session_start();
$conn = new mysqli('localhost','...','...','accounts');
if($conn->connect_error){
die('...');
}
*//signup//*
$errors = array();
$firstName = "";
$lastName = "";
$email = "";
if(isset($_POST['register'])){
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$password = $_POST['password'];
$passwordRepeat = $_POST['passwordRepeat'];
*//...Validation...//*
*//...Insert data into table...//*
$emailQuery = "SELECT *FROM users WHERE email=? LIMIT 1";
$statement = $conn->prepare($emailQuery);
$statement->bind_param('s',$email);
$statement->execute();
$rezultat = $statement->get_result();
$nruser = $rezultat->num_rows;
$statement->close();
if($nruser >0){
$errors['email'] = "...";
}
if(count($errors) == 0){
$passwordEncrypt = password_hash($password,PASSWORD_DEFAULT);
$sql = "INSERT INTO users (firstName,lastName,email,password)
VALUES (?,?,?,?)";
$statement = $conn->prepare($sql);
$statement->bind_param('ssss',$firstName,$lastName,$email,$passwordEncrypt);
if($statement->execute()){
//login
$user_id= $conn->insert_id;
$_SESSION['id'] = $user_id;
$_SESSION['firstName'] = $firstName;
$_SESSION['lastName'] = $lastName;
$_SESSION['email'] = $email;
header('location:main.php');
exit();
}else{
$errors['databaseError'] = "....";
}
}
}
*//login*
$errors = array();
$email = "";
$password = "";
if($conn->connect_error){
die('...');
}
if(isset($_POST['login'])){
$email = $_POST['email'];
$password = $_POST['password'];
*//...Validation...//*
*// If there are no errors get data from table //*
if(count($errors)==0){
$sql = "SELECT * FROM users WHERE email=? LIMIT 1";
$statement = $conn->prepare($sql);
$statement->bind_param('s',$email);
$statement->execute();
$rezultat = $statement->get_result();
$user = $rezultat->fetch_assoc();
if(password_verify($password,$user['password'])){
$_SESSION['id'] = $user['id'];
$_SESSION['firstName']= $user['firstName'];
$_SESSION['lastName'] = $user['lastName'];
$_SESSION['email']= $user['email'];
header('location:main.php');
exit();
}else{
$errors['login_fail'] = "...";
}
}
}
?>
Включая код выше на одной из моих страниц и проверяя, вошел ли пользователь в систему:
enter code here
<?php
require 'accounts.php';
if (!isset($_SESSION['id'])){
header('location:login.php');
exit();
}
?>