Не получается добавить SESSION/COOKIE на сайт

206
04 августа 2017, 02:19

Перепробовал кучу разной ерунды, но ни в какую не удаётся привязать кукисы или сессию к форме авторизации. притом моя авторизация довольна необычна. она без mySQL а полностью состоит из формы регистрации и авторазации. всё работает на 99% но никак не удаётся привязать это сохранение данных. вот сам код.

<? 
    $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))
    {
        echo ("Поля не заполнены.");
    }
    $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();
        }   

    if (isset($_POST['session_out'])) 
    {
        #unset($_SESSION["Username"]);
        #session_destroy();
        setcookie ( 'cookie', '', time()-5 );
    }
    $Cookie =  $login;
    setcookie('cookie',$Cookie,time() + (86400 * 5));
?> 

Вот сама форма авторазации. сам файл base.txt состоит из пары строк.

maksim|:|123|:|user
max|:|123|:|user

и больше ничего. форму регистрации нет смысла представлять так как всё работает и проверено. Но почему у меня ни в какую не хотят завестись кукисы\сессии. что сделано не так?

вот пример готовой страницы

<?
require ("auth.php");
if( $_COOKIE['cookie'] == $login )
    {
        echo 'Привет, ' . $_COOKIE['cookie'] . '!';
        echo "<a href='p2.php'>На следующую страницу</a>";
        echo('<form method=\"post\"><input type = \'submit\' name = \'session_out\' value = \'Выйти\'></form>');
    }
else
    {
        echo 'Привет, Гость!';
        AuthForm();
    }
?>
Answer 1

Попробуйте

setcookie('cookie',$Cookie,time() + (86400 * 5), '/');

Часто выручал такой "хук". Еще попробуйте записать в cookies для теста рандомное значение, но сделать запись в самом начале скрипта. Если сработает, придется переосмыслить запись. Не точно, но вроде как setcookie на уровне заголовков.

READ ALSO
Запись введенных данных в MySQL

Запись введенных данных в MySQL

ЗдравствуйтеУ меня есть таблица с товарами (test)

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

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

Вот код авторизацииДа, без mysql

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

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

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

333
Функция и INSERT INTO

Функция и INSERT INTO

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

209