Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.09.14;
Скачать: CL | DM;

Вниз

IdHTTP работа с сессиями   Найти похожие ветки 

 
aka   (2013-10-16 14:09) [0]

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

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


 
DVM ©   (2013-10-16 14:31) [1]

куки


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

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

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

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


 
Ega23 ©   (2013-10-16 15:11) [3]


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


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


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

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

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

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


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

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

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


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

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

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


 
Ega23 ©   (2013-10-16 17:39) [7]


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


Переведи.


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

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


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

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

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

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


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

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


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

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

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

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


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

>>Медвешонок Порошок   (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:54) [13]


> aka   (16.10.13 18:19) [12]

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


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

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

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

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

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


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

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

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

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


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

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

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


 
DVM ©   (2013-10-16 22:35) [17]


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

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


 
DVM ©   (2013-10-16 22:39) [18]


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

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


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


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

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


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

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


 
Ega23 ©   (2013-10-17 11:34) [21]


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


Браво!  :)))



Страницы: 1 вся ветка

Текущий архив: 2014.09.14;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.005 c
15-1392064202
Юрий
2014-02-11 00:30
2014.09.14
С днем рождения ! 11 февраля 2014 вторник


2-1381158756
OlegSkal
2013-10-07 19:12
2014.09.14
XE5 Win32 Android Viewport3D Layer3D искажение размеров


11-1254087305
intlex
2009-09-28 01:35
2014.09.14
Creation Order (Порядок создания компонентов)


15-1391801247
Novicer
2014-02-07 23:27
2014.09.14
Работа программы в сетевом режиме


15-1391977802
Юрий
2014-02-10 00:30
2014.09.14
С днем рождения ! 10 февраля 2014 понедельник