久艹网,亚洲一日韩欧美中文字幕2019,国产欧美日韩精品专区黑人,一区二区三区久久99

中山php|最優(yōu)網(wǎng)絡(luò)中山做網(wǎng)站 中山php建站

最優(yōu)良人

2011/08/07 at 02:01

php過濾敏感字符的一些相關(guān)函數(shù)--魔法函數(shù)應(yīng)用

一,首先,先來看一下php.ini的兩個配置參數(shù)

magic_quotes_gpc "1" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3. Removed in PHP 6.0.0.

作用范圍是:WEB客戶服務(wù)端;
作用時間:請求開始是,例如當(dāng)腳本運(yùn)行時

magic_quotes_runtime "0" PHP_INI_ALL Removed in PHP 6.0.0.

作用范圍是:影響從文件中讀取的數(shù)據(jù)或從數(shù)據(jù)庫查詢得到的數(shù)據(jù)。

以下是一些常用到的方法:

get_magic_quotes_gpc(void)

本函數(shù)取得 PHP 環(huán)境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。

  返回 0 表示關(guān)閉本功能;

  返回 1 表示本功能打開。

  當(dāng) magic_quotes_gpc 打開時,所有的 ' (單引號), " (雙引號), \ (反斜線) and 空字符會自動轉(zhuǎn)為含有反斜線的溢出字符。

應(yīng)用:

由于該參數(shù)不支持在php文件進(jìn)行設(shè)置,如果通過本函數(shù)取得的變量magic_quotes_gpc 的值為false,我們可以
利用addslashes()人工使用反斜線引用字符串

$var = get_magic_quotes_gpc()?$var:addslashes($var);

相反,如果通過本函數(shù)取得的變量magic_quotes_gpc 的值為true,我們希望字符串不被轉(zhuǎn)義,那么可以利用stripslashes()去除自動添加的反斜杠

get_magic_quotes_runtime()

一般情況下,應(yīng)當(dāng)將其關(guān)閉,否則從數(shù)據(jù)庫讀取出來的數(shù)據(jù)單引號、雙引號和反斜杠都會被加上\,導(dǎo)致顯示不正常。像Discuz,PHPWind都在公共文件的頭部加上一句

set_magic_quotes_runtime(0)

// Check if magic_quotes_runtime is active
if(get_magic_quotes_runtime())
{
// Deactive
set_magic_quotes_runtime(false);
}

二、對于magic_quotes_runtime,我們統(tǒng)一關(guān)閉它,即set_magic_quotes_runtime(0);不讓從數(shù)據(jù)庫讀取出來的數(shù)據(jù)的單引號、雙引號和反斜杠都自動被加上\。這樣,對數(shù)據(jù)庫的操作如下:添加數(shù)據(jù)到數(shù)據(jù)庫之前,我們手動對數(shù)據(jù)進(jìn)行addslashes(),而從數(shù)據(jù)庫取出數(shù)據(jù)時,則作相反操作,即stripslashes()。

三、對于要序列化的內(nèi)容,要保持裸數(shù)據(jù),即要去掉轉(zhuǎn)義,stripslashes(),然后在把序列化過的內(nèi)容保存到數(shù)據(jù)庫當(dāng)中(注意,序列化過的內(nèi)容是不帶單引號(')、雙引號(")、反斜線(\)的),示例如下:

$feedarr['body_data'] = serialize(stripslashes($body_data));

標(biāo)簽:,
-