|
|
|
| помогите пожалуйста реализовать систему авторизации на сессиях из файла.txt/dat с разделением прав доступа
структура файла, например
id|login|password|role
1|Login1|password|1
2|Login2|pass|2
3|Login3|123456|11
есть класс авторизации, но как его преобразовать, чтобы данные брались из файла, а не были указаны в самом классе и как ограничить доступ к определенным страницам юзерам с определенной ролью, никак не пойму..
<?php
session_start(); //Запускаем сессии
/**
* Класс для авторизации
*/
class AuthClass {
private $_login = "Ksenia"; //Устанавливаем логин
private $_password = "123456"; //Устанавливаем пароль
/**
* Проверяет, авторизован пользователь или нет
* Возвращает true если авторизован, иначе false
*/
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"); //Редирект после выхода
}
}
?>
<?php
session_start();
if ($auth->isAuth()) { // Если пользователь авторизован, приветствуем:
echo "Здравствуйте, " . $auth->getLogin() ;
echo "<br/><br/><a href=\"?is_exit=1\">Выйти</a>"; //Показываем кнопку выхода
}
else { //Если не авторизован, показываем форму ввода логина и пароля
?>
<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>
<?php } ?>
|
| |
|
|
|
|
|
|
|
для: schiz
(19.11.2014 в 19:40)
| | Я так понял проблема в том, что вы не можете вытащить данные из файла? | |
|
|
|
|
|
|
|
для: Tonik992
(19.11.2014 в 22:33)
| | >Я так понял проблема в том, что вы не можете вытащить данные из файла?
отдельно знаю, как вытаскивать, а вот как склеить их вместе, что-то не разберусь..
вот пример чтения из файла
if(isset($_POST['login']) and isset($_POST['password'])) {
$line = file('users.txt');
$c = sizeof($line);
for($i = 0; $i < $c; $i++) {
$ex = explode('|', trim($line[$i]));
if(($ex[1] == $_POST['login']) and ($ex[2] == md5($_POST['password'])) and ($ex[3] <= PAGE_ACCESS_LEVEL)) {
$member = $ex;
$_SESSION['member'];
|
| |
|
|
|
|
|
|
|
для: schiz
(20.11.2014 в 17:49)
| | Да можно сначала циклом пробежаться по файлу, скомпоновать массив с пользователями и ролями, а потом с этими данными работать.. Проще будет | |
|
|
|