Python Post - PHP请求

问题描述 投票:1回答:1

我正在尝试创建一个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必定是错误的,我猜它是关于存储数据的。

php python post request http-post
1个回答
1
投票

当您将HTTP request发送到服务器时,该服务器会将呈现的网页返回给该用户。这意味着requests将得到正确的回复。

但是,当您在浏览器中打开网页时,您正在向该服务器发出新请求,该请求将再次呈现该页面。由于这次没有传递$_REQUEST['iv']等值,因此该表将显示为空白。

根据您的要求,您有几个选项:

将信息存储在数据库中

您可以将该信息存储在数据库中。例如,一些数据库是SQLite3MySQL。我省略了确切的数据库插入/读取实现,因为它在您选择的数据库之间有所不同。

一个简单的方法可能是:

<?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 parameters对数据进行编码,如下所示:

# 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(即https://localhost/index.php),则需要您访问该特定URL并且不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.