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

PHP 獲取超連結傳遞參數值完整指南($_GET、$_REQUEST)

     編輯:PHP 相關知識

前言

頁面間傳值是 Web 開發基礎,最常見方式即 URL 參數(Query String)。本文詳解如何構建帶參數的超連結,以及在 PHP 中安全、正確地獲取這些值。

一、構建帶參數的超連結

1.1 單一參數

<a href="a.php?id=<?php echo $arr['id']; ?>">查看詳情</a>

1.2 多參數與特殊字符處理

<a href="b.php?id=<?php echo urlencode($id); ?>&username=<?php echo urlencode($username); ?>">
    進入主頁
</a>

關鍵點: 使用 urlencode() 編碼參數值,防止空格、中文、特殊符號導致 URL 解析錯誤。

二、PHP 端獲取參數

2.1 $_GET 超全局變量(推薦)

<?php
// 獲取 id 參數
$id = $_GET['id'] ?? null; // PHP 7+ 空合併運算符,避免 Undefined array key 警告

// 獲取 username
$username = $_GET['username'] ?? '';
?>

2.2 $_REQUEST(不推薦常規使用)

$id = $_REQUEST['id'] ?? null; // 同時包含 GET、POST、COOKIE,來源不明確,安全性較低

最佳實踐: 明確知道數據來源時,優先使用 $_GET 或 $_POST,語義清晰且安全。

三、完整範例:a.php → b.php

a.php(列表頁)

<?php
$users = [
    ['id' => 1, 'name' => '張三'],
    ['id' => 2, 'name' => '李四'],
];
?>
<ul>
<?php foreach ($users as $user): ?>
    <li>
        <a href="b.php?id=<?= urlencode($user['id']) ?>&name=<?= urlencode($user['name']) ?>">
            <?= htmlspecialchars($user['name']) ?>
        </a>
    </li>
<?php endforeach; ?>
</ul>

b.php(詳情頁)

<?php
// 1. 獲取並過濾
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);

if ($id === false || $id === null) {
    die('非法的 ID 參數');
}

// 2. 業務邏輯(如查詢資料庫)
// $stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
// $stmt->execute([$id]);
// $user = $stmt->fetch();
?>
<h1>用戶詳情</h1>
<p>ID: <?= $id ?></p>
<p>姓名: <?= $name ?></p>

四、安全與最佳實踐清單

  1. 輸出時轉義: htmlspecialchars() 防 XSS。
  2. 輸入驗證/過濾: 使用 filter_input() 或 filter_var()。
  3. 敏感操作用 POST: 刪除、修改等狀態改變操作勿用 GET。
  4. CSRF 保護: 表單加入 Token 驗證。

常見錯誤排查

現象原因解決
Notice: Undefined array key參數未傳遞或拼寫錯誤用 ?? 或 isset() 判斷
中文參數亂碼未 urlencode / 頁面編碼不一致統一 UTF-8 + urlencode
取不到值用了 $_POST 但實際是 GET檢查 $_SERVER['REQUEST_METHOD']
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved