You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP程序实现计算结果历史记录展示功能的技术问询

Solution to Add Calculation History with PHP Sessions

Got it, let's walk through how to implement this calculation history feature. Since HTTP is stateless, we'll use PHP sessions to persist the history across form submissions. Here's a complete, working implementation:

Step 1: Initialize Session and Handle Form Submission

First, add this PHP code at the very top of your page (before any HTML output). It starts the session, initializes the history array, and processes the form data when submitted:

<?php
// Start the session to keep track of history between requests
session_start();

// Create an empty history array if it doesn't exist yet
if (!isset($_SESSION['calc_history'])) {
    $_SESSION['calc_history'] = [];
}

// Process the POST request when the form is submitted
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Sanitize and convert input values to numbers
    $num1 = isset($_POST['num1']) ? (float)$_POST['num1'] : 0;
    $num2 = isset($_POST['num2']) ? (float)$_POST['num2'] : 0;

    // Replace this with your actual calculation logic (e.g., subtract, multiply, etc.)
    $result = $num1 + $num2;

    // Create a record with timestamp, inputs, and result
    $calculation = [
        'time' => date('Y-m-d H:i:s'),
        'a' => $num1,
        'b' => $num2,
        'result' => $result
    ];

    // Append the new calculation to the history
    $_SESSION['calc_history'][] = $calculation;
}
?>

Step 2: Update Your Form

Modify your existing form to safely retain input values (using htmlspecialchars to prevent XSS attacks, which is critical when echoing user input):

<form method="post">
    <p>A: <input 
        value="<?php echo isset($_POST['num1']) ? htmlspecialchars($_POST['num1']) : ''; ?>" 
        min="0" 
        max="1000" 
        type="number" 
        name="num1"
        required
    ></p>
    <p>B: <input 
        value="<?php echo isset($_POST['num2']) ? htmlspecialchars($_POST['num2']) : ''; ?>" 
        min="0" 
        max="1000" 
        type="number" 
        name="num2"
        required
    ></p>
    <button type="submit">Calculate</button>
</form>

Step 3: Display the Calculation History

Add this section at the end of your page to show the history as a list:

<h3>Calculation History</h3>
<?php if (empty($_SESSION['calc_history'])): ?>
    <p>No calculations have been made yet. Submit a calculation to start building your history!</p>
<?php else: ?>
    <ul>
        <?php foreach ($_SESSION['calc_history'] as $entry): ?>
            <li>
                <strong><?php echo htmlspecialchars($entry['time']); ?></strong>: 
                <?php echo htmlspecialchars($entry['a']); ?> + <?php echo htmlspecialchars($entry['b']); ?> = <?php echo htmlspecialchars($entry['result']); ?>
            </li>
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

Key Notes:

  • Session Persistence: Sessions keep the history data alive until the user closes their browser or the session expires (default is 24 minutes of inactivity).
  • XSS Protection: Using htmlspecialchars() when echoing user input prevents malicious scripts from being injected into your page.
  • Customization: Adjust the calculation logic (replace $num1 + $num2 with subtraction, multiplication, etc.) to match your needs. You can also modify the history entry format (add more details like operation type).

内容的提问来源于stack exchange,提问作者Hamid reza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:39:14