Не получается подкрепить сессии на сайт. на слд странице удаляется

249
05 августа 2017, 05:23

Не получается добавить сессию или кукисы на свой сайт. При переходе на следующую страницу сессия стирается, то бишь сделав простую проверку на

if( $_SESSION['login'] == true)
{echo 'Привет, ' . $_SESSION['login'] . '!';}
else {echo 'Привет, Гость!';}

выходит так, что сессия не передаёт ничего и она всегда в состоянии true.

вот сам исходник :

<? 
    $cur_page = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    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\'>
        </form>'
        );
    }
  if(!empty($_POST))
    {
    if($_POST['login'] ==  "max")
        {
            if($_POST['password'] ==  "123")
            {
                     echo "Залогинен";
                     $_SESSION['login'] = $_POST['login'];
            }else {echo("Неправильный пароль.<a href='".$cur_page."'>Вернуться.</a>");} 
        }else {echo("Пользователь с таким именем не зарегистрирован<a href='#'>Вернуться.</a>");}

    }
    if (isset($_POST['session_out'])) 
    {
        unset($_SESSION["login"]);
        session_destroy();
    }
?> 

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

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

если есть кто знает эту тему, очень нужно связаться, т.к. ничего толком не помогает. спасибо!

Answer 1

итак, отвечу на свой же вопрос , промучившись 4о суток.

<?
session_start();
require ("hide/auth.php");
if( $_SESSION['login'])
    {
        echo '</br>Привет, ' . $_SESSION['login'] . '!</br>';
        echo "<a href='#'>На следующую страницу</a>";
        echo $cur_page."\n\n";
    }
else
    {
        echo 'Привет, Гость!';
        AuthForm();
        echo "</br>".$cur_page;
    }
?>

сделав обычную проверку на

if( $_SESSION['login'])

всё завелось. вот исходник auth.php , не благодарите)))

<? 
    $main_page = 'http://'.$_SERVER['HTTP_HOST']."/";
    $cur_page = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $logout_page = 'http://'.$_SERVER['HTTP_HOST']."/logout.php";
    $filename = $main_page."hide/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\'>
        </form>'
        );
    }
  if(!empty($_POST))
    {
        $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++;
        }
        if(in_array($_POST['login'],$temp['login1']))
        {
            if(in_array($_POST['password'],$temp['password1']))
            {
                     echo "Залогинен";
                     $_SESSION['login'] = $_POST['login'];
            }else {echo("Неправильный пароль.<a href='".$cur_page."'>Вернуться.</a>");} 
        }else {echo("Пользователь с таким именем не зарегистрирован<a href='".$cur_page."'>Вернуться.</a>");}

    }
?> 

Данный исходник мой лично, и да, он без mySQL.

А, точно, вот ещё сама база данных .txt

max|:|123|:|user

Исходник полностью рабочий. Пользуйтесь.

Answer 2

Надо проверять наличие сессии, а не её значение:

if (isset ($_SESSION['login']))
READ ALSO
Как узнать откуда метод

Как узнать откуда метод

Незайтеливый вопрос про ООП, код упрощен для понимания

307
Кирилица в Get запросе curl

Кирилица в Get запросе curl

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

395
Google Shopping API parse (PHP)

Google Shopping API parse (PHP)

Доброго времени суток

236
Бесконечное выполнение PHP в Bash

Бесконечное выполнение PHP в Bash

Есть скрипт на Bash, запускающий PHP скрипт:

392