Как добавить SESSIONS в форму авторизации?

205
04 августа 2017, 02:16

Вот код авторизации. Да, без mysql. Да, ужасно, но всё же.

<? 
    $filename = ("base.txt");
    function AuthForm () 
    {
        echo ('<form method=\'post\'>
        <label>Логин: </label>
        <input type = \'text\' name = \'login\'><br />
        <label>Пароль: </label>
        <input type = \'password\' name = \'password\'><br />
        <input type = \'submit\' name = \'log\' value = \'Войти\'>
        </form>'
        );
    }
  if(empty($_POST))
    {
    }else
{
    $arr = file($filename);
    $i = 0;
    $temp = array();
    foreach($arr as $line)
    {
      $data = explode("|:|",$line);
      $temp['login1'][$i]     = $data[0];
      $temp['password1'][$i] = $data[1];
      $i++;
    }
    $login = $_POST['login'];
    $password = /*md5*/($_POST['password']);
    if(!in_array($login,$temp['login1']))
        {
            echo("Пользователь с таким именем не зарегистрирован. <a href='#'>Вернуться</a>");
            exit();
        }
    $index = array_search($login,$temp['login1']);
    if($password != $temp['password1'][$index])
        {
            echo("Неправильный пароль. <a href='#'>Вернуться</a>");
            exit();
        }
}
?> 

Вот сама авторизация на сайте:

<?
require ("auth.php");
AuthForm();
?>

Кто подключал уже себе эту ерунду, помогите, пожалуйста. Уже всё перепробовал.

Answer 1

Этот код должен быть в начале каждой страницы

<?php
session_start();
?>

В массив сессий вы можете занести данные присвоением значения новому елементу массива

$_SESSION['newEl'] = 'value';

В блоке кода куда Вас заводит submit формы сделайте после валидации логина запись в сессию скажем того-же логина.

if(!empty($_POST)){
//валидация 
//если проверки пройдены - заносите логин в сессию
    $_SESSION['login'] = $_POST['login'];
}

На остальных страницах при условии прописаного кода старта сессии у Вас должна вардампится эта переменная, по этому условию можете считать пользователя авторизированым и не выводить ему форму авторизации.

Подробнее о сессиях можете прочитать в документации. Там же описаны частые причины "слетания"сессии при редиректах по страницам.

READ ALSO
Перевести слово русского языка в другой падеж (PHP)

Перевести слово русского языка в другой падеж (PHP)

Есть слово в именительном падеже, единственном числеНужно перевести его в другой падеж и/или число

361
Функция и INSERT INTO

Функция и INSERT INTO

Не могу понять, почему рандомные данные которые я генерирую в функции мне не удается загрузить в БД через INSERT INTO

239
Невозможно работать с файлами в php7 на linux 16.10

Невозможно работать с файлами в php7 на linux 16.10

Суть проблемы: имеется скрипт, который должен добавлять в filetxt информацию, а если этот файл отсутствует, то создать его

280
Не могу реализовать поиск на сайте

Не могу реализовать поиск на сайте

При нажатии на поиск показывает:

251