Сессии Ведут Себя Очень Странно

Тема в разделе "PHP программирование", создана пользователем staromand, 8 мар 2012.

  1. staromand

    staromand New Member

    Регистрация:
    5 фев 2012
    Сообщения:
    0
    Симпатии:
    0
    в общем есть такой файл, который проверяет при загрузке страницы "index.php", залогинен ли пользователь

    этот файл включен в "index.php"
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"logincheck.php"</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
    <?php

    if (isset($_GET['out'])) {
    unset($_SESSION['login']);
    unset($_SESSION['id']);
    setcookie("login", "", 100);
    setcookie("id", "", 100);
    };
    if (!isset($_SESSION['login']) or !isset($_SESSION['id'])) {
    unset($const_logined);
    };
    if (empty($_SESSION['login']) or empty($_SESSION['id'])) {
    $const_logined = FALSE;
    } else {
    $const_logined = TRUE;
    };
    ?>
    а также есть файл, который проверяет при вводе логина с паролем валидность введенных данных и ищет по базе нужный "id"

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"login.php"</div></div><div class="sp-body"><div class="sp-content">
    Код (PHP):
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html" charset="windows-1251"/>
    <link rel="stylesheet" href="../style.css" type="text/css">
    <title>Добро пожаловать! - firstsite</title>
    </head>
    <body>
    <div id="ref">
    <?php
    session_start();

    if (isset($_POST['login'])) {
    $login = $_POST['login'];
    if ($login == '') {
    unset($login);
    };
    };

    if (isset($_POST['password'])) {
    $password=$_POST['password'];
    if ($password =='') {
    unset($password);
    };
    };

    if (empty($login) or empty($password)) {
    exit ("<div id=\"ref_err\">Вы ввели не всю информацию, вернитесь <a href='../index.php'>назад</a> и заполните все поля!</div>");
    };

    include ("dbase.php");

    $login = stripslashes($login);
    $login = mysql_escape_string($login);
    $login = htmlspecialchars($login);
    $login = trim($login);$password = stripslashes($password);
    $password = mysql_escape_string($password);
    $password = htmlspecialchars($password);
    $password = trim($password);
    $password = md5($password);
    $query = "
    SELECT `login`, `password`, `id`
    FROM `usersdb`
    WHERE `login` = '{$login}'
    "
    ;
    $result = mysql_query($query, $db);
    $myrow = mysql_fetch_assoc($result);
    if (empty($myrow['password'])) {
    exit ("<div id=\"ref_err\">Извините, введённое вами имя пользователя или пароль неверны. <a href='../index.php'>Главная страница</a></div>");
    } else {
    if ($myrow['password']==$password) {
    $_SESSION['login']=$myrow['login'];
    $_SESSION['id']=$myrow['id'];
    if(isset($_POST['savelogin'])) {
    //setcookie("login", $_SESSION['login'], time() + 60*60*24*30);
    //setcookie("id", $_SESSION['id'], time() + 60*60*24*30);
    };
    header('Refresh: 3; URL=../index.php');
    echo "<div id=\"ref_ok\">Вы вошли! Через 2 сек. вы будете перенаправлены на главную страницу.<br>Если Ваш браузер не поддерживает автоматическое перенаправление, перейдите по <a href=\"../index.php\">этой ссылке</a></div>";
    } else {
    exit ("<div id=\"ref_err\">Извините, введённый вами login или пароль неверный. <a href='../index.php'>Главная страница</a></div>");
    };
    };
    ?>
    </div>
    </body>
    </html>
    при входе шаблон входа сменяется с такого вида:
    Посмотреть вложение 4993
    на такой:
    Посмотреть вложение 4994

    это наглядный индикатор того, вошел или нет

    вопрос - почему, когда сразу вхожу он работает на ура, а как только уже под сессией прохожу по какой-либо странице внутри сайта форма ввода показывается (как будто не залогинен)? вся мистика в том, что когда ЕЩЁ РАЗ прохожу по любой ссылке формы нет и видно, что я вошел на протяжении всей сессии вплоть до выхода.
     

    Вложения:

    • 0.PNG
      0.PNG
      Размер файла:
      8,6 КБ
      Просмотров:
      38
    • 1.PNG
      1.PNG
      Размер файла:
      3,4 КБ
      Просмотров:
      42
  2. acorn

    acorn PHP Developer
    Web Team

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    зачем используется "or"????
     
  3. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    да и зачем там вообще 2 значения хранить, держите что-то одно, на худой конец сразу зафетченый ассоц
     
  4. staromand

    staromand New Member

    Регистрация:
    5 фев 2012
    Сообщения:
    0
    Симпатии:
    0
    спасибо за предложенную помошь
    уже не актуально, конечно, но будет полезно другим, столкнувшимся с подобной проблемой
    проблема была в кэшировании страниц
     
Загрузка...

Поделиться этой страницей