首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP + HTML 實現九輸入框數據臨時存儲與顯示(文本文件/數據庫雙方案)

     編輯:程式設計疑難解答

需求拆解

  • 頁面 A:9 個輸入框,提交後數據暫存後端;
  • 頁面 B:讀取並將 9 個數值分別顯示在對應位置;
  • 優先用文本文件,不行再用 SQL。

方案一:文本文件存儲(零依賴,極簡)

input.php

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = [];
    for ($i = 1; $i <= 9; $i++) {
        $data[] = isset($_POST["field$i"]) ? trim($_POST["field$i"]) : '';
    }
    file_put_contents('storage.txt', implode('|', $data), LOCK_EX);
    header('Location: display.html');
    exit;
}
?>
<form method="post">
  <?php for ($i=1;$i<=9;$i++): ?>
    <input name="field<?=$i?>" placeholder="字段<?=$i?>"><br>
  <?php endfor; ?>
  <button type="submit">提交</button>
</form>

display.html(需改為 .php 或配置解析)

<?php
$vals = file_exists('storage.txt') ? explode('|', file_get_contents('storage.txt')) : array_fill(0,9,'');
?>
<!DOCTYPE html><html><body>
<?php for ($i=0;$i<9;$i++): ?>
  <div>字段<?=$i+1?>: <span><?=htmlspecialchars($vals[$i])?></span></div>
<?php endfor; ?>
</body></html>

方案二:SQLite 輕量數據庫(結構化、并發安全)

init.php(運行一次)

<?php
$db = new PDO('sqlite:data.db');
$db->exec("CREATE TABLE IF NOT EXISTS form_data (id INTEGER PRIMARY KEY, field1 TEXT, field2 TEXT, field3 TEXT, field4 TEXT, field5 TEXT, field6 TEXT, field7 TEXT, field8 TEXT, field9 TEXT, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP)");

input.php

<?php
$db = new PDO('sqlite:data.db');
$stmt = $db->prepare("INSERT INTO form_data (field1,field2,field3,field4,field5,field6,field7,field8,field9) VALUES (?,?,?,?,?,?,?,?,?)");
$stmt->execute(array_map(fn($i)=>$_POST["field$i"]??'', range(1,9)));
header('Location: display.php');

display.php

<?php
$db = new PDO('sqlite:data.db');
$row = $db->query("SELECT * FROM form_data ORDER BY id DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html><html><body>
<?php for($i=1;$i<=9;$i++): ?>
  <div>字段<?=$i?>: <?=htmlspecialchars($row["field$i"])??''?></div>
<?php endfor; ?>
</body></html>

安全與健壯性增強

  • 輸入過濾:htmlspecialchars 防 XSS,trim 去首尾空白;
  • 并發鎖:文件方案用 LOCK_EX,SQLite 自帶行級鎖;
  • 正則替換:若需模板渲染,可用 preg_replace_callback 將佔位符替換為數據。

總結

簡單場景首選「文本文件 + 管道分隔」,零配置、易遷移;需查詢歷史、并發寫入時升級 SQLite,無需安裝 MySQL 即可獲得關係型能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved