使用php的 str_replace()方法 在提交到服务器端时候判断 或者搜索相关的js在点击提交的时候使用客户端js判断
创新互联专注于企业营销型网站、网站重做改版、新县网站定制设计、自适应品牌网站建设、H5页面制作、成都商城网站开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为新县等各大城市提供网站开发制作服务。
用js过滤非法字符是不安全的,js是客户端技术,可以本地绕过
如果数据是入库的,最好在服务器端在过滤一次,防止恶意字符进入数据库,形成注入,可以这样过滤
?php
if (isset($_GET['price'])){
(is_numeric($_GET['price']) and is_int($_GET['price']+0))?$price=$_GET['price']:die('非int类型,请重新输入');
echo "价格为 $price";
}
?
form action=""
input type="text" name="price"
input type="submit" value="send"
/form
不过int型范围是2147483647,超出后即使是整数,也被解释为float
可以采用以下几点措施。
(1)在用户数据进入数据库之前使用addslashes()函数过滤,可以进行一些字符的转义,并过滤掉可能引起数据库问题的字符。可以使用stripslashes()将数据返回到原始形式。
(2)在php.infi中开启magic_quotes_gpc和magic_quotes_runtime指令。它们可以自动的添加和过滤斜杠,前者主要用于格式化GET,POST,和cookie变量,后者用于过滤进出数据库的数据。
(3)当在system()或者exex()函数中使用用户输入数据作为参数时,必须使用escapeshellcmd()。用来避免怀有恶意的用户强迫系统运行某些命令。
(4)可以使用stip_tags()从一个字符串中去掉HTML和PHP标记,这样可以避免用户将恶意节本植入到用户的数据中。
(5)可以使用htmlspecialchars(),可以将字符专程它们的HTML等价实体。例如,将被转换成lt; ,该函数可以将任何脚本转换成无害的字符。
总之,在使用用户的数据时,一定要小心,原则即是不要相信用户输入的任何数据,必须要进行过滤和转换。
//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
}
function stripslashes_array($array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' $key != 'argv' (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var)) {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
//--------------------------
// 替换HTML尾标签,为过滤服务
//--------------------------
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\\", "", $str);
$str = str_replace("gt", "", $str);
$str = str_replace("lt", "", $str);
$str = str_replace("SCRIPT", "", $str);
$str = str_replace("/SCRIPT", "", $str);
$str = str_replace("script", "", $str);
$str = str_replace("/script", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("br /",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);
return $str;
}
tr_replace() 函数使用一个字符串替换字符串中的另一些字符。
语法
str_replace(find,replace,string,count)
参数
描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
提示和注释
注释:该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。
注释:该函数是二进制安全的。
例子
例子 1
?php
echo str_replace("world","John","Hello world!");
?
输出:
Hello John!
例子 2
在本例中,我们将演示带有数组和 count 变量的 str_replace() 函数:
?php
$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr,$i));
echo "Replacements: $i";
?
输出:
Array
(
[0] = blue
[1] = pink
[2] = green
[3] = yellow
)
Replacements: 1
例子 3
?php
$find = array("Hello","world");
$replace = array("B");
$arr = array("Hello","world","!");
print_r(str_replace($find,$replace,$arr));
?
输出:
Array
(
[0] = B
[1] =
[2] = !
)