php

运行时间计算

/*
enjoy整理,计算php程序运行时间
*/
function microtime_float()
{
list($usec, $sec) = explode(” “, microtime());
return ((float)$usec + (float)$sec);
}
//开始计时,放在头部
$starttime = microtime_float();
//结束计时,放在最底部
$runtime = number_format((microtime_float() – $starttime), 4).’s’;
//输出
echo ‘RunTime:’.$runtime;

Popularity: 70%

php

按ID返回一个二级目录

/*
二级目录
作者:enjoy http://www.9enjoy.com
按ID返回一个二级目录,用于将内容平均分布在36*36个目录中。
36个目录为a-z0-9
*/
function IDcat($id){
$p0 = $id % 1296;
$p1 = ceil($p0 / 36)-1;
$p2 = ($p0-1) % 36 ;
return IDnum($p1).’/’.IDnum($p2).’/';
}
function IDnum($i){
if($i<10){
if($i==-1){
return ‘z’;
}else{
return $i;
}
}else{
return chr(87+$i);
}
}

Popularity: 50%

未分类

Hello world!

欢迎使用 WordPress 。这是系统自动生成的演示文章。

今天起,本站由原Z-blog转换成WordPress了。

本站恢复更新,我会把在开发中碰到的代码,及发现的好代码Copy上来,与大家分享。

也欢迎大家提供好的小段代码给我。

Popularity: 80%

php

判断是否为有效邮件地址

//———————————————————————————–
——-
// 函数名:CheckEmailAddr($C_mailaddr)
// 作 用:判断是否为有效邮件地址
// 参 数:$C_mailaddr(待检测的邮件地址)
// 返回值:布尔值
// 备 注:无
//———————————————————————————–
——-
function CheckEmailAddr($C_mailaddr)
{
if (!eregi(“^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$”,
$C_mailaddr))
//(!ereg(“^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$”,
$c_mailaddr))
{
return false;
}
return true;
}
//———————————————————————————–
——-

Popularity: 57%

php

检查数据是否是货币格式

// 函数名:CheckMoney($C_Money)
// 作 用:检查数据是否是99999.99格式
// 参 数:$C_Money(待检测的数字)
// 返回值:布尔值
// 备 注:无
//———————————————————————————–
——-
function CheckMoney($C_Money)
{
if (!ereg(“^[0-9][.][0-9]$”, $C_Money)) return false;
return true;
}
//———————————————————————————–
——-

Popularity: 69%

php

判断是否为指定长度内字符串

//———————————————————————————–
——-
// 函数名:CheckLengthBetween($C_char, $I_len1, $I_len2=100)
// 作 用:判断是否为指定长度内字符串
// 参 数:$C_char(待检测的字符串)
// $I_len1 (目标字符串长度的下限)
// $I_len2 (目标字符串长度的上限)
// 返回值:布尔值
// 备 注:无
//———————————————————————————–
——-
function CheckLengthBetween($C_cahr, $I_len1, $I_len2=100)
{
$C_cahr = trim($C_cahr);
if (strlen($C_cahr) < $I_len1) return false;
if (strlen($C_cahr) > $I_len2) return false;
return true;
}
//———————————————————————————–
——-

Popularity: 55%

php

连续建目录

/*
* 功能:连续建目录
* $dir 目录字符串
*/
function makedir( $dir, $mode = “0777″ ) {
if( ! $dir ) return 0;
$dir = str_replace( “\\”, “/”, $dir );
$rootdir = “./”;
$mdir = “”;
foreach( explode( “/”, $dir ) as $val ) {
$mdir .= $val.”/”;
$newmdir=”";
if( $val == “..” || $val == “.” || $val=”") continue;
$newmdir = $rootdir.$mdir;
if( ! file_exists( $newmdir ) ) {
mkdir($newmdir);
chmod($newmdir,$mode);
if(! file_exists( $newmdir )){
echo “创建目录 [".$newmdir."]失败.”;
exit;
}
}
}
return true;
}

Popularity: 82%

mssql

mssql的存储过程解密的存储过程

create PROCEDURE sp_decrypt(@objectname varchar(50))
AS
begin
set nocount on
--CSDN:j9988 copyright:2004.07.15
--V3.2
--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
--修正上一版"视图触发器"不能正确解密错误
--发现有错,请E_MAIL:CSDNj9988@tom.com
begin tran
declare @objectname1 varchar(100),@orgvarbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int
select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@objectname)

