Запрос Python Post — PHP

#php #python #post #request #http-post

#php #питон #Публикация #запрос #http-post #python

Вопрос:

Я пытаюсь создать php-страницу, которая берет данные из моего кода Python и отображает их в виде таблицы.

 r = requests.post('http://localhost/index.php', data={"iv":a,"ven":b,"hem":c,"card":d,"ecg":e})
print(r.text)
  

В приведенном выше коде я публикую данные, а затем распечатываю их, чтобы проверить, все ли в порядке. Мой вывод r.text

 <table><tr><th>IV Pump</th><th>Ventilator</th> <th>Heart Monitor</th><th>Cardiac Machine</th><th>Echocardiogram</th></tr><tr><td>off</td><td>on</td><td>off</td><td>off</td><td>off</td></tr></table> 
  

что кажется прекрасным, потому что я могу получить a, b, c, d, e (вкл / выкл в основном). Однако, когда я открываю свой index.php Я не вижу этих «включено» и «выключено». Я новичок в серверных вещах, PHP и т.д. Моя ошибка, вероятно, очень фиктивна. Должен ли я где-то хранить данные post? Мой index.php:

 <?php
$iv=$_REQUEST['iv'];
$ven=$_REQUEST['ven'];
$hem=$_REQUEST['hem'];
$card=$_REQUEST['card'];
$ecg=$_REQUEST['ecg'];

echo '<table>';
echo  '<tr>';
echo    '<th>IV Pump</th>';
echo    '<th>Ventilator</th> ';
echo    '<th>Heart Monitor</th>';
echo    '<th>Cardiac Machine</th>';
echo    '<th>Echocardiogram</th>';
echo  '</tr>';
echo  '<tr>';
echo    '<td>';
echo $iv;
echo '</td>';
echo    '<td>';
echo $ven;
echo '</td>';
echo    '<td>';
echo $hem;
echo '</td>';
echo    '<td>';
echo $card;
echo '</td>';
echo    '<td>';
echo $ecg;
echo '</td>';
echo  '</tr>';

echo '</table>';
?>
  

Мой r.text в порядке, но на веб-странице я не могу видеть данные запроса, ячейки таблицы пусты. В чем же разница? Насколько я знаю, r.text возвращает содержимое страницы, так что index.php должно быть, я ошибаюсь, я предполагаю, что речь идет о хранении данных.

Комментарии:

1. Как я вижу, эти включения / выключения исходят из вашего скрипта Python

2. @Niels итак, вы говорите, что они на самом деле не запрашивают с php? r.text получает базовые данные таблицы с веб-страницы, а a, b, c, d, e — это просто переменные python, я прав?

Ответ №1:

Когда вы делаете HTTP-запрос к серверу, этот сервер вернет отрисованную веб-страницу этому пользователю. Это означает, requests что вы получите правильный ответ.

Однако, когда вы открываете веб-страницу в браузере, вы делаете новый запрос к этому серверу, который снова отобразит страницу. Поскольку на этот раз вы не передаете $_REQUEST['iv'] и т.д. значения, таблица будет выглядеть пустой.

У вас есть несколько вариантов в зависимости от того, что вы хотите сделать:

Сохраняйте информацию в базе данных

Вы можете сохранить эту информацию в базе данных. Некоторые базы данных, например, являются SQLite3 или MySQL. Я опустил точную реализацию вставки / чтения базы данных, поскольку она отличается от выбранной вами базы данных.

Простой метод может быть:

 <?php

$iv=$_REQUEST['iv'];
// insert other variables etc.

// Check if this is a POST request
if ($_SERVER['REQUEST_METHOD'] === "POST") {
   // INSERT DATA INTO YOUR DATABASE AS APPROPRIATE
   // You can also echo back the table if you want

// Else it might be a GET request
} elseif ($_SERVER['REQUEST_METHOD'] === "GET") {
   // READ DATA FROM DATABASE
   // echo table with the data from the database
}


?>

  

Используйте параметры URL

В качестве альтернативы вы можете использовать параметры URL для кодирования ваших данных следующим образом:

 # In your Python code
# Notice that requests.post changed to requests.get and data changed to params
r = requests.get('http://localhost/index.php', params={"iv":a,"ven":b,"hem":c,"card":d,"ecg":e})

# You can now access this specific URL to see the populated table
# The URL will look something like http://localhost/index.php?iv=aamp;ven=b/
print(r.url)
  

Обратите внимание, что для этого требуется, чтобы вы посетили этот конкретный URL-адрес и не работает, если вы посещаете базовый URL-адрес (т. Е. https://localhost/index.php ) Без параметров.

Комментарии:

1. спасибо за информацию, я не пробовал код. Однако, по крайней мере, я понимаю, что мне нужно где-то хранить данные. Я никогда не пробовал mysql или что-то подобное, может быть, я смогу записать в текстовый файл на python, тогда я прочитаю его на php.

2. @SelimTurkoglu Если вы хотите сохранить в файл, вы можете попробовать SQLite , который представляет собой файловую базу данных. Вы определенно можете записать в обычный текстовый файл, если хотите.

3. Я записал вывод в текстовый файл на python, теперь я отображаю его на php через $myfile = fopen("text.txt","r"); while(!feof($myfile)) { $word = fgets($myfile); Я думаю, что это проще, чем база данных на данный момент

4. @SelimTurkoglu Да, если это работает для вашего варианта использования, это здорово. Если вы считаете, что мой ответ полностью охватил проблемы вашего вопроса, не стесняйтесь принять его или вы можете подождать, если считаете, что кто-то другой может лучше удовлетворить ваши проблемы.