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

PHP daddslashes 使用方法與 magic_quotes_gpc/runtime 區別詳解

     編輯:PHP 綜合知識

實用代碼片段

@set_magic_quotes_runtime(0);
$MQG = get_magic_quotes_gpc();
if (!$MQG && $_POST) $_POST = daddslashes($_POST);
if (!$MQG && $_GET) $_GET = daddslashes($_GET);

function daddslashes($string) {
    if (!is_array($string)) return addslashes($string);
    foreach ($string as $key => $val) {
        $string[$key] = daddslashes($val);
    }
    return $string;
}

magic_quotes_gpc vs magic_quotes_runtime

magic_quotes_gpcmagic_quotes_runtime
作用範圍GET/POST/COOKIE 請求數據文件讀取、SQL 查詢結果、執行時產生數據
生效時間腳本開始執行時每次訪問運行時數據時
配置修改php.ini 或 .htaccess(無運行時函數)set_magic_quotes_runtime() 可運行時切換

處理示例

$data1 = $_POST['aaa'];           // 受 gpc 影響
$data2 = implode(file('1.txt'));  // 受 runtime 影響

if (get_magic_quotes_gpc()) { /* 直接入庫 */ }
else { $data1 = addslashes($data1); }

if (get_magic_quotes_runtime()) { /* 直接入庫,讀出需 stripslashes */ }
else { $data2 = addslashes($data2); }

相關函數

  • get_magic_quotes_gpc():返回 0/1。
  • get_magic_quotes_runtime():返回 0/1。
  • set_magic_quotes_runtime(0|1):關閉/開啟 runtime。
  • **無** set_magic_quotes_gpc() 函數。

避坑指南

  1. 統一關閉兩者(PHP 5.4+ 預設關閉)。
  2. 入庫用預處理,輸出用 htmlspecialchars,徹底拋棄魔術引用思維。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved