PVLDM Posted November 29, 2023 at 05:54 AM Share Posted November 29, 2023 at 05:54 AM (edited) Здравствуйте! Есть не совсем логичная задача, но хочется ее реализовать именно так))) Не судите строго. Находясь в админке, нужно сделать запрос на страницу в админке по url. Там будет pdf файл, который потом мы сохраним на сервер. Выносить в паблик эти pdf файлы небезопасно. т.е. у нас есть все данные, токен, сессия, куки и т.п. Как правильно их передать через curl, что бы пройти авторизацию опенкарт 1.5.4.1 Может быть что то типа: curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID='.$_COOKIE["PHPSESSID"]); Не работает ( Или это не возможно? И тут только проходить авторизацию по логину и паролю, далее сохранять куки и уже получать что нам надо? Спасибо. Edited November 29, 2023 at 05:56 AM by PVLDM 0 Quote Link to comment Share on other sites More sharing options...
Sig Posted November 29, 2023 at 06:26 AM Share Posted November 29, 2023 at 06:26 AM Здравствуйте. Токен не забыли в URL указать? 0 Quote Link to comment Share on other sites More sharing options...
PVLDM Posted November 29, 2023 at 06:46 AM Author Share Posted November 29, 2023 at 06:46 AM Нет, токен именно тот, который сейчас на данной странице. т.е. думаете токена и PHPSESSID должно хватить входа в админку? 0 Quote Link to comment Share on other sites More sharing options...
Sig Posted November 29, 2023 at 12:40 PM Share Posted November 29, 2023 at 12:40 PM (edited) Должно. Но не для входа, а для запросов к админке. Покажите код, которым делаете запрос. Edited November 29, 2023 at 12:46 PM by Sig 0 Quote Link to comment Share on other sites More sharing options...
PVLDM Posted November 29, 2023 at 01:05 PM Author Share Posted November 29, 2023 at 01:05 PM $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 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted November 29, 2023 at 01:53 PM Share Posted November 29, 2023 at 01:53 PM В 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 Quote Link to comment Share on other sites More sharing options...
PVLDM Posted November 29, 2023 at 02:34 PM Author Share Posted November 29, 2023 at 02:34 PM В 29.11.2023 в 16:53, mpn2005 сказал: А ещё у вас вот тут опечатка. Спасибо! Помогло это исправление + session_write_close(); 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted November 29, 2023 at 05:00 PM Share Posted November 29, 2023 at 05:00 PM В 29.11.2023 в 18:34, PVLDM сказал: Спасибо! Помогло это исправление + session_write_close(); Вообще сессия должна быть записана уже. Это же не первый заход. Принудительная запись нужна только в том случае, когда надо прокинуть данные которые были созданы или изменены именно в эту сессию. Логин к этим данным не относится. 0 Quote Link to comment Share on other sites More sharing options...
PVLDM Posted November 29, 2023 at 05:25 PM Author Share Posted November 29, 2023 at 05:25 PM Да, понимаю, но почему то без этого страница доооолго грузится и в итоге 502 ошибка ( 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted November 29, 2023 at 05:30 PM Share Posted November 29, 2023 at 05:30 PM В 29.11.2023 в 21:25, PVLDM сказал: Да, понимаю, но почему то без этого страница доооолго грузится и в итоге 502 ошибка ( А это уже окружение настроено на блокировку сессий и не даёт открыть вторую сессию, пока не завершён запрос из первой. Закрытие, а потом запрос - это как раз обход этой блокировки. Но после этого сессия уже не открыта, но имея id её можно опять открыть после выполнения запроса. А зачем вообще всё делать таким извращённым способом? 0 Quote Link to comment Share on other sites More sharing options...
PVLDM Posted November 29, 2023 at 05:50 PM Author Share Posted November 29, 2023 at 05:50 PM В 29.11.2023 в 20:30, mpn2005 сказал: А зачем вообще всё делать таким извращённым способом? Да понимаю, но решил сделать так. Разработали программу под винду, которая на локалке принимает GET запрос с ссылкой на пдф, имя принтера, формат печати и т.п. и без лишних слов печатает на нужной принтере, в нужном формате. pdf там не очень хочется в паблик отдавать. Таких pdf модулей много, разных, и все переносить в паблик и мудрить с защитой не захотелось. Решил сделать запрос из админки в админку через curl, сохранить файл и отдать его по прямой ссылке. Потом файл удаляется. Так себя объяснил, но как есть. Да и на будущее, это может пригодиться. Еще раз, спасибо за помощь! 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.