Jump to content

Curl запрос внутри админки


PVLDM
 Share

Recommended Posts

Здравствуйте!

Есть не совсем логичная задача, но хочется ее реализовать именно так))) Не судите строго.

 

Находясь в админке, нужно сделать запрос на страницу в админке по url. Там будет pdf файл, который потом мы сохраним на сервер.

Выносить в паблик эти pdf файлы небезопасно.

 

т.е. у нас есть все данные, токен, сессия, куки и т.п.

Как правильно их передать через curl, что бы пройти авторизацию опенкарт 1.5.4.1

 

Может быть что то типа:

curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID='.$_COOKIE["PHPSESSID"]);

 

Не работает ( Или это не возможно? И тут только проходить авторизацию по логину и паролю, далее сохранять куки и уже получать что нам надо?

 

Спасибо.

 

Edited by PVLDM
Link to comment
Share on other sites

$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);
Link to comment
Share on other sites

В 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();

 

И посмотреть результат, там может станет понятнее, что именно не доходит.

 

 

А ещё у вас вот тут опечатка.

image.png

Link to comment
Share on other sites

В 29.11.2023 в 18:34, PVLDM сказал:

Спасибо! Помогло это исправление +

session_write_close();

Вообще сессия должна быть записана уже. Это же не первый заход.

Принудительная запись нужна только в том случае, когда надо прокинуть данные которые были созданы или изменены именно в эту сессию.

Логин к этим данным не относится.

Link to comment
Share on other sites

В 29.11.2023 в 21:25, PVLDM сказал:

Да, понимаю, но почему то без этого страница доооолго грузится и в итоге 502 ошибка (

А это уже окружение настроено на блокировку сессий и не даёт открыть вторую сессию, пока не завершён запрос из первой.

Закрытие, а потом запрос - это как раз обход этой блокировки.

Но после этого сессия уже не открыта, но имея id её можно опять открыть после выполнения запроса.

 

А зачем вообще всё делать таким извращённым способом?

Link to comment
Share on other sites

В 29.11.2023 в 20:30, mpn2005 сказал:

А зачем вообще всё делать таким извращённым способом?

Да понимаю, но решил сделать так. Разработали программу под винду, которая на локалке принимает GET запрос с ссылкой на пдф, имя принтера, формат печати и т.п. и без лишних слов печатает на нужной принтере, в нужном формате.

 

pdf там не очень хочется в паблик отдавать. Таких pdf модулей много, разных, и все переносить в паблик и мудрить с защитой не захотелось.

 

Решил сделать запрос из админки в админку через curl, сохранить файл и отдать его по прямой ссылке. Потом файл удаляется.

Так себя объяснил, но как есть. Да и на будущее, это может пригодиться.

 

Еще раз, спасибо за помощь!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...