create table #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)
insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments WHERE id = object_id(@objectname)
select @number=max(number) from #temp
set @k=0

while @k<=@number
begin
if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectname +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '+ @objectname+' WITH ENCRYPTION AS '
end)

if @type='TR'
begin
declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)
select @parent_obj=parent_obj from sysobjects where id=object_id(@objectname)
select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj
if @tr_parent_xtype='V'
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTERD OF INSERT AS PRINT 1 '
end
else
begin
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end

end
if @type='FN' or @type='TF' or @type='IF'
set @sql1=(case @type when 'TF' then
'ALTER FUNCTION '+ @objectname+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'ALTER FUNCTION '+ @objectname+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'ALTER FUNCTION '+ @objectname+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='V'
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',8000)
set @sql3='exec(@sql1'
select @colid=max(colid) from #temp where number=@k
set @n=1
while @n<=CEILING(1.0*(@colid-1)/2) and len(@sql3)<=3996
begin
set @sql3=@sql3+'+@'
set @n=@n+1
end
set @sql3=@sql3+')'
exec sp_executesql @sql3,N'@sql1 nvarchar(4000),@ varchar(8000)',@sql1=@sql1,@=@sql2

end
set @k=@k+1
end

set @k=0
while @k<=@number
begin

if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)
begin
select @colid=max(colid) from #temp where number=@k
set @n=1

while @n<=@colid
begin
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k

SET @OrigSpText3=(SELECT ctext FROM syscomments WHERE id=object_id(@objectname) and colid=@n and number=@k)
if @n=1
begin
if @type='P'
SET @OrigSpText2=(case when @number>1 then 'CREATE PROCEDURE '+ @objectname +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'CREATE PROCEDURE '+ @objectname +' WITH ENCRYPTION AS '
end)

if @type='FN' or @type='TF' or @type='IF'
SET @OrigSpText2=(case @type when 'TF' then
'CREATE FUNCTION '+ @objectname+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'CREATE FUNCTION '+ @objectname+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'CREATE FUNCTION '+ @objectname+'(@a char(1)) returns table with encryption as return select @a as a'
end)

if @type='TR'
begin

if @tr_parent_xtype='V'
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION INSTEAD OF INSERT AS PRINT 1 '
end
else
begin
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
end

end

if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 as f'

set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET @OrigSpText2=REPLICATE('-', 4000)
end
SET @i=1

SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))

WHILE @i<=datalength(@OrigSpText1)/2
BEGIN

SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
UNICODE(substring(@OrigSpText3, @i, 1)))))
SET @i=@i+1
END
set @orgvarbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(case when @encrypted=1
then @resultsp
else convert(nvarchar(4000),case when @status&2=2 then uncompress(@orgvarbin) else @orgvarbin end)
end)
print @resultsp

set @n=@n+1

end

end
set @k=@k+1
end

drop table #temp
rollback tran
end

go

hx提示:在查询分析器里运行代码,创建了一个叫sp_decrypt的存储过程,然后用sp_decrypt 加密的存储过程名称就可以看到解密后的

Popularity: 73%

php

php 中图像压缩处理类(一)bmp.php

