首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 動態網站開發實用技巧總彙:表單、資料庫、Session 與常用片段

     編輯:PHP 相關知識

前言

動態網站開發涉及表單處理、資料庫操作、狀態管理等核心技術。本文整理實務常用片段與最佳實踐,涵蓋核取方塊陣列處理、SQL IN 條件建構、表單提交判斷、超全域變數、URL 轉向、IP/時間取得等高頻需求。

1. 核取方塊陣列與 SQL IN 條件

HTML 端:名稱加 [] 形成陣列

<input type="checkbox" name="checkbox[]" value="<?= $row['id'] ?>">

PHP 端:數值型欄位

if (!empty($_POST['checkbox'])) {
    $expr = implode(',', $_POST['checkbox']); // 1,2,3
    $sql  = "SELECT * FROM tbl WHERE field IN ($expr)";
}

PHP 端:字串型欄位(需加引號)

if (!empty($_POST['checkbox'])) {
    $expr = "'" . implode("','", $_POST['checkbox']) . "'"; // 'a','b'
    $sql  = "SELECT * FROM tbl WHERE field IN ($expr)";
}
// ⚠ 實務請用預處理語句動態綁定參數,避免 SQL 注入

2. 表單提交判斷

// 方式一:檢查提交按鈕名稱
if (isset($_POST['submit_btn'])) { /* 處理表單 */ }

// 方式二:檢查 REQUEST_METHOD
if ($_SERVER['REQUEST_METHOD'] === 'POST') { /* 處理表單 */ }

// 方式三:隱藏欄位標記
<input type="hidden" name="action" value="submit">
if (($_POST['action'] ?? '') === 'submit') { /* 處理表單 */ }

3. 字串長度與編碼

// 位元組長度
$byteLen = strlen($str);

// 字元長度(需 mbstring,中文每字 1 長度)
$charLen = mb_strlen($str, 'UTF-8');

4. URL 轉向

// 回上一頁
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;

// 指定頁面
header('Location: success.php');
exit;
// ⚠ header 前不可有任何輸出(含 BOM、空白、echo)

5. 超全域變數 $GLOBALS

<?php
$a = 1; $b = 2;
function Sum() {
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b; // 3
?>

6. 表單取值:$_GET / $_POST

<form method="get">  →  $_GET['field']
<form method="post"> →  $_POST['field']
// 通用:$_REQUEST(含 GET/POST/COOKIE),但優先序較難控制,建議顯式指定

7. 取得客戶端 IP

function getClientIp(): string {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? 'unknown';
    // 可能為多 IP,取第一個
    return explode(',', $ip)[0];
}
echo getClientIp();

8. 日期時間格式化

echo date('Y-m-d H:i:s');     // 2024-12-31 23:59:59
echo date('Y年m月d日');       // 2024年12月31日
echo date('Y-n-j');           // 2024-12-31 (不補零)
echo date('c');               // ISO 8601: 2024-12-31T23:59:59+08:00
// 設定時區
date_default_timezone_set('Asia/Taipei');

9. 常用資料庫操作片段 (PDO)

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 查詢單筆
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$id]);
$user = $stmt->fetch();

// 查詢多筆
$stmt = $pdo->query('SELECT * FROM articles ORDER BY created_at DESC');
$articles = $stmt->fetchAll();

// 新增
$stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (?, ?)');
$stmt->execute([$name, $email]);
$newId = $pdo->lastInsertId();

10. Session 基礎操作

session_start();
// 寫入
$_SESSION['user_id'] = 123;
// 讀取
$userId = $_SESSION['user_id'] ?? null;
// 刪除單一
unset($_SESSION['user_id']);
// 銷毀整個 Session
session_destroy();

總結

熟練掌握上述片段並遵循安全原則(預處理語句、輸出逸脫、CSRF 保護),能大幅提升 PHP 動態網站開發效率與品質。建議將常用工具函式封裝為 Helper 類別或 functions.php 統一管理。

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