Forum Webscript.Ru

Программирование => PHP => Тема начата: kensay от 19 Мая 2003, 16:34:44

Название: Не понял (сессии)
Отправлено: kensay от 19 Мая 2003, 16:34:44
На http://www.php.spb.ru прочитал статью про сессии. Там был пример:
default.php:
   unset($s);
   session_start();
   session_register("s");
?>
index.php:
   include("default.php");
   if (!isset($s[\'start\'])) {
      $s[\'start\']=time();
      echo "Добро пожаловать на наш сайт!";
   }
   else {
      echo "Вы впервые пришли на наш сайт ".(time()-$s[\'start\'])." секунд назад";
   }
?>
В первый раз заходишь-пишет "Добро пожаловать", второй раз-пишет время с моменьа первого посещения. У меня же в всегда пишет "Добро пожаловать". Где может быть ошибка? Может настройки сессии в php.ini?
Заранее благодарен.
Название: Не понял (сессии)
Отправлено: FILA от 19 Мая 2003, 16:55:05
kensay
не знаю, у меня работает, что естественно....

может, у тебя авто старт сессии в тру стоит, хотя я в этом не большой специалист?
Название: Не понял (сессии)
Отправлено: kensay от 19 Мая 2003, 18:22:21
Возможно у меня не считывается сессия, пишет варнинг:
Warning: session_start() [function.session-start]: open(/tmp\\sess_f578ccd4ecc166b831d200c08efc54a0, O_RDWR) failed: No such file or directory (2) in F:\\internet\\www\\test_php\\default.php on line 3

Как настроить?
Название: Не понял (сессии)
Отправлено: ThE0ReTiC от 19 Мая 2003, 18:46:25
kensay
гы :)
дедушкины грабли
в php.ini пропиши параметр session.save_path до существующей директории...
Название: Не понял (сессии)
Отправлено: kensay от 19 Мая 2003, 21:16:48
спасибо, что помог непутевому :)
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 01:37:45
Впзник еще вопрос. Как передать на другую страницу параметры сессии, чтобы в ней менять их?
Пример, 2 файла:
index.php:
   unset($s);
   session_start();  
   define ("SIDFORM","");
   session_register("s");
   if (!isset($s[\'nick\'])) {      
      echo "Добро пожаловать на наш сайт!";      
   }
   else {
      echo "Hello, ".$s[\'nick\']."!";
   }
 
?>

!!!!!!!








login.php:
if (!$nickname){
   $s[\'nick\']=$nickname;
}
header("Location: index.php");
?>

В login.pnp значение не изменяется, вроде даже и не получает. Как правильно сделать?
Название: Не понял (сессии)
Отправлено: Макс от 20 Мая 2003, 02:03:49
не проверял, вроде так :
session_start();
if ($nickname){
$s[\'nick\']=$nickname;
}
header("Location: index.php?".SID);
?>
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 08:30:04
Макс, спасибо, еще одну ошибку заметил:
if (!$nickname){
$s[\'nick\']=$nickname;
}
:)
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 10:08:54
Хочу добить тему и наконец разобраться.
Все выше снаписанное работало у меня дома.
Перетащил на работу и тут пошли глюки.
теперь идентификатор появляется при каждом запуске session_start() и таким образом не получается обращаться к одной сессии.
"дедушкины грабли" на работе исправил(в php.ini прописал параметр session.save_path до существующей директории. в ней и образуются несколько файлов, хотя нужен один)

Как правильно сделать?
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 13:01:49
Из дома приащил php.ini
Все равно делает несколько фаилов.
Неужели никто с таким не встречался? :(
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 20 Мая 2003, 13:14:19
никто не сталкивался.
потому, что ты какой-то фигней страдаешь
SIDFORM какой-то придумал....

Ты можешь написать ПРОСТО:

session_start();
if (!isset($_SESSION[\'counter\'])) $_SESSION[\'counter\']=0;
echo "Вы обновили эту страницу ".$_SESSION[\'counter\']++."
раз.
обновить";
?>


Это у тебя работает?
Если не работает - виноваты настройки сессий. Хотя это вряд ли.

Если работает - то значит ты намудрил в своем коде.
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 20 Мая 2003, 13:23:56
попробуй почитать вот это про сессии.
http://phpclub.net/talk/showthread.php?s=&threadid=32270

Может, поможет.
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 13:31:34
RomikChef , спасибо за столь откровенное обьяснение. Все заработало :).

При закрытии браузера, сессии удаляются, а необходимо, что бы в другой раз сервер вспоминал посетителя. Как я понял, надо использовать куки? А если куки отключены, то посетителю придется опять логиниться?
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 20 Мая 2003, 13:39:30
конечно.
так устроен, к примеру, этот форум.
Название: Не понял (сессии)
Отправлено: kensay от 20 Мая 2003, 13:52:22
СПАСИБО!
Название: Не понял (сессии)
Отправлено: D13@ от 21 Мая 2003, 21:18:13
А можно сделать чтоб сессия хранилась после закрытия окна браузера???
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 21 Мая 2003, 21:40:03
Можно, но не нужно.
Это неправильно.
Название: Не понял (сессии)
Отправлено: kensay от 21 Мая 2003, 21:42:00
Нет, но можно испльзовать куки.
например:
setcookie("player", $s[\'nick\'], time()+36000);
setcookie("player_email", $s[\'email\'], time()+36000);

После повторного вхождения проверяй на наличие $player и $player_email.
У меня так работает.
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 21 Мая 2003, 21:43:18
у тебя не сервер бо бо, а голова бо бо.

а если у меня следующая сессия будет с другого компьютера?

а если после того, как я поработал, сидя в интернет-кафе, кто-то зашел после меня и влез в мою сессию?

Как же я задолбался объяснять примитивные ыещи, которые любой может сообразить, если только даст себе труд немного подумать, а не приставать ко всем - расскажите! Покажите!
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 21 Мая 2003, 21:49:39
Цитировать
Можно, но не нужно.

причем можно относится к случаю, когда куки работают.
когда они не работают ответ - нельзя.
Название: Не понял (сессии)
Отправлено: D13@ от 21 Мая 2003, 22:49:10
RomikChef
А ты уверен что мне это нужно для интернета!!!
С головой у меня всё вопядке, не нравиться пост не пости тогда!
Название: Не понял (сессии)
Отправлено: Меняздесьдавнонет от 22 Мая 2003, 09:20:59
Да хоть для чего.
Сессия - это пока не закрыли браузер.
Ну я тебе два примера привел - могу еще тыщу привести.
Дело не в примерах.

Ну я же объяснил прямо перед тобой, кенсаю - как делается, чтобы юзера запоминало между сессиями.

Впрочем, с какой стсти мне тебя уговаривать.
Делай как хочешь - хоть трусы на голову надевай.
потом у тебя начнутся проблемы, которых ты сейчас, из-за своего микроскопического кругозора не видишь.