金融入口網站允許使用者選擇四檔股票,跨頁面保存選擇並即時顯示最新價格。使用 Session 儲存使用者名稱與股票代碼,配合 MySQL 讀取偏好設定。
<?php
session_start();
// 註冊 Session 變數(PHP 4 風格,新版直接用 $_SESSION)
$username = $_SESSION['username'] ?? 'Guest';
$stocks = ['stock1', 'stock2', 'stock3', 'stock4'];
foreach ($stocks as $s) { if (!isset($_SESSION[$s])) $_SESSION[$s] = ''; }
// 連線資料庫
$db = mysqli_connect("localhost", "user", "pass", "stock_db");
if (!$db) die("連線失敗: " . mysqli_connect_error());
// 讀取使用者偏好
$query = "SELECT stock_pref1, stock_pref2, stock_pref3, stock_pref4
FROM user_info WHERE username = ?";
$stmt = mysqli_prepare($db, $query);
mysqli_stmt_bind_param($stmt, "s", $username);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $s1, $s2, $s3, $s4);
if (mysqli_stmt_fetch($stmt)) {
$_SESSION['stock1'] = $s1;
$_SESSION['stock2'] = $s2;
$_SESSION['stock3'] = $s3;
$_SESSION['stock4'] = $s4;
}
mysqli_stmt_close($stmt);
// 模擬即時股價 API(實際應串接金融 API)
function getPrice($symbol) { return rand(100, 500) / 10; }
?>
<!DOCTYPE html>
<html><head><title>我的投資組合</title></head><body>
<h1>歡迎,<?= htmlspecialchars($username) ?></h1>
<h2>您關注的股票</h2>
<table border="1" cellpadding="5">
<tr><th>代碼</th><th>即時價格</th></tr>
<?php foreach ($stocks as $s): ?>
<tr>
<td><?= $_SESSION[$s] ?></td>
<td><?= getPrice($_SESSION[$s]) ?></td>
</tr>
<?php endforeach; ?>
</table>
<p><a href="logout.php">登出</a></p>
</body></html>
| 函式 | 說明 |
|---|---|
session_start() | 啟動或恢復 Session |
session_destroy() | 銷毀所有 Session 資料(登出用) |
session_name() | 取得/設定 Session 名稱(預設 PHPSESSID) |
session_id() | 取得/設定目前 Session ID |
session_unregister() | 註銷單一變數(PHP 4,新版用 unset($_SESSION['var'])) |
session_is_registered() | 檢查變數是否已註冊(PHP 4,新版用 isset($_SESSION['var'])) |
session_encode() | 將 Session 資料編碼為字串 |
session_decode() | 將字串解碼還原 Session 資料 |
若瀏覽器禁用 Cookie,需在所有連結/表單手動帶入 Session ID:
<a href="preferences.php?<?= session_name() ?>=<?= session_id() ?>">編輯投資組合</a>
或啟用 session.use_trans_sid = 1(PHP 會自動重寫 URL),但需注意安全性。
<?php
session_start();
$_SESSION['someString'] = "I hate cats!";
$sessStr = session_encode(); // 輸出:someString|s:12:"I hate cats!";
$sessStr = str_replace("cats", "dogs", $sessStr);
session_decode($sessStr);
echo $_SESSION['someString']; // I hate dogs!
?>