Все ленты — последние статьи

Работа с сессиями. Создание простой авторизации на PHP

 Нашел самой простой вариант, код рабочий работет на одном файле, с сайта моего надо убирать лишние цифры, виднее из  его источник http://blog.ox2.ru/php/avtorizaciya-i-rabota-sessii/

 

При разработке интернет магазинов практически всегда требуется авторизация. Например, для входа в личный кабинет пользователя, или систему управления интернет-магазином.

Форма авторизации обычно состоит из двух текстовых полей (Логин и пароль) и кнопки Войти. Сейчас при создании в интернет-магазинах личного кабинета, набирает моду установка полей Телефон и Имя, или Имя и email, и другие комбинации. Но советуем так ни когда не делать, т.к. Имя можно написать по-разному, телефон тоже (84952322323 или 232-23-23).

PHP сессии

В этом уроке вы познакомитесь с правильной работой с сессиями на PHP.

Сессии нужны для сохранения определенной информации на стороне браузера. Практически тоже самое что и переменные, отличается только тем, что переменные при переходе на другую страницу сайта, или при обновлении текущей страницы теряют свои значения, а данные записанные в сессии сохраняются, и доступны на любых страницах сайта.

Например, на странице http://ox2.ru/index.php мы записали в сессию 'session_test' значение '123'. На странице http://ox2.ru/shop.php мы можем прочитать сессию session_test, и получить значение 123.

Для работы с сессиями на php нужно на каждой странице где будет производиться работа с сессиями написать session_start(), в самом начале, до вывода любой информации на экран.

Для записи в сессии существует переменная $_SESSION.

Например, простой пример:

Файл index.php будет запись в сессию:

1
2
3
4
<?php
session_start();
$_SESSION["test"] = "Сессия — тест";
?>

Файл session.php будет чтение сессии:

1
2
3
4
<?php
session_start();
echo $_SESSION['test']; //На экране будет 'Сессия — тест'
?>

Вот в этом простом примере показана работа с сессиями.

Создание авторизации на PHP

Сейчас мы создадим пример авторизации. Основную функцию будет выполнять класс AuthClass.

Вот код с пояснением:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
session_start(); //Запускаем сессии
 
/** 
 * Класс для авторизации
 * @author дизайн студия ox2.ru 
 */ 
class AuthClass {
    private $_login "demo"//Устанавливаем логин
    private $_password "www.ox2.ru"//Устанавливаем пароль
 
    /**
     * Проверяет, авторизован пользователь или нет
     * Возвращает true если авторизован, иначе false
     * @return boolean 
     */
    public function isAuth() {
        if (isset($_SESSION["is_auth"])) { //Если сессия существует
            return $_SESSION["is_auth"]; //Возвращаем значение переменной сессии is_auth (хранит true если авторизован, false если не авторизован)
        }
        else return false; //Пользователь не авторизован, т.к. переменная is_auth не создана
    }
     
    /**
     * Авторизация пользователя
     * @param string $login
     * @param string $passwors 
     */
    public function auth($login$passwors) {
        if ($login == $this->_login && $passwors == $this->_password) { //Если логин и пароль введены правильно
            $_SESSION["is_auth"] = true; //Делаем пользователя авторизованным
            $_SESSION["login"] = $login//Записываем в сессию логин пользователя
            return true;
        }
        else //Логин и пароль не подошел
            $_SESSION["is_auth"] = false;
            return false; 
        }
    }
     
    /**
     * Метод возвращает логин авторизованного пользователя 
     */
    public function getLogin() {
        if ($this->isAuth()) { //Если пользователь авторизован
            return $_SESSION["login"]; //Возвращаем логин, который записан в сессию
        }
    }
     
     
    public function out() {
        $_SESSION array(); //Очищаем сессию
        session_destroy(); //Уничтожаем
    }
}
 
$auth new AuthClass();
 
if (isset($_POST["login"]) && isset($_POST["password"])) { //Если логин и пароль были отправлены
    if (!$auth->auth($_POST["login"], $_POST["password"])) { //Если логин и пароль введен не правильно
        echo "<h2 style="color:red;">Логин и пароль введен не правильно!</h2>";
    }
}
 
if (isset($_GET["is_exit"])) { //Если нажата кнопка выхода
    if ($_GET["is_exit"] == 1) {
        $auth->out(); //Выходим
        header("Location: ?is_exit=0"); //Редирект после выхода
    }
}
 
?>
1
2
3
4
5
6
7
<?php
if ($auth->isAuth()) { // Если пользователь авторизован, приветствуем: 
    echo "Здравствуйте, " . $auth->getLogin() ;
    echo "<br/><br/><a href='?is_exit=1'>Выйти</a>"; //Показываем кнопку выхода
}
else { //Если не авторизован, показываем форму ввода логина и пароля
?>
1
2
3
4
5
6
7
<form method="post" action="">
    Логин: <input type="text" name="login"
    value="<?php echo (isset($_POST["login"])) ? $_POST["login"] : null; // Заполняем поле по умолчанию ?>" />
    <br/>
    Пароль: <input type="password" name="password" value="" /><br/>
    <input type="submit" value="Войти" />
</form>
1
2
<?php
}

Скачать исходник

Конечно это самый простой пример создание авторизации на php. Пароли и имена пользователей должны браться из базы данных, шифроваться в MD5, и т.д. Более сложные примеры создания авторизации будут в следующих статьях. 

Сессии очень полезны не только при разработке интернет-магазинов, но и при создании сайтов. 
Можно придумывать различные фишки, правда стоимость создания сайта может резко увеличиться. Но это того стоит, т.к. интересный и функциональный сайт привлечет к себе много клиентов и постоянных посетителей.

При разработке интернет магазинов практически всегда требуется авторизация. Например, для входа в личный кабинет пользователя, или систему управления интернет-магазином. Форма авторизации обычно состоит из двух текстовых полей (Логин и пароль) и кнопки Войти.

OX2 2014-10-05 2014-10-05