/**
* @(#)bmp.php
* PHP version 5.2.3
*
*
* Copyright 2007 SoftRoad. All Rights Reserved.
*
*====================================================================
* 変更履歴
*
* 新規作成 2007 年5月17日 蒋彪
*/
function imagebmp($img, $file = “”, $RLE = 0) {

$ColorCount = imagecolorstotal($img);

$Transparent = imagecolortransparent($img);
$IsTransparent = $Transparent != -1;

if ($IsTransparent)
$ColorCount–;

if ($ColorCount == 0) {
$ColorCount = 0;
$BitCount = 24;
};
if (($ColorCount > 0) and ($ColorCount <= 2)) {
$ColorCount = 2;
$BitCount = 1;
};
if (($ColorCount > 2) and ($ColorCount <= 16)) {
$ColorCount = 16;
$BitCount = 4;
};
if (($ColorCount > 16) and ($ColorCount <= 256)) {
$ColorCount = 0;
$BitCount = 8;
};

$Width = imagesx($img);
$Height = imagesy($img);

$Zbytek = (4 – ($Width / (8 / $BitCount)) % 4) % 4;
$palsize = 0; // cid added
if ($BitCount < 24)
$palsize = pow(2, $BitCount) * 4;

$size = (floor($Width / (8 / $BitCount)) + $Zbytek) * $Height +54;
$size += $palsize;
$offset = 54 + $palsize;

// Bitmap File Header
$ret = ‘BM’; // header (2b)
$ret .= int_to_dword($size); // size of file (4b)
$ret .= int_to_dword(0); // reserved (4b)
$ret .= int_to_dword($offset); // byte location in the file which is first byte of IMAGE (4b)
// Bitmap Info Header
$ret .= int_to_dword(40); // Size of BITMAPINFOHEADER (4b)
$ret .= int_to_dword($Width); // width of bitmap (4b)
$ret .= int_to_dword($Height); // height of bitmap (4b)
$ret .= int_to_word(1); // biPlanes = 1 (2b)
$ret .= int_to_word($BitCount); // biBitCount = {1 (mono) or 4 (16 clr ) or 8 (256 clr) or 24 (16 Mil)} (2b)
$ret .= int_to_dword($RLE); // RLE COMPRESSION (4b)
$ret .= int_to_dword(0); // width x height (4b)
$ret .= int_to_dword(0); // biXPelsPerMeter (4b)
$ret .= int_to_dword(0); // biYPelsPerMeter (4b)
$ret .= int_to_dword(0); // Number of palettes used (4b)
$ret .= int_to_dword(0); // Number of important colour (4b)
// image data

$CC = $ColorCount;
$sl1 = strlen($ret);
if ($CC == 0)
$CC = 256;
if ($BitCount < 24) {
$ColorTotal = imagecolorstotal($img);
if ($IsTransparent)
$ColorTotal–;

for ($p = 0; $p < $ColorTotal; $p++) {
$color = imagecolorsforindex($img, $p);
$ret .= inttobyte($color["blue"]);
$ret .= inttobyte($color["green"]);
$ret .= inttobyte($color["red"]);
$ret .= inttobyte(0); //RESERVED
};

$CT = $ColorTotal;
for ($p = $ColorTotal; $p < $CC; $p++) {
$ret .= inttobyte(0);
$ret .= inttobyte(0);
$ret .= inttobyte(0);
$ret .= inttobyte(0); //RESERVED
};
};

$retd = ”; // cid added
if ($BitCount <= 8) {

for ($y = $Height -1; $y >= 0; $y–) {
$bWrite = “”;
for ($x = 0; $x < $Width; $x++) {
$color = imagecolorat($img, $x, $y);
$bWrite .= decbinx($color, $BitCount);
if (strlen($bWrite) == 8) {
$retd .= inttobyte(bindec($bWrite));
$bWrite = “”;
};
};

if ((strlen($bWrite) < 8) and (strlen($bWrite) != 0)) {
$sl = strlen($bWrite);
for ($t = 0; $t < 8 – $sl; $t++)
$sl .= “0″;
$retd .= inttobyte(bindec($bWrite));
};
for ($z = 0; $z < $Zbytek; $z++)
$retd .= inttobyte(0);
};
};

if (($RLE == 1) and ($BitCount == 8)) {
for ($t = 0; $t < strlen($retd); $t += 4) {
if ($t != 0)
if (($t) % $Width == 0)
$ret .= chr(0) .
chr(0);

if (($t +5) % $Width == 0) {
$ret .= chr(0) . chr(5) . substr($retd, $t, 5) . chr(0);
$t += 1;
}
if (($t +6) % $Width == 0) {
$ret .= chr(0) . chr(6) . substr($retd, $t, 6);
$t += 2;
} else {
$ret .= chr(0) . chr(4) . substr($retd, $t, 4);
};
};
$ret .= chr(0) . chr(1);
} else {
$ret .= $retd;
};

if ($BitCount == 24) {
$Dopl = ”; // cid added
for ($z = 0; $z < $Zbytek; $z++)
$Dopl .= chr(0);

for ($y = $Height -1; $y >= 0; $y–) {
for ($x = 0; $x < $Width; $x++) {
$color = imagecolorsforindex($img, ImageColorAt($img, $x, $y));
$ret .= chr($color["blue"]) . chr($color["green"]) . chr($color["red"]);
}
$ret .= $Dopl;
};

};

if ($file != “”) {
$r = ($f = fopen($file, “w”));
$r = $r and fwrite($f, $ret);
$r = $r and fclose($f);
return $r;
} else {
echo $ret;
};
};

/*
*————————————————————
* ImageCreateFromBmp
*————————————————————
* – Reads image from a BMP file
*
* Parameters: $file – Target file to load
*
* Returns: Image ID
*/

function imagecreatefrombmp($file) {
global $CurrentBit, $echoMode;

$f = fopen($file, “r”);
$Header = fread($f, 2);

if ($Header == “BM”) {
$Size = freaddword($f);
$Reserved1 = freadword($f);
$Reserved2 = freadword($f);
$FirstByteOfImage = freaddword($f);

$SizeBITMAPINFOHEADER = freaddword($f);
$Width = freaddword($f);
$Height = freaddword($f);
$biPlanes = freadword($f);
$biBitCount = freadword($f);
$RLECompression = freaddword($f);
$WidthxHeight = freaddword($f);
$biXPelsPerMeter = freaddword($f);
$biYPelsPerMeter = freaddword($f);
$NumberOfPalettesUsed = freaddword($f);
$NumberOfImportantColors = freaddword($f);

if ($biBitCount < 24) {
$img = imagecreate($Width, $Height);
$Colors = pow(2, $biBitCount);
for ($p = 0; $p < $Colors; $p++) {
$B = freadbyte($f);
$G = freadbyte($f);
$R = freadbyte($f);
$Reserved = freadbyte($f);
$Palette[] = imagecolorallocate($img, $R, $G, $B);
};

if ($RLECompression == 0) {
$Zbytek = (4 – ceil(($Width / (8 / $biBitCount))) % 4) % 4;

for ($y = $Height -1; $y >= 0; $y–) {
$CurrentBit = 0;
for ($x = 0; $x < $Width; $x++) {
$C = freadbits($f, $biBitCount);
imagesetpixel($img, $x, $y, $Palette[$C]);
};
if ($CurrentBit != 0) {
freadbyte($f);
};
for ($g = 0; $g < $Zbytek; $g++)
freadbyte($f);
};

};
};

if ($RLECompression == 1) //$BI_RLE8
{
$y = $Height;

$pocetb = 0;

while (true) {
$y–;
$prefix = freadbyte($f);
$suffix = freadbyte($f);
$pocetb += 2;

$echoit = false;

if ($echoit)
echo “Prefix: $prefix Suffix: $suffix
“;
if (($prefix == 0) and ($suffix == 1))
break;
if (feof($f))
break;

while (!(($prefix == 0) and ($suffix == 0))) {
if ($prefix == 0) {
$pocet = $suffix;
$Data .= fread($f, $pocet);
$pocetb += $pocet;
if ($pocetb % 2 == 1) {
freadbyte($f);
$pocetb++;
};
};
if ($prefix > 0) {
$pocet = $prefix;
for ($r = 0; $r < $pocet; $r++)
$Data .= chr($suffix);
};
$prefix = freadbyte($f);
$suffix = freadbyte($f);
$pocetb += 2;
if ($echoit)
echo “Prefix: $prefix Suffix: $suffix
“;
};

for ($x = 0; $x < strlen($Data); $x++) {
imagesetpixel($img, $x, $y, $Palette[ord($Data[$x])]);
};
$Data = “”;

};

};

if ($RLECompression == 2) //$BI_RLE4

{
$y = $Height;
$pocetb = 0;

/*while(!feof($f))
echo freadbyte($f).”_”.freadbyte($f).”
“;*/
while (true) {
//break;
$y–;
$prefix = freadbyte($f);
$suffix = freadbyte($f);
$pocetb += 2;

$echoit = false;

if ($echoit)
echo “Prefix: $prefix Suffix: $suffix
“;
if (($prefix == 0) and ($suffix == 1))
break;
if (feof($f))
break;

while (!(($prefix == 0) and ($suffix == 0))) {
if ($prefix == 0) {
$pocet = $suffix;

$CurrentBit = 0;
for ($h = 0; $h < $pocet; $h++)
$Data .= chr(freadbits($f, 4));
if ($CurrentBit != 0)
freadbits($f, 4);
$pocetb += ceil(($pocet / 2));
if ($pocetb % 2 == 1) {
freadbyte($f);
$pocetb++;
};
};
if ($prefix > 0) {
$pocet = $prefix;
$i = 0;
for ($r = 0; $r < $pocet; $r++) {
if ($i % 2 == 0) {
$Data .= chr($suffix % 16);
} else {
$Data .= chr(floor($suffix / 16));
};
$i++;
};
};
$prefix = freadbyte($f);
$suffix = freadbyte($f);
$pocetb += 2;
if ($echoit)
echo “Prefix: $prefix Suffix: $suffix
“;
};

for ($x = 0; $x < strlen($Data); $x++) {
imagesetpixel($img, $x, $y, $Palette[ord($Data[$x])]);
};
$Data = “”;

};

};

if ($biBitCount == 24) {
$img = imagecreatetruecolor($Width, $Height);
$Zbytek = $Width % 4;

for ($y = $Height -1; $y >= 0; $y–) {
for ($x = 0; $x < $Width; $x++) {
$B = freadbyte($f);
$G = freadbyte($f);
$R = freadbyte($f);
$color = imagecolorexact($img, $R, $G, $B);
if ($color == -1)
$color = imagecolorallocate($img, $R, $G, $B);
imagesetpixel($img, $x, $y, $color);
}
for ($z = 0; $z < $Zbytek; $z++)
freadbyte($f);
};
};
return $img;

};

fclose($f);

};

/*
* Helping functions:
*————————-
*
* freadbyte($file) – reads 1 byte from $file
* freadword($file) – reads 2 bytes (1 word) from $file
* freaddword($file) – reads 4 bytes (1 dword) from $file
* freadlngint($file) – same as freaddword($file)
* decbin8($d) – returns binary string of d zero filled to 8
* RetBits($byte,$start,$len) – returns bits $start->$start+$len from $byte
* freadbits($file,$count) – reads next $count bits from $file
* RGBToHex($R,$G,$B) – convert $R, $G, $B to hex
* int_to_dword($n) – returns 4 byte representation of $n
* int_to_word($n) – returns 2 byte representation of $n
*/

function freadbyte($f) {
return ord(fread($f, 1));
};

function freadword($f) {
$b1 = freadbyte($f);
$b2 = freadbyte($f);
return $b2 * 256 + $b1;
};

function freadlngint($f) {
return freaddword($f);
};

function freaddword($f) {
$b1 = freadword($f);
$b2 = freadword($f);
return $b2 * 65536 + $b1;
};

function RetBits($byte, $start, $len) {
$bin = decbin8($byte);
$r = bindec(substr($bin, $start, $len));
return $r;

};

$CurrentBit = 0;
function freadbits($f, $count) {
global $CurrentBit, $SMode;
$Byte = freadbyte($f);
$LastCBit = $CurrentBit;
$CurrentBit += $count;
if ($CurrentBit == 8) {
$CurrentBit = 0;
} else {
fseek($f, ftell($f) – 1);
};
return RetBits($Byte, $LastCBit, $count);
};

function RGBToHex($Red, $Green, $Blue) {
$hRed = dechex($Red);
if (strlen($hRed) == 1)
$hRed = “0$hRed”;
$hGreen = dechex($Green);
if (strlen($hGreen) == 1)
$hGreen = “0$hGreen”;
$hBlue = dechex($Blue);
if (strlen($hBlue) == 1)
$hBlue = “0$hBlue”;
return ($hRed . $hGreen . $hBlue);
};

