powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Public page , запрет изменения url
15 сообщений из 15, страница 1 из 1
Public page , запрет изменения url
    #39972154
VladimirTr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите пожалуйста, как лучше решить задачу. Имеется таблица с адресами электронных почт получателей. Отправляется письмо получателю. Необходимо сделать кнопку отписки в письме. Планировал сделать ссылку на публичную страницу приложения из письма и передать в ней id записи в таблице и записать ее в item, далее запись из таблицы можно было бы удалить на публичной странице по id. Но перейдя по ссылке из письма не могу запретить изменение url, таким образом в item можно передать любой другой номер записи для удаления вручную. Подскажите , можно ли запретить изменение url у public page?

Так же была идея сгенерировать длинный id (типа dTHgWe14ugUulp53drKyigr31fgy) в таблице с адресами для каждой записи и записывать в item именно его, тогда подбор такого id для ручного изменения item в url кажется должен быть сложнее, имеет ли право на жизнь такой подход?

Подобный функционал планируется использовать в ещё одной процессе с подтверждением заказа например. Клиенту на почту приходит письмо с номером заказа и просьбой его подтвердить.
Нужна ссылка в письме, по которой клиент нажмёт и заказ поменяет статус, при этом не хотелось бы каждый раз входить в приложение с вводом логина и пароля.просто открываем public page там кнопка подтвердить в item записан номер заказа. Нажимаем и запускаем процесс. Но опять таки нужно заметить/запретить изменение url.

Подскажите, как правильно реализовать подобный функционал?
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39972180
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladimirTr,

Например подписать/зашифровать свой ID, передать его на public-страницу вместе с подписью и там проверить ее.
Или вообще через url не передавать, а сохранить этот id во внутренних переменных и брать его оттуда.
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39972198
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все работает
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39972275
VladimirTr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, всем ответившим!


blkangel,

Я генерирую ссылку без checksum
'<a href="http://хххх/'||
APEX_UTIL.PREPARE_URL(
p_url => 'f?p=' ||112|| ':69:::NO:RP,69:P69_NEW:5:')||'">Отписаться</a>'


отправляю ее в письме

При переходе по ссылке открывается URL , в item P69_NEW передается значение "5", но появляется сообщение об ошибке,
при этом в настройках страницы указаны такие же настройки, как у вас.
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39972402
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Логично, генерируйте ссылку верно, используйте функцию
https://docs.oracle.com/en/database/oracle/application-express/20.1/aeapi/GET_URL-Function.html#GUID-19A879A7-DA63-4519-B50F-DF20F652586E
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39972404
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И Deep linking = Enable должно быть
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39973093
VladimirTr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel,

Deep linking= enabled включен на уровне страницы.

Ссылку переделал на генерацию через vLink:='<a href="http://xxxxxxxxx/xxx/'||APEX_PAGE.GET_URL (
p_application => 112,
p_page => 69,
p_items => 'P69_NEW',
p_values => '5' )||'>Отписаться</a>'

получаю ту же ошибку.

Подскажите, что я делаю неправильно
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39975383
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где вы выполняете функцию, во време сессии Апекс?
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39975411
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ссылка получается с контрольной суммой?
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39977129
VladimirTr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Письмо генерируется jobом по расписанию, не из apex сессии, согласен нужно было конечно с этого начать.
Нет, контрольная сумма не генерируется, т.к. нет сессии apex, в этом как раз и загвоздка.
Была бы сессия - была бы контрольная сумма, с суммой все работает, но вот как быть если письмо сгенерировано не в apex?
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39977320
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте использовать пакет APEX_SESSION и процедуру CREATE_SESSION.
Расскажите, помогло ли.
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39977322
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Быстреннько набрасал тестовый код, у меня получилось
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39977324
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
set serveroutput on ;
declare 
    a       varchar2(512);
begin
    apex_session.create_session (
    p_app_id   => 1,
    p_page_id  => 1,
    p_username => 'XXXXXXXXXXXXXX' );
    sys.dbms_output.put_line (   'App is '||v('APP_ID')||', session is '||v('APP_SESSION'));
    
    a:=apex_page.GET_URL (
        p_application        => 1
        ,p_page               =>1
        ,p_items              => 'P1_XXXXXXXXXX'
        ,p_values             => 1
    );
    sys.dbms_output.put_line (   'url='|| a);
    apex_session.DELETE_SESSION (v('APP_SESSION'));
 end;
/
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39977745
VladimirTr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blkangel, огромное спасибо ! Работает !

работает и с вашей генерацией

vMSG:=vMSG||'<br/>'||'<a href="http://xxxxxxx.ru/yyyy/'||APEX_PAGE.GET_URL (
p_application => 103,
p_page => 121,
p_items => 'P121_NEW',
p_values => '5' )||'">ОТПИСАТЬСЯ</a>' ;

и с моей генерацией, с которой я начинал свои попытки. но только когда не используется p_checksum_type => 'SESSION'
с ним ( p_checksum_type => 'SESSION') , но при нажатии на ссылку открывается с другой сессией без checksum и без переданного значения в item.

vMSG:=vMSG||'<br/>'||'<a href="http://xxxxxxx.ru/yyyy/'||
APEX_UTIL.PREPARE_URL(p_url => 'f?p=103:121:'||v('APP_SESSION')||'::NO:RP,121:P121_NEW:5:'
/*, p_checksum_type => 'SESSION'*/
)||'">ОТПИСАТЬСЯ2</a>'||'.' ;



Правильно ли я понимаю, что мы создаем сессию, из этой сессии генерируем checksum отправляем письмо, и удаляем сессию, при этом у нас осталась сохраненная checksum при удаленной сессии.
Когда переходим по ссылке, приложение открывается с другой сессией , отличной от той, при которой генерировалась Checksum, но оно работает. получается checksum не привязывается к сессии?
...
Рейтинг: 0 / 0
Public page , запрет изменения url
    #39978001
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из за того что у Вас Public page, ссылка генерируется без учета сессии, а вот если бы страница требовала авторизации, вам пришлось выбрать нужный тип.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Public page , запрет изменения url
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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