Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IdHTTP работа с сессиями [D7]


Страницы:   1 2

aka ©   (2013-10-16 14:09:00) 

Добрый день. Есть клиентское приложение на Delphi, которое работает через IdHTTP с PHP скриптами. Каким образом можно узнать если истекло время сеанса.

Я меня пока одна идея - это сознать отдельный скрипт который будет печатать что нибудь из сессионной переменной и если сессия истекла, то не получаю ничего на выходе


Ega23   (2013-10-17 11:34:00) [1]


> потому что будучи в состоянии суперпозиции и кот и сессия
> одновременно и живы и мертвы.


Браво!  :)))


Медвешонок Порошок   (2013-10-17 11:30:00) [2]

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


Плохиш   (2013-10-17 10:59:00) [3]


> Если к  нему периодически обращаться, то рано или поздно
> мы получим ошибку.

Наши банки при каждом обращении перезапускают таймер ;-)


DVM   (2013-10-16 22:39:00) [4]


> Имеется ввиду то, что сервер сам ничего сообщать о просроченной
> сессия не будет

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


DVM   (2013-10-16 22:35:00) [5]


> aka   (16.10.13 14:09) 
> Добрый день. Есть клиентское приложение на Delphi, которое
> работает через IdHTTP с PHP скриптами. Каким образом можно
> узнать если истекло время сеанса.

Клиент обратится, пошлет свой номер сессии, как уже сказали, сервер его и отключит, если сессия устарела, клиент об этом и узнает. Ты хочешь на клиенте понять, что сессия устарела без обращения к серверу?


aka   (2013-10-16 20:16:00) [6]

>>Медвешонок Порошок   (16.10.13 19:32) [15]
Не буду я не с кем спорить, может и я чего то не до понял.    

>>Плохиш ©   (16.10.13 18:54) [13]
Может тебя заказать с выездом? Сколько стоить будет?


Медвешонок Порошок   (2013-10-16 19:32:00) [7]

протухла ли сессия знает только сервер (пхп) и по куке ( без опроса сервера) это никак не понять.

но мы же не читаем.
мы же сами афигеть умные.

"мы уже сделали по другому"


Медвешонок Порошок   (2013-10-16 19:29:00) [8]

Не нужно ничего вычислять, угадывать и тем более спрашивать длительность

А вот это вот по твоему не спрашивание?

if(IdHTTP.Post(HOST + 'sessid.php',s) = '0') then

пипец какой мудрый.
послал запрос на сервер и сервер ему дал ответ.


Плохиш   (2013-10-16 18:54:00) [9]


> aka   (16.10.13 18:19) [12]

То есть, вам позволено изменять скрипты на сервере и задаёте вопросы [0]?
Стоит озаботиться поисками программиста.


aka   (2013-10-16 18:19:00) [10]

>>Медвешонок Порошок   (16.10.13 18:03) [11]
Не нужно ничего вычислять, угадывать и тем более спрашивать длительность
<?php
 session_start();
 if($_SESSION['admin'] == 'on') {
   echo "1";
 } else {
   echo "0";
 }
?>


if(IdHTTP.Post(HOST + 'sessid.php',s) = '0') then
begin
   ShowMessage('Authorization has expired, please log in again');
   Exit;
 end;


Медвешонок Порошок   (2013-10-16 18:03:00) [11]

а по другому не будет работать.

для вычисления на клиенте факта живости сессии нужно знать настройку пхп.
если ее не знать, получится не вычисление, а гадание.

длительность сессии знает только сервер.
и ее можно либо угадать наблюдая как со временем протухает сессия, либо спросить у сервера эту длительность.


aka   (2013-10-16 17:54:00) [12]

>> Медвешонок Порошок   (16.10.13 17:47) [9]
Спасибо, но я уже сделал по другому


Медвешонок Порошок   (2013-10-16 17:47:00) [13]

Он же не пропадет автоматом, если я пойду пить чай.

1. запомни время входа
2. попроси сервер сделать тебе phpinfo();
4. посмотри какой у него expired
3. вычисли когда протухнет сессия.

теперь стало понятно, что заморочился ты дурным вопросом?


aka   (2013-10-16 17:42:00) [14]

Что перевести?
Можно вместо файлового хранения сессий использовать БД


Ega23   (2013-10-16 17:39:00) [15]


> И более для больших продуктов можно переопределить не посредственно
> в коде хранилище сессий (обычно это обычные файлы в определенной
> папке сервера) на БД. Это: 1) более надежно 2) намного увеличивает
> производительность


Переведи.


aka   (2013-10-16 17:20:00) [16]

>> Более того, на сервере может быть задействован свой механизм сессий.

И более для больших продуктов можно переопределить не посредственно в коде хранилище сессий (обычно это обычные файлы в определенной папке сервера) на БД. Это: 1) более надежно 2) намного увеличивает производительность


Медвешонок Порошок   (2013-10-16 16:56:00) [17]

н же не пропадет автоматом, если я пойду пить чай.

ну епстественно.
протухла ли сессия знает только сервер (пхп) и по куке (без опроса сервера) это никак не понять.


aka   (2013-10-16 15:22:00) [18]

DVM ©   (16.10.13 14:31) [1]
куки

Это совсем не том. В куках как было: PHPSESSID=695c68485a188119f623e50087880c62; path=/; domain=10.15.168.253
так и осталось.

А на сервере сессия уже и истекла. Это я если только перелогинюсь, то у меня обновится PHPSESSID.


Ega23   (2013-10-16 15:11:00) [19]


> Каким образом можно узнать если истекло время сеанса.


Только послав туда что-то с текущим SessionID. Сессионный таймаут - настраиваемая величина на сервере, для PHP default, ЕМНИП, 24 минуты.
Но это может быть изменено. Более того, на сервере может быть задействован свой механизм сессий.


aka   (2013-10-16 15:06:00) [20]

Вот и все информация с кука

PHPSESSID=695c68485a188119f623e50087880c62; path=/; domain=10.15.168.253

Он же не пропадет автоматом, если я пойду пить чай.
Имеется ввиду то, что сервер сам ничего сообщать о просроченной сессия не будет


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо