Переменные класса stati c сбрасываются при вызове их в другом файле - PullRequest
0 голосов
/ 15 февраля 2020

Я практикую PHP, и проблема, с которой я столкнулся сегодня, заключается в том, что моя переменная stati c сбрасывается при каждом вызове.

Страница входа после проверки пользователя из БД

<?php
Session::onlogin(1);
?>

Это мой сессионный класс, он забавный c onlogin, и я посылаю ему некоторые данные из другого файла, которые меняют $is_signed на true. Но проблема в том, что переменная $is_signed получает сброс, когда я вызываю ее из индекса. php возвращает false

<?php
class Session {

private static $is_signed = false;

function __construct(){
    session_start();
}

public static function is_signed_in(){
    return self::$is_signed;
}

public static function onLogin($userid){
    if($userid){
        session_regenerate_id();
        $_SESSION['user_id'] = $userid;
        self::$is_signed = true;
        return true;
    }
}
}
$session = new Session;
?>

Теперь я вызываю ее в индексе. php, как показано ниже

if(Session::is_signed_in()){
    echo "logged In";
}
else {
echo "error";
?>

Я не знаю, где я создаю какую-либо ошибку, но когда я вызываю методы.

1 Ответ

0 голосов
/ 15 февраля 2020

Итак, я присваиваю этот

класс. php

class Session
{

    private static $is_signed = false;

    function __construct()
    {
        session_start();
    }

    public static function is_signed_in()
    {
        return self::$is_signed;
    }

    public static function onLogin($userid)
    {
        if ($userid) {
            session_regenerate_id();
            $_SESSION['user_id'] = $userid;
            self::$is_signed = true;
            return true;
        }
    }
}
$session = new Session;

логин. php

<?php

require 'class.php';
$session = new Session;
Session::onlogin(1);
var_dump(Session::is_signed_in());// output true

index. php

<?php declare(strict_types = 1);
require 'class.php';

var_dump(Session::is_signed_in());// output false

подумайте, что логин. php и index. php - это две отдельные программы, которые не знают друг о друге. Вот почему вы пытаетесь поместить туда SESSION, измените

    function __construct()
    {
        session_start();
        if (isset($_SESSION['user_id'])){
            self::$is_signed = true;
        }
    }

и вы сделано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...