Top.Mail.Ru
Ответы

PHP не видит данных POST запроса

Сайт заказчика, все работало до определенного момента, вроде никто не лазил по настройкам и хрен его знает как сломалось (ну как обычно). Все собстна слишком просто что бы сломаться, делаю со скрипта на Python запрос на сайт (адрес не пропускает спам фильтр)

1
 print(requests.post("http://example_com/test.php", data={"test": 123}).text) 

И вывожу полученные данные на стороне PHP

123
 <?php 
 
var_dump($_POST); 

Результат

12
 array(0) {
} 

И, как видно, $_POST пустой, $_REQUEST тоже, уже пробовал. Подскажите, куда копать, сижу битый час не пойму что с этим делать, похоже на то что сбились какие-то конфиги, но никто ничего не трогал)

По дате
По Рейтингу
Аватар пользователя
Новичок

А какой результат даёт такой PHP-код:

1
 var_dump(file_get_contents('php://input')); 

Не уже обработанные данные в $_POST, а сырые данные, реально пришедшие в запросе.

Аватар пользователя
Оракул

_POST заполнится только передавать данные с формы н т к она устанавливает заголовки в зависимости от того в каком формате передает

Аватар пользователя
Мудрец

Сайт заказчика, все работало до определенного момента, вроде никто не лазил по настройкам и хрен его знает как сломалось (ну как обычно).
Вероятно хост провайдер заблокировал диапазон ip адресов к своим серверам для некоторых пользователей обычная практика на текущее время и без vpn/ прокси не пропускает запросы со стороны клиентов. самый просто вариант проверки что ошибка в php сделай на другом хосте запрос через curl из php на нужный файл php где твой дамп если выведет то проблема с клиентской частью на php всё норм

Аватар пользователя
Оракул

скорее, запрос не отправляется (данные не шлются), чем скрипт их не принимает и не показывает.

Аватар пользователя
Оракул

На пэйтоне нужно отправлять запрос вот так

123456789101112
 import requests 
import json 
 
 
url = "https://pelevin.gpt.dobro.ai/generate/" 
 
msg = "Твой текст!" 
data = {"prompt": msg} 
 
response = requests.post(url, data=json.dumps(data)).json() 
answer = response.get("replies") 
print(*answer) 

а вы написали какую то ересь.
Запросы к серверу работают так (в довольно грубой аналогии)

  1. формируется тело запроса и заголовки

  2. сформированный запрос с нужными параметрами отправляется на сервер

  3. сервер дает ответ

  4. ответ считывается, он также состоит из тела и заголовков

  5. Только ПОСЛЕ получения ответа его можно вывести.

А у Вас тупо отправляется запрос. ВЫ НЕ ЧИТАЕТЕ что вам ответил сервер :)