Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: авторизация и регистрация на php с сессиями (без mysql)
 
 автор: schiz   (19.11.2014 в 19:40)   письмо автору
 
 

помогите пожалуйста реализовать систему авторизации на сессиях из файла.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 ?>

  Ответить  
 
 автор: Tonik992   (19.11.2014 в 22:33)   письмо автору
 
   для: schiz   (19.11.2014 в 19:40)
 

Я так понял проблема в том, что вы не можете вытащить данные из файла?

  Ответить  
 
 автор: schiz   (20.11.2014 в 17:49)   письмо автору
 
   для: 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']; 

  Ответить  
 
 автор: Tonik992   (23.11.2014 в 23:06)   письмо автору
 
   для: schiz   (20.11.2014 в 17:49)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования