function.list.php
把这个文件放在smarty目录的plugins目录,这个插件就可以使用了。
然后我们来编写主程序文件
require_once 'Smarty.class.php';
$smarty=&new Smarty();
$smarty->display('test.html');
?>
最后我们来设计模板文件 test.html
{* 调用我们刚编写的插件 *}
{list assign="datas" sql="select name from user" limit=6}
{section name=i loop=$datas}
{$smarty.section.i.index+1}. 姓名:{$datas[i].name}
{/section}
引用
function smarty_function_list($params, &$smarty)
{
$sql = $params['sql'];
$assign = $params['assign'];
$limit = $params['limit'];
$conn = mysql_connect("localhost","root","");
mysql_select_db("test");
//可用smarty 实例化 db 操作类
$r = mysql_query($sql." limit $limit");
while($row=mysql_fetch_array($r)){
$data[] = $row;
}
$smarty->assign($assign,$data); // 自赋值
}
?>
{
$sql = $params['sql'];
$assign = $params['assign'];
$limit = $params['limit'];
$conn = mysql_connect("localhost","root","");
mysql_select_db("test");
//可用smarty 实例化 db 操作类
$r = mysql_query($sql." limit $limit");
while($row=mysql_fetch_array($r)){
$data[] = $row;
}
$smarty->assign($assign,$data); // 自赋值
}
?>
把这个文件放在smarty目录的plugins目录,这个插件就可以使用了。
然后我们来编写主程序文件
require_once 'Smarty.class.php';
$smarty=&new Smarty();
$smarty->display('test.html');
?>
最后我们来设计模板文件 test.html
{* 调用我们刚编写的插件 *}
{list assign="datas" sql="select name from user" limit=6}
{section name=i loop=$datas}
{$smarty.section.i.index+1}. 姓名:{$datas[i].name}
{/section}
<?php
function check_file($file,$type=false)
{
$fp = fopen($file, "rb");
$bin = fread($fp, 2); //只读2字节
fclose($fp);
$str_info = @unpack("C2chars", $bin);
$type_code = intval($str_info['chars1'].$str_info['chars2']);
$file_type = '';
switch ($type_code) {
case 7790:
$file_type = 'exe';
break;
case 7784:
$file_type = 'midi';
break;
case 8075:
$file_type = 'zip';
break;
case 8297:
$file_type = 'rar';
break;
case 255216:
$file_type = 'jpg';
break;
case 7173:
$file_type = 'gif';
break;
case 6677:
$file_type = 'bmp';
break;
case 13780:
$file_type = 'png';
break;
default:
$file_type = 'unknown';
break;
}
if ($type==false)
return $file_type;
else
return $type_code;
}
?>
function check_file($file,$type=false)
{
$fp = fopen($file, "rb");
$bin = fread($fp, 2); //只读2字节
fclose($fp);
$str_info = @unpack("C2chars", $bin);
$type_code = intval($str_info['chars1'].$str_info['chars2']);
$file_type = '';
switch ($type_code) {
case 7790:
$file_type = 'exe';
break;
case 7784:
$file_type = 'midi';
break;
case 8075:
$file_type = 'zip';
break;
case 8297:
$file_type = 'rar';
break;
case 255216:
$file_type = 'jpg';
break;
case 7173:
$file_type = 'gif';
break;
case 6677:
$file_type = 'bmp';
break;
case 13780:
$file_type = 'png';
break;
default:
$file_type = 'unknown';
break;
}
if ($type==false)
return $file_type;
else
return $type_code;
}
?>
echo check_file('2.jpg')
返回 jpg, 如果不是可能就是挂马了哦,
echo check_file('2.jpg',1)
用于测试未知的文件类型, 我这里是想用在ckeditor的图片自动上传
<!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" xml:lang="zh-cn"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSS代码格式化和加密化</title>
</head>
<body sytle="marign:0px auto;">
<script language="JavaScript">
<!--
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == "string")
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
//CSS代码格式化和加密化
function CSSencode(code)
{
code = code.replace(/\n/ig,"");
code = code.replace(/(\s){2,}/ig,"$1");
code = code.replace(/\t/ig,"");
code = code.replace(/\n\}/ig,"\}");
code = code.replace(/\n\{\s*/ig,"\{");
code = code.replace(/(\S)\s*\}/ig,"$1\}");
code = code.replace(/(\S)\s*\{/ig,"$1\{");
code = code.replace(/\{\s*(\S)/ig,"\{$1");
return code;
}
function CSSdecode(code)
{
code = code.replace(/(\s){2,}/ig,"$1");
code = code.replace(/(\S)\s*\{/ig,"$1\n{");
code = code.replace(/\*\/(.[^\}\{]*)}/ig,"\*\/\n$1}");
code = code.replace(/\/\*/ig,"\n\/\*");
code = code.replace(/;\s*(\S)/ig,";\n\t$1");
code = code.replace(/\}\s*(\S)/ig,"\}\n$1");
code = code.replace(/\n\s*\}/ig,"\n\}");
code = code.replace(/\{\s*(\S)/ig,"\{\n\t$1");
code = code.replace(/(\S)\s*\*\//ig,"$1\*\/");
code = code.replace(/\*\/\s*([^\}\{]\S)/ig,"\*\/\n\t$1");
code = code.replace(/(\S)\}/ig,"$1\n\}");
code = code.replace(/(\n){2,}/ig,"\n");
return code;
}
//-->
</script>
<h3>CSS代码格式化和加密化</h3>
<hr style="width:600px;text-align:left;" />
<textarea name="" rows="" cols="" style="width:600px;height:300px;" id="code">
/*请将CSS代码复制到这里*/
input,button {
height:20px;
background-color: #ffffff;
/*border:1px solid #333333;*/ }
</textarea>
<br>
<input type="submit" onclick="$('code').value = CSSdecode($('code').value);" value="格式化">
<input type="submit" onclick="$('code').value = CSSencode($('code').value);" value="加密化" />
<br>
</body>
</html>
一个很经典的JS闭包代码
<!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>无标题文档</title>
</head>
<body>
<ul id="ulMenu">
<li>
<a href="#" id="url6">
<span id="span6"></span></a></li>
<li>
<a href="#" id="url5">
<span id="span5"></span></a></li>
<li>
<a href="#" id="url4">
<span id="span4"></span></a></li>
<li>
<a href="#" id="url3">
<span id="span3"></span></a></li>
<li>
<a href="#" id="url2">
<span id="span2"></span></a></li>
<li>
<a href="#" id="url1">
<span id="span1"></span></a></li>
<li>
<a href="#" id="url0">
<span id="span0"></span></a>
</li>
</ul>
<script language="JavaScript">
function $(objid)
{
return document.getElementById(objid);
};
var arrurl = [];
arrurl[0] = [];
arrurl[1] = [];
arrurl[0][0] = "首页";
arrurl[0][1] = "需求评价";
arrurl[0][2] = "可研评价";
arrurl[0][3] = "合同审核";
arrurl[0][4] = "执行监管";
arrurl[0][5] = "验收评价";
arrurl[0][6] = "后评估";
arrurl[1][0] = "webmain.aspx";
arrurl[1][1] = "../request/frm_req.aspx?menu=top";
arrurl[1][2] = "../feasib/frm_feasib.aspx";
arrurl[1][3] = "../contract/lst_contract.aspx";
arrurl[1][4] = "4";
arrurl[1][5] = "3";
arrurl[1][6] = "2";
for(var i = 0; i < ulMenu.childNodes.length ; i++)
{
(function(){
var stxt,surl;
stxt = arrurl[0][i];
surl = arrurl[1][i];
$('span' + i).innerText = stxt;
$('url' + i).onclick = function() {alert(surl);} //这里
})();
// () () 构造闭环
}
</script>
</body>
</html>
<!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>无标题文档</title>
</head>
<body>
<ul id="ulMenu">
<li>
<a href="#" id="url6">
<span id="span6"></span></a></li>
<li>
<a href="#" id="url5">
<span id="span5"></span></a></li>
<li>
<a href="#" id="url4">
<span id="span4"></span></a></li>
<li>
<a href="#" id="url3">
<span id="span3"></span></a></li>
<li>
<a href="#" id="url2">
<span id="span2"></span></a></li>
<li>
<a href="#" id="url1">
<span id="span1"></span></a></li>
<li>
<a href="#" id="url0">
<span id="span0"></span></a>
</li>
</ul>
<script language="JavaScript">
function $(objid)
{
return document.getElementById(objid);
};
var arrurl = [];
arrurl[0] = [];
arrurl[1] = [];
arrurl[0][0] = "首页";
arrurl[0][1] = "需求评价";
arrurl[0][2] = "可研评价";
arrurl[0][3] = "合同审核";
arrurl[0][4] = "执行监管";
arrurl[0][5] = "验收评价";
arrurl[0][6] = "后评估";
arrurl[1][0] = "webmain.aspx";
arrurl[1][1] = "../request/frm_req.aspx?menu=top";
arrurl[1][2] = "../feasib/frm_feasib.aspx";
arrurl[1][3] = "../contract/lst_contract.aspx";
arrurl[1][4] = "4";
arrurl[1][5] = "3";
arrurl[1][6] = "2";
for(var i = 0; i < ulMenu.childNodes.length ; i++)
{
(function(){
var stxt,surl;
stxt = arrurl[0][i];
surl = arrurl[1][i];
$('span' + i).innerText = stxt;
$('url' + i).onclick = function() {alert(surl);} //这里
})();
// () () 构造闭环
}
</script>
</body>
</html>
Linux下rar命令详解
用法: rar <命令> -<选项1> ….-<选项N> <操作文档> <文件…> <@文件列表…> <解压路径>
a 添加文件到压缩文件
c 添加压缩文件注释
cf 添加文件注释
cw 写入压缩文件注释到文件
d 删除压缩文件中的文件
e 解压压缩文件到当前目录
f 刷新压缩文件中的文件
i[参数]=<串> 在压缩文件中查找字符串
k 锁定压缩文件
l[t,b] 列出压缩文件[技术信息,简洁]
m[f] 移动到压缩文件[仅对文件]
p 打印文件到标准输出设备
r 修复压缩文件
rc 重建丢失的卷
rn 重命名压缩文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[名字|-] 转换压缩文件为自解压格式或转换回压缩文件
t 测试压缩文件
u 更新压缩文件中的文件
v[t,b] 详细列出压缩文件[技术信息,简洁]
x 用绝对路径解压文件
示例:
1、rar a file file.ext
如果file.rar不存在将创建file.rar文件;如果file.rar压缩包中已有file.ext,将更新压缩包中的file.ext;还可用d:\*.ext代替file.ext将d盘下所有ext文件(不包括自文件夹)添加到压缩包中。
2、rar a -r -v2000 -s -sfx -rr file
从当前文件夹和子文件夹压缩全部文件成为 2000000 字节大小、固实的、分卷自解压文件 file.part1.exe,file.part2.rar,file.part3.rar 等,并在每一个分卷中添加恢复记录;将命令a换成命令m可将文件压缩后删除
3、rar x Fonts *.ttf
会从压缩文件解压 *.ttf 字体文件到当前文件夹,但下面命令:
rar x Fonts *.ttf NewFonts\
会从压缩文件解压 *.ttf 字体文件到文件夹 NewFont
4、rar a -pZaBaToAd -r secret games\*.*
使用密码 ZaBaToAd 来将文件夹“games”的内容添加到压缩文件“secret”
5、rar a -r a.rar a/
递归的将a/下所有东西压缩到a.rar
rar常用命令主要有
a 添加文件到操作文档
例:rar a test.rar file1.txt 若test.rar文件不存在,则打包file1.txt文件成test.rar
例:rar a test.rar file2.txt 若test.rar文件已经存在,则添加file2.txt文件到test.rar中
(这样test.rar中就有两个文件了)
注,如果操作文档中已有某文件的一份拷贝,则a命令更新该文件,对目录也可以进行操作
例:rar a test.rar dir1
c 对操作文档添加说明注释
rar c test.rar
(会出现Reading comment from stdin字样,然后输入一行或多行注释,以ctrl+d结束)
cf 添加文件注释,类似上面的c,不过这个是对压缩文档中每个文件进行注释
cw 将文档注释写入文件
例:rar cw test.rar comment.txt
d 从文档中删除文件
例:rar d test.rar file1.txt
e 将文件解压到当前目录
例:rar e test.rar
注:用e解压的话,不仅原来的file1.txt和file2.txt被解压到当前目录,就连dir1里面的所有文件
也被解压到当前目录下,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压
k 锁定文档
例:rar k test.rar 锁定文档后,该文档就无法进行任何更新操作了
r 修复文档
例:rar r test.rar
当rar文件有问题时,可以尝试用该命令进行修复(鬼知道有多少用)
s 转换文档成自解压文档
例:rar s test.rar
会生成一个test.sfx的可执行文档,运行它的效果就相当于rar x test.rar,
适合于向没有rar的用户传输文件
t 检测文档
例:rar t test.rar
检测test.rar的完整性,一般压缩完大型文件准备传输前最好用这个命令来确保文件的正确性
x 带路径解压文档中内容到当前目录
例:rar x test.rar
这样解压的话,dir1就会保持原来的目录结构
以上就是rar的常用命令,一个rar操作只能有一个命令,而选项却可以有多个。
------------------------------------------------------------------------
rar选项有很多,在此无法一一说明,只示范经常使用的几个
cl 将文件名转换为小写
cu 将文件名转换为大写
例:rar a -cl test.rar FILe.txt
FILe.txt在添加进test.rar之后,变为file.txt
df 文档操作后删除源文件
例:rar a -df test.rar file1.txt file2.txt dir1
将file1.txt,file2.txt,dir1压缩到test.rar中之后,删除源文件
ed 不添加空目录
例:rar a -ed test.rar dir1
添加dir1到test.rar中时,不对空目录进行操作
rar e -ed test.rar
解压test.rar时,不生成空目录
k 锁定文件
例:rar a -k test.rar file1.txt
等价于rar a test.rar file1.txt
rar k test.rar
m<0..5> 设定压缩比等级(0-存储,3-默认,5-最大)
例:rar a -m0 test.rar dir1 dir2
将dir1,dir2打包存储到test.rar,不进行实质上的压缩(速度奇快,适合于对无甚可压的文件进行操作
比如avi,jpg等)
rar a -m5 test.rar *.txt *.bmp
将当前目录下的txt文件和bmp文件打包压缩到test.rar中,使用最大压缩比(最慢)
ms[ext;ext] 特定文件采用非压缩方式
例:rar a -m5 -ms avi;jpg;jpeg test.rar /home
将home目录下所有目录和文件归档到test.rar,采用最大压缩,但avi,jpg,jpeg文件不进行压缩
(只是打包进test.rar,因为这些文件即使用最大压缩也压不了多少,不如直接打包节省时间)
o+ 覆盖已有文件
o- 不覆盖已有文件
例:rar x -o- test.rar
解压test.rar文件,但是如果碰到以存在的文件则不覆盖
ol 将符号链接以链接文件保存,而不是普通文件
ow 保存或者恢复文件所有者的信息(username,group)
这两个是*nix系统特有的命令,很容易理解吧
------------------------------------------------------------------------
p[password] 设定密码
例:rar a test.rar *.txt -p prettygirl
压缩文件设定密码为prettygirl,解压时无密码无法进行操作
如果觉得明码密码太过暴露,可以使用
rar a test.rar *.txt -p
则rar程序会询问你要使用什么密码,不回显
s- 不使用固实压缩
注,固实压缩就是压缩后文档内容不可变更的压缩方式,这和lock不一样。因为使用普通压缩
要照顾以后的插入删除个别文件的需要,就要留下很多操作余地。而固实压缩则不可以对
其内容进行任何更新,所以压缩比是最大的。
sfx[name] 创建自解压文件,这和先用a进行压缩,再用s转换效果是一样的。
t 压缩完毕后进行完整性检验
例:rar a test.rar /home -t
压缩完毕后进行检验,如果有问题则报错
用法: rar <命令> -<选项1> ….-<选项N> <操作文档> <文件…> <@文件列表…> <解压路径>
a 添加文件到压缩文件
c 添加压缩文件注释
cf 添加文件注释
cw 写入压缩文件注释到文件
d 删除压缩文件中的文件
e 解压压缩文件到当前目录
f 刷新压缩文件中的文件
i[参数]=<串> 在压缩文件中查找字符串
k 锁定压缩文件
l[t,b] 列出压缩文件[技术信息,简洁]
m[f] 移动到压缩文件[仅对文件]
p 打印文件到标准输出设备
r 修复压缩文件
rc 重建丢失的卷
rn 重命名压缩文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[名字|-] 转换压缩文件为自解压格式或转换回压缩文件
t 测试压缩文件
u 更新压缩文件中的文件
v[t,b] 详细列出压缩文件[技术信息,简洁]
x 用绝对路径解压文件
示例:
1、rar a file file.ext
如果file.rar不存在将创建file.rar文件;如果file.rar压缩包中已有file.ext,将更新压缩包中的file.ext;还可用d:\*.ext代替file.ext将d盘下所有ext文件(不包括自文件夹)添加到压缩包中。
2、rar a -r -v2000 -s -sfx -rr file
从当前文件夹和子文件夹压缩全部文件成为 2000000 字节大小、固实的、分卷自解压文件 file.part1.exe,file.part2.rar,file.part3.rar 等,并在每一个分卷中添加恢复记录;将命令a换成命令m可将文件压缩后删除
3、rar x Fonts *.ttf
会从压缩文件解压 *.ttf 字体文件到当前文件夹,但下面命令:
rar x Fonts *.ttf NewFonts\
会从压缩文件解压 *.ttf 字体文件到文件夹 NewFont
4、rar a -pZaBaToAd -r secret games\*.*
使用密码 ZaBaToAd 来将文件夹“games”的内容添加到压缩文件“secret”
5、rar a -r a.rar a/
递归的将a/下所有东西压缩到a.rar
rar常用命令主要有
a 添加文件到操作文档
例:rar a test.rar file1.txt 若test.rar文件不存在,则打包file1.txt文件成test.rar
例:rar a test.rar file2.txt 若test.rar文件已经存在,则添加file2.txt文件到test.rar中
(这样test.rar中就有两个文件了)
注,如果操作文档中已有某文件的一份拷贝,则a命令更新该文件,对目录也可以进行操作
例:rar a test.rar dir1
c 对操作文档添加说明注释
rar c test.rar
(会出现Reading comment from stdin字样,然后输入一行或多行注释,以ctrl+d结束)
cf 添加文件注释,类似上面的c,不过这个是对压缩文档中每个文件进行注释
cw 将文档注释写入文件
例:rar cw test.rar comment.txt
d 从文档中删除文件
例:rar d test.rar file1.txt
e 将文件解压到当前目录
例:rar e test.rar
注:用e解压的话,不仅原来的file1.txt和file2.txt被解压到当前目录,就连dir1里面的所有文件
也被解压到当前目录下,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压
k 锁定文档
例:rar k test.rar 锁定文档后,该文档就无法进行任何更新操作了
r 修复文档
例:rar r test.rar
当rar文件有问题时,可以尝试用该命令进行修复(鬼知道有多少用)
s 转换文档成自解压文档
例:rar s test.rar
会生成一个test.sfx的可执行文档,运行它的效果就相当于rar x test.rar,
适合于向没有rar的用户传输文件
t 检测文档
例:rar t test.rar
检测test.rar的完整性,一般压缩完大型文件准备传输前最好用这个命令来确保文件的正确性
x 带路径解压文档中内容到当前目录
例:rar x test.rar
这样解压的话,dir1就会保持原来的目录结构
以上就是rar的常用命令,一个rar操作只能有一个命令,而选项却可以有多个。
------------------------------------------------------------------------
rar选项有很多,在此无法一一说明,只示范经常使用的几个
cl 将文件名转换为小写
cu 将文件名转换为大写
例:rar a -cl test.rar FILe.txt
FILe.txt在添加进test.rar之后,变为file.txt
df 文档操作后删除源文件
例:rar a -df test.rar file1.txt file2.txt dir1
将file1.txt,file2.txt,dir1压缩到test.rar中之后,删除源文件
ed 不添加空目录
例:rar a -ed test.rar dir1
添加dir1到test.rar中时,不对空目录进行操作
rar e -ed test.rar
解压test.rar时,不生成空目录
k 锁定文件
例:rar a -k test.rar file1.txt
等价于rar a test.rar file1.txt
rar k test.rar
m<0..5> 设定压缩比等级(0-存储,3-默认,5-最大)
例:rar a -m0 test.rar dir1 dir2
将dir1,dir2打包存储到test.rar,不进行实质上的压缩(速度奇快,适合于对无甚可压的文件进行操作
比如avi,jpg等)
rar a -m5 test.rar *.txt *.bmp
将当前目录下的txt文件和bmp文件打包压缩到test.rar中,使用最大压缩比(最慢)
ms[ext;ext] 特定文件采用非压缩方式
例:rar a -m5 -ms avi;jpg;jpeg test.rar /home
将home目录下所有目录和文件归档到test.rar,采用最大压缩,但avi,jpg,jpeg文件不进行压缩
(只是打包进test.rar,因为这些文件即使用最大压缩也压不了多少,不如直接打包节省时间)
o+ 覆盖已有文件
o- 不覆盖已有文件
例:rar x -o- test.rar
解压test.rar文件,但是如果碰到以存在的文件则不覆盖
ol 将符号链接以链接文件保存,而不是普通文件
ow 保存或者恢复文件所有者的信息(username,group)
这两个是*nix系统特有的命令,很容易理解吧
------------------------------------------------------------------------
p[password] 设定密码
例:rar a test.rar *.txt -p prettygirl
压缩文件设定密码为prettygirl,解压时无密码无法进行操作
如果觉得明码密码太过暴露,可以使用
rar a test.rar *.txt -p
则rar程序会询问你要使用什么密码,不回显
s- 不使用固实压缩
注,固实压缩就是压缩后文档内容不可变更的压缩方式,这和lock不一样。因为使用普通压缩
要照顾以后的插入删除个别文件的需要,就要留下很多操作余地。而固实压缩则不可以对
其内容进行任何更新,所以压缩比是最大的。
sfx[name] 创建自解压文件,这和先用a进行压缩,再用s转换效果是一样的。
t 压缩完毕后进行完整性检验
例:rar a test.rar /home -t
压缩完毕后进行检验,如果有问题则报错





