PHP防注入函数代码总结

 更新时间:2016年11月25日 15:23  点击:2026
在php中防注入一般会写一个全局文件用来过滤特殊的字符串,本文章来总结了各种各样的php防注入函数代码,同时还可防sql注入大家可参考。

为了安全,我们常用到下面的函数来过滤一些传递过来的非法字符:

PHP防注入函数

 代码如下 复制代码

<?php
//要过滤的非法字符
$ArrFiltrate=array(“‘”,”;”,”union”,”select”,”delete”,”‘”,”or”,”and”,”=”);
//出错后要跳转的url,不填则默认前一页
$StrGoUrl=”";
//是否存在数组中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$StrFiltrate)){
return true;
}
}
return false;
}
//合并$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
}
//验证开始
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
if (empty($StrGoUrl)){
echo “<script language=”javascript”>history.go(-1);</script>”;
}else{
echo “<script language=”javascript”>window.location=”".$StrGoUrl.””;</script>”;
}
exit;
}
}

再看一个实例与上面差不多,这个是dz论坛使用的方法

 代码如下 复制代码

 

$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}


function daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}

最后发一加强版的

 代码如下 复制代码

<?php
$field = explode(',', $data);
array_walk($field, array($this, 'add_special_char'));
$data = implode(',', $field);
/**
 * 对字段两边加反引号,以保证数据库安全
 * @param $value 数组值
 */
