php开启safe_mode模式对函数的影响总结

 更新时间:2016年11月25日 15:05  点击:1254
在php中safe_mode模式为安全模式,开启后可以给网站强安全性,但同时也会对一些函数产生影响,下面我们总结了 safe_mode模式对那些具体函数有影响,有需要的朋友可参考一下。

函数名 限制

dbmopen() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
dbase_open() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。

filepro() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
filepro_rowcount() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
filepro_retrieve() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。

ifx_* sql_safe_mode 限制, (!= safe mode)
ingres_* sql_safe_mode 限制, (!= safe mode)
mysql_* sql_safe_mode 限制, (!= safe mode)
pg_loimport() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
posix_mkfifo() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。

putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。

chdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
dl() 本函数在安全模式下被禁用。
backtick operator 本函数在安全模式下被禁用。
shell_exec()(在功能上和 backticks 函数相同) 本函数在安全模式下被禁用。
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
system() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
passthru() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
popen() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
fopen() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
mkdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
rmdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
rename() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。

unlink() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
copy() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (on source and target )
chgrp() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chown() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chmod() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits
touch() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
symlink() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
link() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)

apache_request_headers() 在安全模式下,以“authorization”(区分大小写)开头的标头将不会被返回。
header() 在安全模式下,如果设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该标头的 realm 部分。
PHP_AUTH 变量 在安全模式下,变量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但无论如何,您仍然可以使用 REMOTE_USER 来获取用户名称(USER)。(注意:仅 PHP 4.3.0 以后有效)

highlight_file(), show_source() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)
parse_ini_file() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)

set_time_limit() 在安全模式下不起作用。
max_execution_time 在安全模式下不起作用。
mail() 在安全模式下,第五个参数被屏蔽

$_FILES: 经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST 方法上传

$_FILES数组内容如下:

$_FILES['myFile']['name'] 客户端文件的原名称        

$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"        

$_FILES['myFile']['size'] 已上传文件的大小,单位为字节        

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认,可以在php.ini的upload_tmp_dir 指定,但用 putenv() 函数设置是不起作用的      

$_FILES['myFile']['error'] 和该文件上传相关的错误代码,['error'] 是在 PHP 4.2.0 版本中增加的,下面是它的说明:(它们在PHP3.0以后成了常量)

    UPLOAD_ERR_OK 值:0; 没有错误发生,文件上传成功


    UPLOAD_ERR_INI_SIZE 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值            

    UPLOAD_ERR_FORM_SIZE 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值        

    UPLOAD_ERR_PARTIAL 值:3; 文件只有部分被上传                  

    UPLOAD_ERR_NO_FILE 值:4; 没有文件被上传, 值:5; 上传文件大小为0                      

注:

1. 文件被上传结束后,默认地被存储在了临时目录中,这时必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。

2. 在 PHP 4.1.0 版本以前该数组的名称为 $HTTP_POST_FILES,它并不像 $_FILES 一样是自动全局变量。PHP 3 不支持 $HTTP_POST_FILES 数组。


3. 用form上传文件时,一定要加上属性内容 enctype="multipart/form-data",否则用$_FILES[filename]获取文件信息时会报异常。


测试

 代码如下 复制代码

<html>
<body>

<form action="upload_file.php教程" method="post"
enctype="multipart/form-data">
<label for="file">filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="submit" />
</form>

</body>
</html>

php代码

 代码如下 复制代码

<?php

if ((($_files["file"]["type"] == "image/gif")
|| ($_files["file"]["type"] == "image/jpeg")
|| ($_files["file"]["type"] == "image/pjpeg"))
&& ($_files["file"]["size"] < 20000))
  {
  if ($_files["file"]["error"] > 0)
    {
    echo "error: " . $_files["file"]["error"] . "<br />";
    }
  else
    {
    echo "upload: " . $_files["file"]["name"] . "<br />";
    echo "type: " . $_files["file"]["type"] . "<br />";
    echo "size: " . ($_files["file"]["size"] / 1024) . " kb<br />";
    echo "stored in: " . $_files["file"]["tmp_name"];
    }
  }
else
  {
  echo "invalid file";
  }

?>

文件上传精简代码

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Excel数据获取演示</title>
<meta name="Keywords" content="TODO" />
<meta name="Description" content="TODO"/>
</head>
<body>
    <div>
      <div>提交表单</div>
      <div>
        <form method="POST" action="www.111cn.net/Index/parse" enctype="multipart/form-data">
            <input type="file" name="excel" value="" />
            <input type="submit" name="submit" value="提交" />
        </form>
      </div>
    </div>
</body>
</html>

