《PHP實(shí)戰(zhàn):php中g(shù)et_magic_quotes_gpc()函數(shù)說明》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):php中g(shù)et_magic_quotes_gpc()函數(shù)說明,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP教程get_magic_quotes_gpc函數(shù)是一個(gè)用來判斷是否為用戶提供的數(shù)據(jù)增加斜線了,這個(gè)在php.ini配置文件中哦,下面我來介紹一下get_magic_quotes_gpc()函數(shù)說明.
PHP教程get_magic_quotes_gpc函數(shù)介紹
PHP教程取得 PHP 環(huán)境變數(shù) magic_quotes_gpc 的值,屬于 PHP 系統(tǒng)功能.
PHP教程語法: long get_magic_quotes_gpc(void);
PHP教程返回值: 長整數(shù)
PHP教程本函數(shù)取得 PHP 環(huán)境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值.返回 0 表示關(guān)閉本功能;返回 1 表示本功能打開.
PHP教程當(dāng) magic_quotes_gpc 打開時(shí),所有的 ‘ (單引號), ” (雙引號), (反斜線) and 空字符會(huì)自動(dòng)轉(zhuǎn)為含有反斜線的溢出字符.
PHP教程magic_quotes_gpc設(shè)置是否自動(dòng)為GPC(get,post,cookie)傳來的數(shù)據(jù)中的'”加上反斜線.可以用get_magic_quotes_gpc()檢測系統(tǒng)設(shè)置.
PHP教程如果沒有打開這項(xiàng)設(shè)置,可以使用addslashes()函數(shù)添加,它的功能就是給數(shù)據(jù)庫查詢語句等的需要在某些字符前加上了反斜線.
PHP教程這些字符是單引號(')、雙引號(”)、反斜線()與 NUL(NULL 字符).
PHP教程默認(rèn)情況下,PHP 指令 magic_quotes_gpc 為 on,它主要是對所有的 GET、POST 和 COOKIE 數(shù)據(jù)自動(dòng)運(yùn)行 addslashes().
PHP教程不要對已經(jīng)被 magic_quotes_gpc 轉(zhuǎn)義過的字符串使用 addslashes(),因?yàn)檫@樣會(huì)導(dǎo)致雙層轉(zhuǎn)義.遇到這種情況時(shí)可以使用函數(shù) get_magic_quotes_gpc() 進(jìn)行檢測.
PHP教程例
PHP教程利用 get_magic_quotes_gpc()預(yù)防數(shù)據(jù)庫攻擊的正確做法
PHP教程代碼如下
PHP教程
<?php
function check_input($value)
{
// 去除斜杠
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// 如果不是數(shù)字則加引號
if (!is_numeric($value))
{
$value = “‘” . mysql_real_escape_string($value) . “‘”;
}
return $value;
}
$con = mysql_connect(“l(fā)ocalhost”, “hello”, “321″);
if (!$con)
{
die(‘Could not connect: ‘ . mysql_error());
}
// 進(jìn)行安全的 SQL
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = “SELECT * FROM users WHERE
user=$user AND password=$pwd”;
mysql_query($sql);
mysql_close($con);
?>
PHP教程總結(jié)如下:
PHP教程1. 對于magic_quotes_gpc=on的情況,
PHP教程我們可以不對輸入和輸出數(shù)據(jù)庫的字符串?dāng)?shù)據(jù)作
PHP教程addslashes()和stripslashes()的操作,數(shù)據(jù)也會(huì)正常顯示.
PHP教程如果此時(shí)你對輸入的數(shù)據(jù)作了addslashes()處理,
PHP教程那么在輸出的時(shí)候就必須使用stripslashes()去掉多余的反斜杠.
PHP教程2. 對于magic_quotes_gpc=off 的情況
PHP教程必須使用addslashes()對輸入數(shù)據(jù)進(jìn)行處理,但并不需要使用stripslashes()格式化輸出
PHP教程因?yàn)閍ddslashes()并未將反斜杠一起寫入數(shù)據(jù)庫,只是幫助mysql完成了sql語句的執(zhí)行
PHP教程以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持維易PHP!
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/1873.html