簡體   English   中英

為啟用了魔術引號的系統創建real_escape_string()方法

[英]Creating a real_escape_string() method for systems with magic quotes enabled

我正在學習PHP的書中說,為了防止人們使用引號等內容來更改查詢,您應該使用real_escape_string函數。 然后作者繼續說,在某些啟用了魔術引號的較舊的系統上,使用real_escape_string可能會導致兩次轉義某些字符,因此他創建了以下功能:

<?php
    function mysql_fix_string($conn, $string) {
        if (get_magic_quotes_gpc()) $string = stripslashes($string);
        return $conn->real_escape_string($string);
    }
?>

將其轉換為mysqli類的擴展類中的方法是否可以? (除了要傳遞盡可能少的參數之外,沒有其他任何真正的原因。)

如果是這樣,這是正確的方法嗎?

class mysqli_extended extends mysqli {
    public function fix_string($string) {
        if(get_magic_quotes_gpc()) {
            $string = stripslashes($string);
        }
        return $this->real_escape_string($string);
    }
} 

在這種情況下,使用靜態方法更有意義嗎? 如果是這樣,如何將其重寫為靜態方法?如果不是,那么為什么呢?


由於我只是問了一百萬個問題,因此我將在此處進行總結:

  1. 為此可以創建一種方法嗎? (這有什么缺點嗎?)
  2. 上面的代碼是正確的方法嗎?
  3. 應該是靜態方法嗎?
  4. 您將如何使其成為靜態方法?

自PHP 5.3起,魔術引號已棄用,並在5.4中刪除。 我建議以正確的方式學習php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM