Python Post - PHP-запрос - PullRequest
       25

Python Post - PHP-запрос

1 голос
/ 22 апреля 2019

Я пытаюсь создать страницу 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, я не вижу этих «on» и «off» s.Я новичок в серверных вещах, PHP и т. Д. Моя ошибка, вероятно, очень глупая.Должен ли я хранить данные поста где-нибудь?Мой 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 Ответ

1 голос
/ 22 апреля 2019

Когда вы отправляете 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=a&ven=b/
print(r.url)

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

...