function int_to_dword($n) {
return chr($n & 255) . chr(($n >> 8) & 255) . chr(($n >> 16) & 255) . chr(($n >> 24) & 255);
}
function int_to_word($n) {
return chr($n & 255) . chr(($n >> 8) & 255);
}

function decbin8($d) {
return decbinx($d, 8);
};

function decbinx($d, $n) {
$bin = decbin($d);
$sbin = strlen($bin);
for ($j = 0; $j < $n – $sbin; $j++)
$bin = “0$bin”;
return $bin;
};

function inttobyte($n) {
return chr($n);
};
?>

Popularity: 55%

php

PHP生成带有雪花背景的验证码

作者不详

<?session_start();?> 
<FORM METHOD=POST ACTION=""> 
<input type=text name=number maxlength=4><img src="YanZhengMa.php?act=init"> 
<INPUT TYPE="submit" name="sub"> 
</FORM> 
<? 
//检验校验码 
if(isset($HTTP_POST_VARS["sub"])): 
if($HTTP_POST_VARS["number"] != $HTTP_SESSION_VARS[login_check_number] || empty($HTTP_POST_VARS["number"])){ 
    echo "校验码不正确!" ; 
}else{ 
    echo"验证码通过!"; 

endif; 
show_source('test.php'); 
//以上本页的源码 


//以下是生成验证码的源码 
show_source('YanZhengMa.php'); 
?> 
<?php 
session_start(); 
session_register("login_check_number"); 
//昨晚看到了chianren上的验证码效果,就考虑了一下,用PHP的GD库完成了类似功能 
//先成生背景,再把生成的验证码放上去 
$img_height=120;    //先定义图片的长、宽 
$img_width=40; 
if($HTTP_GET_VARS["act"]== "init"){ 
    //srand(microtime() * 100000);//PHP420后,srand不是必须的 
    for($Tmpa=0;$Tmpa<4;$Tmpa++){ 
        $nmsg.=dechex(rand(0,15)); 
    }//by sports98 


    $HTTP_SESSION_VARS[login_check_number] = $nmsg; 

    //$HTTP_SESSION_VARS[login_check_number] = strval(mt_rand("1111","9999"));    //生成4位的随机数,放入session中 
    //谁能做下补充,可以同时生成字母和数字啊??----由sports98完成了 

    $aimg = imageCreate($img_height,$img_width);    //生成图片 
    ImageColorAllocate($aimg, 255,255,255);            //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了 
    $black = ImageColorAllocate($aimg, 0,0,0);        //定义需要的黑色 
    ImageRectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//先成一黑色的矩形把图片包围 

    //下面该生成雪花背景了,其实就是在图片上生成一些符号 
    for ($i=1; $i<=100; $i++) {    //先用100个做测试 
        imageString($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"*",imageColorAllocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255))); 
        //哈,看到了吧,其实也不是雪花,就是生成*号而已。为了使它们看起来"杂乱无章、5颜6色",就得在1个1个生成它们的时候,让它们的位置、颜色,甚至大小都用随机数,rand()或mt_rand都可以完成。 
    } 

    //上面生成了背景,现在就该把已经生成的随机数放上来了。道理和上面差不多,随机数1个1个地放,同时让他们的位置、大小、颜色都用成随机数~~ 
    //为了区别于背景,这里的颜色不超过200,上面的不小于200 
    for ($i=0;$i<strlen($HTTP_SESSION_VARS[login_check_number]);$i++){ 
        imageString($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(1,10),mt_rand(1,$img_width/2), $HTTP_SESSION_VARS[login_check_number][$i],imageColorAllocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200))); 
    } 
    Header("Content-type: image/png");    //告诉浏览器,下面的数据是图片,而不要按文字显示 
    ImagePng($aimg);                    //生成png格式。。。嘿嘿效果蛮像回事的嘛。。。 
    ImageDestroy($aimg); 


?> 

Popularity: 43%