PVLDM Опубликовано 29.11.2023 в 05:54 Поделиться Опубликовано 29.11.2023 в 05:54 (изменено) Здравствуйте! Есть не совсем логичная задача, но хочется ее реализовать именно так))) Не судите строго. Находясь в админке, нужно сделать запрос на страницу в админке по url. Там будет pdf файл, который потом мы сохраним на сервер. Выносить в паблик эти pdf файлы небезопасно. т.е. у нас есть все данные, токен, сессия, куки и т.п. Как правильно их передать через curl, что бы пройти авторизацию опенкарт 1.5.4.1 Может быть что то типа: curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID='.$_COOKIE["PHPSESSID"]); Не работает ( Или это не возможно? И тут только проходить авторизацию по логину и паролю, далее сохранять куки и уже получать что нам надо? Спасибо. Изменено 29.11.2023 в 05:56 пользователем PVLDM 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sig Опубликовано 29.11.2023 в 06:26 Поделиться Опубликовано 29.11.2023 в 06:26 Здравствуйте. Токен не забыли в URL указать? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
PVLDM Опубликовано 29.11.2023 в 06:46 Автор Поделиться Опубликовано 29.11.2023 в 06:46 Нет, токен именно тот, который сейчас на данной странице. т.е. думаете токена и PHPSESSID должно хватить входа в админку? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sig Опубликовано 29.11.2023 в 12:40 Поделиться Опубликовано 29.11.2023 в 12:40 (изменено) Должно. Но не для входа, а для запросов к админке. Покажите код, которым делаете запрос. Изменено 29.11.2023 в 12:46 пользователем Sig 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
PVLDM Опубликовано 29.11.2023 в 13:05 Автор Поделиться Опубликовано 29.11.2023 в 13:05 $url = 'https://site.ru/admin/index.php?route=home/common&token='.$this->session->data['token']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_COOKIE, 'PHPSESSID=' . $_COOKIE['PHPSESSID']); $result = curl_exec($ch); echo $result; curl_close($ch); 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 29.11.2023 в 13:53 Поделиться Опубликовано 29.11.2023 в 13:53 В 29.11.2023 в 09:54, PVLDM сказал: Может быть что то типа: curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID='.$_COOKIE["PHPSESSID"]); Попробуйте вот так: curl_setopt($c, CURLOPT_COOKIE, 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/'); Можно попробовать ещё вариант - передать куки через заголовок: $headers = array(); $headers[] = 'Cookie: PHPSESSID=' . $_COOKIE['PHPSESSID']; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); Если не получается, то на принимающей стороне сделать так: print_r($_GET); print_r($_COOKIE); die(); И посмотреть результат, там может станет понятнее, что именно не доходит. А ещё у вас вот тут опечатка. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
PVLDM Опубликовано 29.11.2023 в 14:34 Автор Поделиться Опубликовано 29.11.2023 в 14:34 В 29.11.2023 в 16:53, mpn2005 сказал: А ещё у вас вот тут опечатка. Спасибо! Помогло это исправление + session_write_close(); 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 29.11.2023 в 17:00 Поделиться Опубликовано 29.11.2023 в 17:00 В 29.11.2023 в 18:34, PVLDM сказал: Спасибо! Помогло это исправление + session_write_close(); Вообще сессия должна быть записана уже. Это же не первый заход. Принудительная запись нужна только в том случае, когда надо прокинуть данные которые были созданы или изменены именно в эту сессию. Логин к этим данным не относится. 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
PVLDM Опубликовано 29.11.2023 в 17:25 Автор Поделиться Опубликовано 29.11.2023 в 17:25 Да, понимаю, но почему то без этого страница доооолго грузится и в итоге 502 ошибка ( 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mpn2005 Опубликовано 29.11.2023 в 17:30 Поделиться Опубликовано 29.11.2023 в 17:30 В 29.11.2023 в 21:25, PVLDM сказал: Да, понимаю, но почему то без этого страница доооолго грузится и в итоге 502 ошибка ( А это уже окружение настроено на блокировку сессий и не даёт открыть вторую сессию, пока не завершён запрос из первой. Закрытие, а потом запрос - это как раз обход этой блокировки. Но после этого сессия уже не открыта, но имея id её можно опять открыть после выполнения запроса. А зачем вообще всё делать таким извращённым способом? 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
PVLDM Опубликовано 29.11.2023 в 17:50 Автор Поделиться Опубликовано 29.11.2023 в 17:50 В 29.11.2023 в 20:30, mpn2005 сказал: А зачем вообще всё делать таким извращённым способом? Да понимаю, но решил сделать так. Разработали программу под винду, которая на локалке принимает GET запрос с ссылкой на пдф, имя принтера, формат печати и т.п. и без лишних слов печатает на нужной принтере, в нужном формате. pdf там не очень хочется в паблик отдавать. Таких pdf модулей много, разных, и все переносить в паблик и мудрить с защитой не захотелось. Решил сделать запрос из админки в админку через curl, сохранить файл и отдать его по прямой ссылке. Потом файл удаляется. Так себя объяснил, но как есть. Да и на будущее, это может пригодиться. Еще раз, спасибо за помощь! 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.