Пользователь вошел в переменную с PHP - PullRequest
0 голосов
/ 06 февраля 2009

Я создал класс с именем Login с помощью конструкции, которая либо регистрирует их, либо нет ... У меня также есть статическая функция isAuthenticated, предназначенная для проверки, вошел ли пользователь в систему или нет .. Я возился со статическими функциями и т. Д., Но, похоже, не могу получить то, что хочу.

В идеале это было бы то место, куда я мог бы легко пойти

<?php if (Login::isAuthenticated()) { ?>
<a href="/sign-out/">Sign Out</a>
<?php } ?> 

Вот мой класс ... В комплекте с моими попытками ..

class Login
 {
    private static $_auth;

    public function __construct($username, $rawPassword) {

        global $db;

        require('edit/users/config.php');

        $hashedPassword = sha1(SALT . $_POST['password']);

        $query = 'SELECT firstname FROM users WHERE user = "' . $db->cleanString($username) . '" AND pass = "' . $db->cleanString($hashedPassword) . '" LIMIT 1';


        $login = $db->query($query);

        if ($login) {


            $_SESSION['username'] = $username;
            self::$_auth = true;



            header('Location: ' . CONFIG_DIR_BASE);


        } else {

            ErrorHandler::addErrorToStack('Your username and/or password did not match one on our system. ');

        }

    }



    public static function isAuthenticated() {



         return self::$_auth;


    }







 }

Большое спасибо!

1 Ответ

7 голосов
/ 06 февраля 2009

Поскольку HTTP не имеет состояния, статическая переменная вашего класса ($ _auth) не будет «выживать» между загрузками страниц, поэтому, если вы пытаетесь заставить переменную придерживаться, вам нужно будет сохранить ее как Переменная сеанса .

Однако я настоятельно рекомендую вам не написать свой собственный класс аутентификации, если вы не действительно серьезно относитесь к этому. Есть десятки отличных PHP-скриптов аутентификации, из которых уже решены все тонкости веб-аутентификации .

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