public function parse()
    {
       /**
        * $_FILES数组说明
        * array(n) {
        *   ["表单文件框名称"] => array(5) {
        *       ["name"]        => 提交文件名称
        *       ["type"]        => 提交文件类型 Excel为"application/vnd.ms-excel"
        *       ["tmp_name"]    => 临时文件名称
        *       ["error"]       => 错误(0成功1文件太大超过upload_max_filesize2文件太大超过MAX_FILE3上传不完整4没有上传文件)
        *       ["size"]        => 文件大小(单位:KB)
        *   }
        * }
        */
        $return=array(0,'');
        /**
         * 判断是否提交
         * is_uploaded_file(文件名称)用于确定指定的文件是否使用POST方法上传,防止非法提交,通常和move_upload_file一起使用保存上传文件到指定的路径
         */
        if(!isset($_FILES) || !is_uploaded_file($_FILES['excel']['tmp_name']))
        {
            $return=array(1,'提交不合法');
        }
        //处理
        if(0 == $return[0])
        {
            import('@.Util.ExcelParser');
            $excel=new ExcelParser($_FILES['excel']['tmp_name']);
            $return=$excel->main();
        }
        //输出处理
        print_r($return);
?>

更多详细内容请查看:http://www.111cn.net/phper/21/4662008ae09ff36c1a029763e9dcacf2.htm

array_merge() 函数把两个或多个数组合并为一个数组。

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。

注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

 代码如下 复制代码


<?php
$a=array(3=>"Horse",4=>"Dog");
print_r(array_merge($a));
?>


 

将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

实例如下:

 代码如下 复制代码

$face = array("J","Q","K","A");
$numbered = array("2","3","4","5","6","7","8","9");
$cards = array_merge($face, $numbered);
shuffle($cards);
print_r($cards);


 

这将返回如下所示的结果,

 

 代码如下 复制代码
Array ( [0] => A [1] => 4 [2] => 9 [3] => 3 [4] => K [5] => 7 [6] => 5 [7] => Q [8] => 6 [9] => 8 [10] => 2 [11] => J )

递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间 的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为 当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一 个数组合并的形式,就是递归追加数组。其形式为:

array array_merge_recursive( array key,array values )

示例如下:

 代码如下 复制代码

<?php
$array1 = array("AA"=>"A","BB"=>"B","CC"=>"C","DD"=>"D");
$array2 = array("AA"=>"1","BB"=>"2","CC"=>"3","DD"=>"4");
$array3 = array("AA"=>"!","BB"=>"@","CC"=>"#","DD"=>"$");
$arrayX = array_merge($array1, $array2, $array3);     //合并数组
print_r($arrayX);
?>

 

连接两个数组

array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:

array array_merge(array array1,array array2[…,array arrayN])

注意,两个输入数组必须大小相同,不能为空。示例如下:

 代码如下 复制代码

<?php
$array1 = array("AA"=>"A","BB"=>"B","CC"=>"C","DD"=>"D");
$array2 = array("AA"=>"1","BB"=>"2","CC"=>"3","DD"=>"4");
$array3 = array("AA"=>"!","BB"=>"@","CC"=>"#","DD"=>"$");
$arrayX = array_merge($array1, $array2, $array3);     //合并数组
print_r($arrayX);
?>

本文章来介绍一下关于php 缓存一些基本常识,有需要的朋友可参考一上。

我们可以在HTML页面利用meta tag和PHP程序中通过header来控制.例如:

 代码如下 复制代码
    <?php
    header('Cache-Control:max-age=86400, must-revalidate');//24小时
    header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
    header('Expires:'.gmdate('D, d M Y H:i:s', time() + '86400').'GMT');
    echo '我不刷新';再写个HTML文件c.htm:<html>
    <body>
        haha,<a href=cache.php>go</a>
    </body>
</html>

     我们请求127.1/c.htm,点击链接,然后利用浏览器的回退按钮,返回c.htm,再点击链接,如下图左所示,我们发现,当添加了缓存指令后,我们无论如何来回后退和点击链接,下面的网络请求URL这一条始终为灰色,表示浏览器并没有发起实际的网络请求,而是直接调用了存储在用户电脑中的缓存页,除非缓存时间过期,在这期间,即使是实际内容改变了,浏览器也不会去重新读取我们在服务器上的资源。你可以把echo的那一句修改后,再点击,会发现网络请求仍然为灰色。在这种情况下,只有以下三种情况浏览器才会去更新缓存:
(1)缓存到期
(2)缓存被清除;
(3)F5或 ctrl+F5强制刷新。(这一点各种浏览器处理可能存在差异,我的测试环境是firefox 4)  
    当我们屏蔽上面的header指令或者改用如下代码时//告诉客户端浏览器不使用缓存,HTTP 1.1 协议

 代码如下 复制代码
header("Cache-Control: no-cache, must-revalidate");

//告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议

 代码如下 复制代码
header("Pragma: no-cache");

c1.pngc2.png

      浏览器就会在每次请求时都去服务器上读取资源。如下面右边的图所示。    在这里,我们可以大致了解下浏览器对页面的缓存处理。很容易,我们就能联想出其使用场景,有时候我们需要它缓存,有时候又不需要,你可以根据场景来使用。不过,浏览器的缓存作用是很微小的,但能省一点算一点。有时候,浏览器的缓存是很厉害的,需要我们强制刷新才能见效,比如JS文件,有时你更改了,即使刷新也是不会更改的。另,除了可以在代码中设置页面缓存,也可以在APACHE等服务器上配置,特别是静态资源,加上缓存可以有效减少不必要的请求。
    又有时,我们通常会看到<script src="link.js?d=1923454332"></script>这样的代码,在JS文件后加上问号的那一串并没有实际意义,只是为了避免JS被缓存,给JS文件加一个版本号,通常用时间戳做标记。这样浏览器就不会缓存我们的JS文件了。
    既然前端页面缓存的目的是为了减少请求,那我马上想到了另一个思路,那就是压缩数据。通过使用一些工具,可以对CSS和JS代码进行压缩。比如jquery的使用版就是经过压缩的,往往这个压缩比例还很大。通常使用jsmin,jspacker进行压缩,具体工具可以到网上搜索下。

大家可通常用的microtime()获取页面开始和结束时的时间并相减的话,计算结果是页面运行 所经历的一段时间,但这并不一定是该页面自身运行的时间
 代码如下 复制代码

<?php
//实例:计算页面运行时加载时间
//分析:页面打开时获取一个时间,加载完成时获取一个时间,运行时间即二者之差

//1.自定义函数
function fn(){
 list($a,$b) = explode(' ',microtime()); //获取并分割当前时间戳和微妙数,赋值给变量
 return $a+$b;
}

//2.获取开始时间
$start_time = fn();
//5.加载过程
for($i=0;$i<10000000;$i++){
 // do nothing;
}

//3.获取结束时间
$end_time = fn();

//4.计算差值
echo $end_time-$start_time;

//5.格式化输出
echo '<br />';
$t = $end_time-$start_time;
echo round($t,2);

?>

使用microtime()获取页面开始和结束时的时间并相减的话,计算结果是页面运行
所经历的一段时间,但这并不一定是该页面自身运行的时间。因为可能存在多个PHP脚
本页面共同执行的情况,所以我觉得那个方法是不准确的


下面从网上找到一个关于php中计算页面程序运行时间的实例有需要的朋友可参考一下。

最近写了一个程序运行的时间计算类,供大家参考:

 代码如下 复制代码
class Timer { 
    private $StartTime = 0;//程序运行开始时间
    private $StopTime  = 0;//程序运行结束时间
    private $TimeSpent = 0;//程序运行花费时间
    function start(){//程序运行开始
        $this->StartTime = microtime(); 
    } 
    function stop(){//程序运行结束
        $this->StopTime = microtime(); 
    } 
    function spent(){//程序运行花费的时间
        if ($this->TimeSpent) { 
            return $this->TimeSpent; 
        } else {
         list($StartMicro, $StartSecond) = explode(" ", $this->StartTime);
         list($StopMicro, $StopSecond) = explode(" ", $this->StopTime);
            $start = doubleval($StartMicro) + $StartSecond;
            $stop = doubleval($StopMicro) + $StopSecond;
            $this->TimeSpent = $stop - $start;
            return substr($this->TimeSpent,0,8)."秒";//返回获取到的程序运行时间差
        } 
    } 

$timer = new Timer(); 
$timer->start();
//...程序运行的代码
$timer->stop();
echo "程序运行时间为:".$timer->spent();

再看简化程序 计算页面加载时间

 代码如下 复制代码


<?php
class runtime
{
        var $StartTime = 0;
        var $StopTime = 0;
        function get_microtime()
        {
                list($usec, $sec) = explode(' ', microtime());
                return ((float)$usec (float)$sec);
        }
       
        function start()
        {
                $this->StartTime = $this->get_microtime();
        }
       
        function stop()
        {
                $this->StopTime = $this->get_microtime();
        }
       
        function spent()
        {
                return round(($this->StopTime - $this->StartTime) * 1000, 1);
        }
}

//实例开始
$runtime= new runtime;
$runtime->start();
//你的代码开始
$a = 0;
for($i=0; $i<1000000; $i )
{
        $a = $i;
}
//你的代码结束
$runtime->stop();
echo "页面执行时间: ".$runtime->spent()." 毫秒";
?>

[!--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
  • 学习JavaScript设计模式之装饰者模式

    这篇文章主要为大家介绍了JavaScript设计模式中的装饰者模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下...2016-01-21
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • javascript设计模式之解释器模式详解

    神马是“解释器模式”?先翻开《GOF》看看Definition:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。在开篇之前还是要科普几个概念: 抽象语法树: 解释器模式并未解释如...2014-06-07
  • Postgresql 如何选择正确的关闭模式

    这篇文章主要介绍了Postgresl 如何选择正确的关闭模式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
  • C++中 Sort函数详细解析

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

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07
  • php中的foreach函数的2种用法

    Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • 如何开启mysql中的严格模式

    很多集成的PHP环境(PHPnow WAMP Appserv等)自带的MySQL貌似都没有开启MySQL的严格模式,何为MySQL的严格模式,简单来说就是MySQL自身对数据进行严格的校验(格式、长度、类型等),比如一个整型字段我们写入一个字符串类型的数...2013-10-04
  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08