powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Установить куки on submit
16 сообщений из 16, страница 1 из 1
Установить куки on submit
    #38181258
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На одной из форм нужно сохранять значение между сессиями, для этого пытаюсь сохранить куки.
1) В процесс "On submit - After computation and validation" вставил такой код
Код: plsql
1.
2.
3.
4.
5.
6.
7.
begin
  owa_util.mime_header('text/html', FALSE);
  owa_cookie.send(
    name => 'PLAN_ITMG',
    value => :P3000_ITMG,
    expires => sysdate+30);
end;


В процесс "On Load - Before header"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare 
  l_cookie owa_cookie.cookie;
begin         
  l_cookie := owa_cookie.get('PLAN_ITMG');
  if l_cookie.num_vals > 0 and :P3000_ITMG is null then
    :P3000_ITMG := l_cookie.vals(1);
  end if;
end;


По идее куки должен прочитаться, но не читается, не пойму я не правильно его записываю или неправильно читаю.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183137
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CasufiПо идее куки должен прочитаться

Дальше продолжается фаза обработки (aka Page Processing), за которой идёт фаза отрисовки (aka Page Rendering). И последняя затирает всё, что Вы напихали в буфер HTP, когда начинает рисовать страницу. Иначе бы браузер получал два ответа на один запрос.

Если хотите отсылать печеньку на стадии обработки в процессе After Submit, то придётся прерывать обработку и принудительно перенаправлять на нужную страницу:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
  owa_util.mime_header('text/html', FALSE);
  owa_cookie.send(
    name => 'PLAN_ITMG',
    value => :P3000_ITMG,
    expires => sysdate+30);
  
  apex_util.redirect_url('f?p=&APP_ID.:'|| <Номер или псевдоним нужной страницы> ||':&SESSION.', false); 
end;
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183174
Cepega88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще посмотреть установились ли куки можно почти в любом браузере(в хроме например ПКМ-> просмотр кода элемента -> закладка Resources -> выбираете Cookie вашего домена и смотрите список установленных).


При чтении значения у вас какоето странно изменение перенной item. может посмотреть в сторону
Код: plsql
1.
APEX_UTIL.SET_SESSION_STATE('P1_ID', 0);
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183543
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerто придётся прерывать обработку и принудительно перенаправлять на нужную страницу
Перенаправление не подходит, по ходу придется устанавливать куки при помощи javascript.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183551
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cepega88При чтении значения у вас какоето странно изменение перенной item.
Зачем ? Это не ондеманд процесс, такое присвоение прекрасно работает.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183835
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера пол дня пытался ответить на эту тему, форум не давал :)

Вообще перед вызовом owa_util.mime_header лучше всегда вызывать htp.init; т.к. если перед этим заголовки уже начали формироваться (недокументировано), то результат станет инвалидным.

В данном случае судя по всему htp.init; вызывается на уровне формирования branch, поэтому owa_util и owa_cookie затираются.

CasufisuPPLerто придётся прерывать обработку и принудительно перенаправлять на нужную страницу
Перенаправление не подходит, по ходу придется устанавливать куки при помощи javascript.

Почему, branch ровно тоже самое что и

APEX_UTIL.REDIRECT_URL + apex_application.stop_apex_engine
...
Рейтинг: 0 / 0
Установить куки on submit
    #38183841
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

на всякий случай: apex.storage . Надеюсь, в следующей версии туда API и для Local Storage добавят.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184338
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevПочему, branch ровно тоже самое что и

APEX_UTIL.REDIRECT_URL + apex_application.stop_apex_engine

Нет. Начнём с того, что в APEX_UTIL.redirect_url уже вызывается APEX_APPLICATION.stop_apex_engine. Поэтому дополнительный вызов всё равно не выполнится.

Далее, переходы (Branches) бывают разные. Переходы к URL (явно указанному, содержащемуся в поле, возвращаемому функцией) действительно вызывают в итоге APEX_UTIL.redirect_url. А вот переходы к странице (явно указанной, в поле, из функции) вызывают APEX_APPLICATION.show.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184472
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerAPEX_UTIL.redirect_url уже вызывается APEX_APPLICATION.stop_apex_engine. Поэтому дополнительный вызов всё равно не выполнится.
Собственно да, это легко увидеть если посмотреть описание функции, важен сам принцип

suPPLerА вот переходы к странице (явно указанной, в поле, из функции) вызывают APEX_APPLICATION.show.
Действительно, некоторые переходы работают немного не так.
В основном используется общий Branch to Page or URL, который вызывает всегда redirect в обоих случаях.
Прямой вызов APEX_APPLICATION.show ничего принципиального не меняет, да и, собственно, лишний редирект в любом случае не помешает.

