具體用法
addslashes防止SQL注入
雖然國內很多PHP程序員仍在依靠addslashes防止SQL注入
當然addslashes也不是毫無用處
另外對於php手冊中get_magic_quotes_gpc的
舉例
<?php
function post_check($post)
{
if (!get_magic_quotes_gpc()) // 判斷magic_quotes_gpc是否為打開
{
$post = addslashes($post); // 進行magic_quotes_gpc沒有打開的情況對提交數據的過濾
}
$post = str_replace("_"
$post = str_replace("%"
$post = nl
$post= htmlspecialchars($post); // html標記轉換
return $post;
}
?>
或
<?php
function inject_check($sql_str)
{
return eregi(
function verify_id($id=null)
{
if (!$id) { exit(
elseif (inject_check($id)) { exit(
elseif (!is_numeric($id)) { exit(
$id = intval($id); // 整型化
return $id;
}
?>
string mysql_real_escape_string ( string $unescaped_string [
本函數將 unescaped_string 中的特殊字符轉義
Note: mysql_real_escape_string() 並不轉義 % 和 _
mysql_real_escape_string
Example#
<?php
$item = "Zak
$escaped_item = mysql_real_escape_string ( $item );
printf ( "Escaped string: %sn"
?>
以上例子將產生如下輸出
Escaped string: Zak
mysql_escape_string
本函數將 unescaped_string 轉義
注: mysql_escape_string() 並不轉義 % 和 _
本函數和 mysql_real_escape_string() 完全一樣
例子
<?php
$item = "Zak
$escaped_item = mysql_escape_string($item);
printf ("Escaped string: %sn"
?>
輸出
Escaped string: Zak
mysql_real_escape_string和mysql_escape_string這
mysql_real_escape_string 必須在(PHP
我們可以利用判斷來綜合處理
代碼如下 function cleanuserinput($dirty){if (get_magic_quotes_gpc()) {
$clean = mysql_real_escape_string(stripslashes($dirty));
}else{
$clean = mysql_real_escape_string($dirty);
}
return $clean;
}
總結一下
* addslashes() 是強行加;
* mysql_real_escape_string() 會判斷字符集
* mysql_escape_string不考慮連接的當前字符集
From:http://tw.wingwit.com/Article/program/PHP/201311/21094.html