public function add_special_char(&$value) {
 if('*' == $value || false !== strpos($value, '(') || false !== strpos($value, '.') || false !== strpos ( $value, '`')) {
  //不处理包含* 或者 使用了sql方法。
 } else {
  $value = '`'.trim($value).'`';
 }
 return $value;
}
function str_filter($str) {
 $str = htmlspecialchars ( $str );
 if (! get_magic_quotes_gpc ()) {
  $str = addslashes ( $str );
 }
 //过滤危险字符
 return preg_replace ( "/["'=]|(and)|(or)|(create)|(update)|(alter)|(delete)|(insert)|(load_file)|(outfile)|(count)|(%20)|(char)/i", "", $str );
}
/*
函数名称:str_check()
函数作用:对提交的字符串进行过滤
参  数:$var: 要处理的字符串
返 回 值:返回过滤后的字符串
*/
function str_check($str) {
 if (! get_magic_quotes_gpc ()) { // 判断magic_quotes_gpc是否打开
  $str = addslashes ( $str ); // 进行过滤
 }
 $str = str_replace ( "_", "_", $str ); // 把 '_'过滤掉
 $str = str_replace ( "%", "%", $str ); // 把 '%'过滤掉
 return $str;
}

/*
函数名称:post_check()
函数作用:对提交的编辑内容进行处理
参  数:$post: 要提交的内容
返 回 值:$post: 返回过滤后的内容
*/
function post_check($post) {
 if (! get_magic_quotes_gpc ()) { // 判断magic_quotes_gpc是否为打开
  $post = addslashes ( $post ); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
 }
 $post = str_replace ( "_", "_", $post ); // 把 '_'过滤掉
 $post = str_replace ( "%", "%", $post ); // 把 '%'过滤掉
 $post = nl2br ( $post ); // 回车转换
 $post = htmlspecialchars ( $post ); // html标记转换
 return $post;
}
/*
函数名称:inject_check()
函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全
参  数:$sql_str: 提交的变量
返 回 值:返回检测结果,ture or false
*/
function inject_check($sql_str) {
 return eregi('select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile', $sql_str);     // 进行过滤
}

/*
函数名称:verify_id()
函数作用:校验提交的ID类值是否合法
参  数:$id: 提交的ID值
返 回 值:返回处理后的ID
*/
function verify_id($id=null) {
 if (!$id) { exit('没有提交参数!'); }     // 是否为空判断
 elseif (inject_check($id)) { exit('提交的参数非法!'); }     // 注射判断
 elseif (!is_numeric($id)) { exit('提交的参数非法!'); }     // 数字判断
 $id = intval($id);     // 整型化

 return   $id;
}

// $rptype = 0 表示仅替换 html标记
// $rptype = 1 表示替换 html标记同时去除连续空白字符
// $rptype = 2 表示替换 html标记同时去除所有空白字符
// $rptype = -1 表示仅替换 html危险的标记
function HtmlReplace($str, $rptype = 0) {
 $str = stripslashes ( $str );
 if ($rptype == 0) {
  $str = htmlspecialchars ( $str );
 } else if ($rptype == 1) {
  $str = htmlspecialchars ( $str );
  $str = str_replace ( " ", ' ', $str );
  $str = ereg_replace ( "[rnt ]{1,}", ' ', $str );
 } else if ($rptype == 2) {
  $str = htmlspecialchars ( $str );
  $str = str_replace ( " ", '', $str );
  $str = ereg_replace ( "[rnt ]", '', $str );
 } else {
  $str = ereg_replace ( "[rnt ]{1,}", ' ', $str );
  $str = eregi_replace ( 'script', 'script', $str );
  $str = eregi_replace ( "<[/]{0,1}(link|meta|ifr|fra)[^>]*>", '', $str );
 }
 return addslashes ( $str );
}
//递归ddslashes
function daddslashes($string, $force = 0, $strip = FALSE) {
 if (! get_magic_quotes_gpc () || $force) {
  if (is_array ( $string )) {
   foreach ( $string as $key => $val ) {
    $string [$key] = daddslashes ( $val, $force );
   }
  } else {
   $string = addslashes ( $strip ? stripslashes ( $string ) : $string );
  }
 }
 return $string;
}

//递归stripslashes
function dstripslashes($string) {
 if (is_array ( $string )) {
  foreach ( $string as $key => $val ) {
   $string [$key] = $this->dstripslashes ( $val );
  }
 } else {
  $string = stripslashes ( $string );
 }
 return $string;
}
/**
 * 安全过滤函数
 * @param $string 要过滤的字符串
 * @return string 返回处理过的字符串
 */
function safe_replace($string) {
 $string = str_replace('%20','',$string);
 $string = str_replace('%27','',$string);
 $string = str_replace('%2527','',$string);
 $string = str_replace('*','',$string);
 $string = str_replace('"','&quot;',$string);
 $string = str_replace("'",'',$string);
 $string = str_replace('"','',$string);
 $string = str_replace(';','',$string);
 $string = str_replace('<','&lt;',$string);
 $string = str_replace('>','&gt;',$string);
 $string = str_replace("{",'',$string);
 $string = str_replace('}','',$string);
 return $string;
}

/**
 * 使用htmlspecialchars处理字符串或数组
 * @param $obj 需要处理的字符串或数组
 * @return mixed 返回经htmlspecialchars处理过的字符串或数组
 */
function new_htmlspecialchars($string) {
 if(!is_array($string))
 return htmlspecialchars($string);
 foreach($string as $key => $val)
 $string[$key] = new_htmlspecialchars($val);
 return $string;
}

//处理禁用HTML但允许换行的内容
function TrimMsg($msg) {
 $msg = trim ( stripslashes ( $msg ) );
 $msg = nl2br ( htmlspecialchars ( $msg ) );
 $msg = str_replace ( "  ", "&nbsp;&nbsp;", $msg );
 return addslashes ( $msg );
}

本文章是先自己自定义复杂MD5加密函数对密码进行加密,然后再由系统的md5加密程序进行加密,下面我来介绍一下实现方法。

虽然说md5的密文是有限的,不过其数量为6.3340286662973277706162286946812e+49 ,如果对这个数字没感觉,你可以想象一下一亿的五次方再乘个几千万就差不多了。。。。。

以前接触过不少程序(当菜鸟黑客的那段时光……),大部分程序加密方式都是“md5”,而且是纯加密,本来这也没有错,以为md5算法毕竟没有被破解,但是随着特征字符串的收集,使用纯md5加密已经越来越危险。

自己写程序一般习惯加上特征字符串再MD5,自以为万无一失,但是今天发现cmd5居然可以破解这种加密方式,当然前提是要知道特征字符串,虽然我的更为复杂,不过出于防范心理,还是对加密函数进行了复杂化。

 代码如下 复制代码
function md123($sstr)
{
$md_asc=”";
$mds=md5(“qwEqw”.$sstr.”2ddsdf”);
$mds=md5(“rtrTtyr”.$mds.”zcv34r”);
for($i=1;$i< strlen($mds);$i++){
$md_asc.=168/ord(substr($mds,$i,1));
}
return md5($md_asc);
}

这样通过随即字符串和ascii ,使密码安全性得到进一步提高,在通过ord的时候,一个简单的1已经被转换成了一下字符:

1.73195876288662.94736842105261.66336633663373.1111

1111111113.23076923076923.16981132075471.731958762

88661.683.42857142857142.94736842105261.681.681.6470

5882352943.11111111111111.66336633663372.94736842

105263.42857142857141.66336633663373.1698113207547

3.16981132075473.11111111111111.69696969696971.681.7

1428571428573.16981132075471.71428571428573.294117

64705881.681.64705882352941.69696969696971.64705882

352946ccc2eceada95b64bc7f55c07c2a6af6

这样再进行MD5加密,就安全了,如果这样还被破解了,那就用面条上吊吧

本文章来给大家介绍一下关于KindEditor上传解析漏洞/列目录/内容漏洞分析,有需要的朋友快速补上吧。

Kindeditor漏洞 编辑代码内容被执行

kindeditor漏洞描述:在kindeditor编辑代码添加到数据库时没有任何问题,也就是一些HTML代码不会被执行,例如:<a href="#">web编程</a>,这样的代码在首次编辑的时候没有被执行。但是,从数据库里取出来再放到kindeditor里进行修改的时候问题就出现了,这行HTML代码被执行了,结果这样:web编程 变成了超链接的形式。
 
解决办法:先看下面这张图
  Kindeditor漏洞 编辑代码内容被执行


这张图是本站后台代码文件,我将从数据库里取出来的内容中的“&”进行了替换,替换成了实体“&amp;”。然后你再取修改之前插入的代码,就可以正常显示了。
 
特别注意:上图中我使用的是PHP语言来修改的,其他服务器端脚本语言思想是一样的,进行替换。


KindEditor上传解析漏洞

影响版本:<= kindeditor 3.2.1(09年8月份发布的最新版)

漏洞利用:利用windows 2003 IIS解析漏洞拿WEBSHELL

 
KindEditor列目录漏洞

测试版本:KindEditor 3.4.2    KindEditor 3.5.5

1.1.http://netknight.in/67cms/kindeditor/php/file_manager_json.php?path=/  
2. //path=/,爆出绝对路径D:AppServwww67cmskindeditorphpfile_manager_json.php  
3. 2.http://netknight.in/67cms/kindeditor/php/file_manager_json.php?path=AppServ/www/67cms/  
4. //根据爆出的绝对路径,修改path的值为AppServ/www/67cms/  
5. 这时将遍历d:/AppServ/www/67cms/下的所有文件和文件名  


上传修改拿shell漏洞

影响版本:
KindEditor 3.5.2~4.1

漏洞利用:
打开编辑器,将一句话改名为1.jpg   上传图片,
打开文件管理,进入“down”目录,跳至尾页,最后一个图片既是我们上传的一句话
点击改名

点击改名
 
 
 
打开谷歌浏览器的 审查元素
 
 
 
找到form表单

 
 
 
修改“jpg”为“asp”
 
 
 
名字修改为1  保存
 
 

如果你要生成单词验证码我们必须一个己经做好的单词库了,下面我给大家准备了一个txt文件,这里面放了大量的单词,我们只要生成时随便读到生成就KO了。

具体

 代码如下 复制代码

$width=145;
$height = 45;
        
$authcode = vcaptcha_read_code('words.txt') ;
        
$bg = 'bg/captcha_bg3.jpg';
        
$img_type   = 'png';
        
/* 验证码长度 */
$letters = strlen($authcode);
        
$img_bg    = (function_exists('imagecreatefromjpeg') && ((imagetypes() & IMG_JPG) > 0)) ?
                imagecreatefromjpeg($bg) : imagecreatefromgif($bg);
$bg_width  = imagesx($img_bg);
$bg_height = imagesy($img_bg);
        
$img_org   = ((function_exists('imagecreatetruecolor')) && PHP_VERSION >= '4.3') ?
              imagecreatetruecolor($width, $height) : imagecreate($width, $height);
        
/* 将背景图象复制原始图象并调整大小 */
if (function_exists('imagecopyresampled') && PHP_VERSION >= '4.3') // GD 2.x
{
    imagecopyresampled($img_org, $img_bg, 0, 0, 0, 0, $width, $height, $bg_width, $bg_height);
}
else // GD 1.x
{
    imagecopyresized($img_org, $img_bg, 0, 0, 0, 0, $width, $height, $bg_width, $bg_height);
}
imagedestroy($img_bg);
        
$clr = imagecolorallocate($img_org, 255, 255, 255);
        
/* 绘制边框 */
imagerectangle($img_org, 0, 0, $width - 1, $height - 1, $clr);
        
/* 获得验证码的高度和宽度 */
$x = ($width - (imagefontwidth(5) * $letters)) / 2;
$y = ($height - imagefontheight(5)) / 2;
imagestring($img_org, 5, $x, $y, $authcode, $clr);
        
header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
        
// HTTP/1.1
header('Cache-Control: private, no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0, max-age=0', false);
        
// HTTP/1.0
header('Pragma: no-cache');
if ($img_type == 'jpeg' && function_exists('imagecreatefromjpeg'))
{
    header('Content-type: image/jpeg');
    imageinterlace($img_org, 1);
    imagejpeg($img_org, false, 95);
}
else
{
    header('Content-type: image/png');
    imagepng($img_org);
}
        
imagedestroy($img_org);
        
function vcaptcha_read_code($wordlist_file)
{
    $fp = @fopen($wordlist_file, 'rb');
    if (!$fp) return false;
        
    $fsize = filesize($wordlist_file);
    if ($fsize < 32) return false; // too small of a list to be effective
        
    if ($fsize < 128) {
        $max = $fsize; // still pretty small but changes the range of seeking
    } else {
        $max = 128;
    }
        
    fseek($fp, rand(0, $fsize - $max), SEEK_SET);
    $data = fread($fp, 128); // read a random 128 bytes from file
    fclose($fp);
    $data = preg_replace("/r?n/", "n", $data);
        
    $start = strpos($data, "n", rand(0, 100)) + 1; // random start position
    $end   = strpos($data, "n", $start);           // find end of word
        
    return strtolower(substr($data, $start, $end - $start)); // return substring in 128 bytes
}

使用方法:

 代码如下 复制代码

<img id="captcha_img" title="PHP脚本生成单词验证码" alt="PHP脚本生成单词验证码"  src="http://www.111cn.net" onClick="clickImg()"/>

将这段代码复制到HTML里,就可以了。还有这个的getCode函数是为了让用户看不清验证码,点击可以切换,JavaScript脚本如下:

<script type="text/javascript">
function clickImg()
{
  var imgCode ="http://www.111cn.net/ "+Math.random();
  document.getElementById("captcha_img").setAttribute('src',imgCode);
}
</script>

http://file.111cn.net/upload/mbdown/pic/2013/06/26/13659538282901.txt  这是单词库大家可下载。

在php中有一个普通模式与安全模式了,现在大多数据用户都是直接使用应用程序的php普通模式了,因为安全模式配置之后有很多功能受到了限制,下面我来给大家具体讲述安全模式配置方法。

当安全模式打开的时候,以下函数列表的功能将会受到限制:

chdir , move_uploaded_file,  chgrp,  parse_ini_file,  chown,  rmdir,  copy,  rename,  fopen,  require,  highlight_file,  show_source,  include,  symlink,  link,  touch,  mkdir,  unlink

同样的,一些php扩展中的函数也将会受到影响。(加载模块:在安全模式下dl函数将被禁止,如果要加载扩展的话,只能修改php.ini中的扩展选项,在php启动的时候加载)

在php安全模式打开的时候,需要执行操作系统程序的时候,必须是在safe_mode_exec_dir选项指定目录的程序,否则执行将失败。即使允许执行,那么也会自动的传递给escapeshellcmd函数进行过滤。

以下执行命令的函数列表将会受到影响:

exec, shell_exec, passthru, system, popen

另外,背部标记操作符(`)也将被关闭。

当运行在安全模式下,虽然不会引起错误,但是 putenv 函数将无效。同样的,其他一些尝试改变php环境变量的函数set_time_limit, set_include_path等也将被忽略。

1、所有输入输出函数(例如fopen()、file()和require())的适用会受到限制,只能用于与调用这些函数的脚本有相同拥有者的文件。例如,假定启用了安全模式,如果Mary拥有的脚本调用fopen(),尝试打开由Jonhn拥有的一个文件,则将失败。但是,如果Mary不仅拥有调用 fopen()的脚本,还拥有fopen()所调用的文件,就会成功。
2、如果试图通过函数popen()、system()或exec()等执行脚本,只有当脚本位于safe_mode_exec_dir配置指令指定的目录才可能。
3、HTTP验证得到进一步加强,因为验证脚本用于者的UID划入验证领域范围内。此外,当启用安全模式时,不会设置PHP_AUTH。
4、如果适用MySQL数据库服务器,链接MySQL服务器所用的用户名必须与调用mysql_connect()的文件拥有者用户名相同。


1) 打开php的安全模式

  php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),
  同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,
  但是默认的php.ini是没有打开安全模式的,我们把它打开:
  safe_mode = on


(2) 用户组安全

  当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同
  组的用户也能够对文件进行访问。
  建议设置为:

  safe_mode_gid = off

  如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要
  对文件进行操作的时候。


(3) 安全模式下执行程序主目录

  如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:

  safe_mode_exec_dir = D:/usr/bin

  一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,
  然后把需要执行的程序拷贝过去,比如:

  safe_mode_exec_dir = D:/tool/exe

  但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录:

  safe_mode_exec_dir = D:/usr/www


(4) 安全模式下包含文件

  如果要在安全模式下包含某些公共文件,那么就修改一下选项:

  safe_mode_include_dir = D:/usr/www/include/

  其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。


  (5) 控制php脚本能访问的目录

  使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问
  不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录:

  open_basedir = D:/usr/www


(6) 关闭危险函数

  如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,
我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php信息的
  phpinfo()等函数,那么我们就可以禁止它们:

  disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

  如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作


disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,

copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

  以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,
  就能够抵制大部分的phpshell了。


(7) 关闭PHP版本信息在http头中的泄漏

  我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中:

  expose_php = Off

  比如黑客在 telnet www.target.com 80 的时候,那么将无法看到PHP的信息。


(8) 关闭注册全局变量

  在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,
  这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:
  register_globals = Off
  当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,
  那么就要用$_GET['var']来进行获取,这个php程序员要注意。


(9) 打开magic_quotes_gpc来防止SQL注入

  SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,

  所以一定要小心。php.ini中有一个设置:

  magic_quotes_gpc = Off

  这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,
  比如把 ' 转为 '等,这对防止sql注射有重大作用。所以我们推荐设置为:

  magic_quotes_gpc = On

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08