Это все скорее мелочи, которые можно не упоминать, единственное исключение - Branch to Page Accept Processing, который работает действительно по существенно другому принципу, полезная штука, которую я так ни разу и не использовал (голова не так работает, строю на автомате архитектуру запросов по стандартному принципу)
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184499
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevПрямой вызов APEX_APPLICATION.show ничего принципиального не меняет
Оговорочка, в этом случае скорее всего не будет создаваться новая oracle-сессия и не будет происходить сброс переменных пакетов соответственно, но на это в любом случае рассчитывать нельзя, т.к. в большинстве случаев реализовано именно через redirect и поведение может измениться.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184523
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevВ основном используется общий Branch to Page or URL, который вызывает всегда redirect в обоих случаях.
Нет. Там тоже есть условное выполнение в зависимости от того, выбран ли URL или Page.

SvDevв большинстве случаев реализовано именно через redirect
В большинстве нестандартных случаев:
- сабмит с переходом на вкладку (Tab);
- сабмит с отсутствием переходов;
- сабмит с переходом на URL (не так часто встречается);
- успешная аутентификация с redirect_url;
- недействительная аутентификация с redirect_url;
- ошибки при Processing/Rendering;

И в таком духе. Мне кажется, всё это происходит в приложениях реже, чем сабмит с переходом на страницу или просто переход на страницу.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184565
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerSvDevВ основном используется общий Branch to Page or URL, который вызывает всегда redirect в обоих случаях.
Нет. Там тоже есть условное выполнение в зависимости от того, выбран ли URL или Page.

SvDevв большинстве случаев реализовано именно через redirect
В большинстве нестандартных случаев:
- сабмит с переходом на вкладку (Tab);
- сабмит с отсутствием переходов;
- сабмит с переходом на URL (не так часто встречается);
- успешная аутентификация с redirect_url;
- недействительная аутентификация с redirect_url;
- ошибки при Processing/Rendering;

И в таком духе. Мне кажется, всё это происходит в приложениях реже, чем сабмит с переходом на страницу или просто переход на страницу.

Прошу считать бредом в рамках ангины. SvDev , Вы правы, перенаправление и последующий GET-запрос для переходов на страницу можно легко увидеть в FireBug. Исключение -- для перехода явно указано не выполнять redirect. Кстати, потом этот выбор через интерфейс не отменить. По крайней мере, в 4.2.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38184578
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerИсключение -- для перехода явно указано не выполнять redirect.

Однако, автора темы это не спасёт: куки вернутся с ответом сервера на POST, но все связанные со страницей серверные компоненты (процессы, вычисления, валидации и т.д.) увидят их только при следующем обращении к серверу. То есть, придётся дважды загружать страницу.

В этом отношении redirect или JS выигрывают. Но JS выполняется на клиенте, что означает возможность подмены печеньки.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38188092
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevПочему, branch ровно тоже самое что и APEX_UTIL.REDIRECT_URL + apex_application.stop_apex_engine
Вообще проблему я решил устанавливая куки при помощи яваскрипта. Но вот это утверждение меня заинтересовало. Мне редирект не подошел потому, что редирект это не сабмит и он не запоминает изменения, которые я внес на форме между отрисовкой и редиректом. Исходя из вашего утверждения, если я делаю бранч, то изменения на форме тоже должны теряться, но в жизни это не так, сначала происходит сабмит, а потом уже ридерект на страницу, указанную в бранче с указанными там же параметрами.
...
Рейтинг: 0 / 0
Установить куки on submit
    #38188132
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

Submit отправляет данные формы, далее срабатывает Page Processing, далее branch формирует ответ - как правило redirect, например, на ту же страницу. Браузер это дело обрабатывает, запрашивает новую страницу и начинается новая фаза page rendering.

Тоже самое без проблем реализуется, чуть пораньше, только вместо branch - APEX_UTIL.REDIRECT_URL в роли branch. При этом вы контролируете все заголовки (htp.init - до, stop_apex_engine - после, что поможет вам избежать ошибок)
...
Рейтинг: 0 / 0
Установить куки on submit
    #38188467
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev...Тоже самое без проблем реализуется, чуть пораньше, только вместо branch - APEX_UTIL.REDIRECT_URL в роли branch...

Спасибо, я просто не подумал, что Page Processing успеет выполниться
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Установить куки on submit
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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