簡體   English   中英

Python Post - PHP 請求

[英]Python Post - PHP Request

我正在嘗試創建一個 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 等。我的錯誤可能非常愚蠢。 我應該將帖子數據存儲在某個地方嗎? 我的 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 一定是錯誤的,我猜是關於存儲數據的。

當您向服務器發出HTTP 請求時,該服務器會將呈現的網頁返回給用戶。 這意味着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 參數對您的數據進行編碼,如下所示:

# 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 )則不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM