<?php
// 必須在任何輸出前呼叫
session_start();
// 寫入
$_SESSION['user_id'] = 12345;
$_SESSION['username'] = 'admin';
$_SESSION['permissions'] = ['read', 'write', 'admin'];
// 讀取
echo "歡迎, {$_SESSION['username']}";
// 修改
$_SESSION['last_visit'] = time();
// 刪除單項
unset($_SESSION['permissions']);
// 銷毀整個 Session (登出)
session_unset(); // 清空 $_SESSION
session_destroy(); // 刪除伺服器端儲存與 Cookie
?>
page1.php
<?php
session_start();
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
echo '去下一頁';
?>
page2.php
<?php
session_start();
echo "最愛顏色: {$_SESSION['favcolor']}
";
echo "動物: {$_SESSION['animal']}
";
var_dump($_SESSION);
?>
page.php?name=Peter&age=37<form action="welcome.php" method="get">
姓名: <input name="name"> 年齡: <input name="age">
<button type="submit">送出</button>
</form>
<?php // welcome.php
echo "歡迎, {$_GET['name']}。你 {$_GET['age']} 歲。";
?>
post_max_size 限制)<form action="login.php" method="post">
帳號: <input name="username">
密碼: <input type="password" name="pwd">
<button>登入</button>
</form>
<?php // login.php
$user = $_POST['username'] ?? '';
$pass = $_POST['pwd'] ?? '';
// 驗證邏輯...
?>
包含 $_GET、$_POST、$_COOKIE (順序由 request_order / variables_order 決定)。建議明確使用 $_GET/$_POST,避免來源混淆導致安全漏洞。
<?php
$raw = "第一頁";
$encoded = urlencode($raw); // %E7%AC%AC%E4%B8%80%E9%A0%81
$decoded = urldecode($encoded); // 還原
echo "$raw";
// PHP 自動解碼 $_GET['page'] → "第一頁"
?>
<?php
// 設定 Cookie (必須在輸出前)
setcookie('user_id', '12345', time() + 3600, '/', '', false, true); // 1小時、全站、HttpOnly
setcookie('remember_me', '1', time() + 86400 * 30, '/'); // 30天
// 讀取
if (isset($_COOKIE['user_id'])) {
echo "歡迎回來, User #{$_COOKIE['user_id']}";
}
// 刪除 (設定過去時間)
setcookie('user_id', '', time() - 3600, '/');
?>
| 參數 | 說明 |
|---|---|
name | Cookie 名稱 |
value | 值 (自動 urlencode) |
expire | Unix 時間戳,0/省略 = 瀏覽器關閉失效 (Session Cookie) |
path | 生效路徑,/ 為全站 |
domain | 生效網域,.example.com 含子網域 |
secure | 僅 HTTPS 傳輸 |
httponly | JS 無法存取 (document.cookie),防 XSS 竊取 |
<?php
// 時區設定 (放在腳本最前端)
date_default_timezone_set('Asia/Taipei');
// 1. 當前時間戳
$now = time(); // 1703481600
// 2. 格式化輸出
echo date('Y-m-d H:i:s', $now); // 2024-12-25 14:30:00
// 3. 字串解析為時間戳
$str = '2024-12-25 10:26:10';
$ts = strtotime($str);
// 4. 相對時間
echo date('Y-m-d', strtotime('+3 days')); // 3 天后
echo date('Y-m-d', strtotime('next Monday'));
// 5. 高精度計時
$start = microtime(true);
// ... code ...
$elapsed = microtime(true) - $start;
printf("耗時: %.4f 秒", $elapsed);
?>
csrf_token,Session 驗證。htmlspecialchars($val, ENT_QUOTES, 'UTF-8')。session.cookie_httponly=1、session.cookie_secure=1 (HTTPS)、session.use_strict_mode=1。