Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) сесси - почему-то не работает после первого захода / 12 сообщений из 12, страница 1 из 1
28.12.2005, 16:52
    #33462619
Olyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
Всем день добрый,
Прошу прощения за набившие должно быть оскомину простые вопросы про сессии. Но я пытаюсь их освоить и пока не могу понять, почему у меня не работает :/
Читала про сесси, что нашла на форуме, в книге, на phpfaq.ru и php.net, у меня ощущение, что я чего-то в них все-таки не понимаю :( или клин в голове какой-то...
Вот написала простой пробный скрипт на авторизацию
главная страничка oko_main.php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?php
// если был введен логин и пароль, тогда стартуем сессию
// и проверям наличие $valid_user. Если $valid_user не проканал
// говорим, что нет и опять на логин, если да, то выдаем $valid_user
if ($login && $psw)
{
  session_start();
    if (session_is_registered("valid_user"))
      echo $valid_user;
    else
    {
      echo "NO RESULT<br>";
      include "includes/connect.php";
    }
}
// если логина с паролем нет совсем, то просим залогиниться
// и отправляем на регистрацию
else
{
    echo "PLEASE LOG IN<br>";
    include "includes/connect.php";
}
?>

собственно страница connect.php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<?php
//если логин и пароль есть и не пустые
if (($psw and $psw<>"") && ($login and $login<>""))
{
// соединяемся с базой
$connect=mysql_connect ('localhost','oko');
if (!$connect)
	echo "Невозможно соединиться с базой";
// если соединение успешное...
else
{
    $db=mysql_select_db('oko');
    $query="select id_worker from workers where login='".$login."' and psw='".$psw."'";
    $result = mysql_query($query);
    $row=mysql_fetch_array($result);
// если такой пользователь есть, то создаем сессию, регистрируем его ИД
	  if (mysql_num_rows($result)> 0 )
	  {
                 session_start();
	    $valid_user = $row["id_worker"];
	    session_register("valid_user");
	  }
// в противном случае выдаем сообщение и отправляем на повторную авторизацию
      else
      {
      echo "Вы не прошли авторизацию";
      echo "<form action=oko_main.php method=post> 
      login<input name=login type=text><br>
      password<input name=psw type=password><br>
      <input type=submit value='LOG IN'>
      </form>";
      }
    }

}
// если логина с паролем нет или они пустые, то предлагаем форму для логина с паролем
else
{
      echo "<form action=oko_main.php method=post> 
      login<input name=login type=text><br>
      password<input name=psw type=password><br>
      <input type=submit value='LOG IN'>
      </form>";
}
?>

проблема в том, что если я ввожу верные логин и пароль, то у меня выдается сообщение NO RESULT и все... больше ничего нет. Если эту же страницу обновить, то нормально пишется значение valid_user
Такое ощущение, что в первый раз он не видит, что сессия создана и в ней зарегистрировано значение...
Кто может указать на ошибку - буду очень признательна
...
Рейтинг: 0 / 0
28.12.2005, 16:59
    #33462637
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
Напишите var_dump($_SESSION) сразу после session_start(); и будет гораздо понятней, почему так происходит.
...
Рейтинг: 0 / 0
28.12.2005, 17:11
    #33462702
Olyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
угу, получается, что не пишется в массив $_SESSION переменная, то что я и предполагала
а почему не пишется? ведь сессионный файл создается в нем все есть...
...
Рейтинг: 0 / 0
29.12.2005, 12:14
    #33463955
Savage_Alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
К сожалению не вижу всего кода на странице, но исходя из вышеперечисленного могу посоветовать следующее:
1. session_start() лучше ставить всегда в самом начале скрипта до выполнения каких-либо действий, иначе если до вызова этой функции браузер отсылает какие-либо даные на сервер, то далее session_start() не возымеет никакого действия, поскольку данные на сервер уже будут посланы (сессия не запуститься) - судя по действию скрипта такое происходит и сессия реально стартует только при повторной перезагрузке

2. session_start() лучше ставить в начале выполнения любого скрипта - не проблема если эта функция будет повторяться даже если сессия уже стартанула - в таком случае сервер проверит, если сессия существует - запускаться она не будет (только нужно быть осторожным, чтобы избежать проблемы, описанной в п.1. - особенно если скрипты подключаются в ыже выполняемый).

Может немножко сумбурно объяснил, главное - session_start() - ставь в самом начале (в данном случае oko_main.php) а уж потом регистрируй столько переменных, сколько тебе захочется :)


-- мы едем, едем, едем.... ---
...
Рейтинг: 0 / 0
29.12.2005, 12:27
    #33464015
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
автор главное - session_start() - ставь в самом начале
Это не главное. Главное - понять, как работают сессии. Понять и вызывать session_start() там, где это нужно, а не устраивать демографические взрывы сессий.

P.S. Ответьете себе на вопрос: "Зачем нужно вызывать сессию тому, кому она не нужна?"
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
29.12.2005, 12:39
    #33464060
Savage_Alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
Человек только учится ими пользоваться
Для того чтобы грамотно использовать сессии - нужно соответственно и грамотно строить скрипт, чтобы не возникало ситуаций, которые я описал выше.
Все мы начинало с малого, а опыт приходит со временем.
-- мы едем, едем, едем.... ---
...
Рейтинг: 0 / 0
03.01.2006, 10:22
    #33467211
Olyk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
Всем спасибо за отклики и советы.
Моя проблема была в логике - подправила, пока все работает :)

С Новым Годом!
...
Рейтинг: 0 / 0
10.01.2006, 08:43
    #33473307
kutsanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
Эта проблема не твоя а ХОСТЕРОВ.
у меня такой же глюк был...
ну и есть пока.... сейчас решаю переход на новый Хостинг.
love.nskport.ru - глючит
tmp.harbinsib.ru - не глючит
хотя код абсолютно одинаковый.
...
Рейтинг: 0 / 0
10.01.2006, 09:42
    #33473418
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
kutsanovЭта проблема не твоя а ХОСТЕРОВ.До чего народ пошёл "умный". Разберитесь вначале, как вообще сессии работают, а потом валите на хостеров.
PHP FAQ: Сессии. Подробное описание работы и объяснение механизма.
И не надо косить на хостеров, если сессии настроить не смогли нужным ВАМ образом - хостер не может под каждого клиента подстраиваться, тем более, когда клиент свою проблему может решить самостоятельной настройкой.
...
Рейтинг: 0 / 0
23.01.2006, 07:51
    #33496393
kutsanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
да я достаточно знаю о сессиях
я тебе говорю
щас хостинг сменил
код оставил преждний
все работает
на старом не работал
вообще у USERS.ru много чего глючит - не советую с ними работать.
.....
...
Рейтинг: 0 / 0
23.01.2006, 09:17
    #33496469
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
kutsanovда я достаточно знаю о сессияхКак то вот это вот утверждение не сочитается со следующимщас хостинг сменил
код оставил преждний
все работает
на старом не работалЕсли бы вы достаточно знали о сессиях - вы бы разобрались в причинах и озвучили бы их. А "сменил хостинг" - это не разобрался в причинах, это засунул голову в песок.
...
Рейтинг: 0 / 0
23.01.2006, 09:18
    #33496470
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) сесси - почему-то не работает после первого захода
*соч и таетсясовсем безграмотным стал :(
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) сесси - почему-то не работает после первого захода / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]