Форум: "Начинающим";
Текущий архив: 2014.09.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.002 c