PHP Сессии не работают для меня. Я выхожу из системы каждый раз - PullRequest
1 голос
/ 30 апреля 2020

Я пытался решить эту проблему часами, исследовал везде и безрезультатно. Я храню сеанс, чтобы пользователи могли войти в систему на нескольких страницах моего сайта, но каждый раз, когда я нажимаю на другую страницу, меня возвращают к входу в систему. Я импортирую файл 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();
 }
 ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...