php生成验证码实现代码
一款php生成验证码实现代码,自定义了session的目录,这样就不是php.ini里默认的session文件保存路径了,如下面session_save_path,可重新定义目录.
session_save_path,可重新定义目录,php生成验证码实现代码如下:
<?php $sesssavepath = dirname(__file__) . "/../data/sessions/"; if (is_writeable($sesssavepath) && is_readable($sesssavepath)) { session_save_path($sesssavepath); } session_start(); $vstr = ''; for ($i = 0; $i < 4; $i++) $vstr.= chr(mt_rand(65, 90)); if (function_exists("imagecreate")) { $ntime = time(); if (emptyempty($_session['verifycode_last']) || emptyempty($_session['verifycode']) || ($ntime - $_session['verifycode_last'] > 5)) { $_session['verifycode'] = strtolower($vstr); $_session['verifycode_last'] = $ntime; } $vstr = $_session['verifycode']; $vstrlen = strlen($vstr); $img = imagecreate(50, 20); imagecolorallocate($img, 255, 255, 255); $line1 = imagecolorallocate($img, 240, 220, 180); $line2 = imagecolorallocate($img, 250, 250, 170); for ($j = 3; $j <= 16; $j = $j + 3) { imageline($img, 2, $j, 48, $j, $line1); } for ($j = 2; $j < 52; $j = $j + (mt_rand(3, 6))) { imageline($img, $j, 2, $j - 6, 18, $line2); } $bordercolor = imagecolorallocate($img, 0x99, 0x99, 0x99); imagerectangle($img, 0, 0, 49, 19, $bordercolor); $fontcolor = imagecolorallocate($img, 48, 61, 50); for ($i = 0; $i < $vstrlen; $i++) { $bc = mt_rand(0, 1); $vstr[$i] = strtoupper($vstr[$i]); imagestring($img, 5, $i * 10 + 6, mt_rand(2, 4) , $vstr[$i], $fontcolor); } header("pragma:no-cachern"); header("cache-control:no-cachern"); header("expires:0rn"); if (function_exists("imagejpeg")) { header("content-type:image/jpegrn"); imagejpeg($img); } else { header("content-type:image/pngrn"); imagepng($img); } imagedestroy($img); exit(); }
文章地址:http://www.phprm.com/tuxiang/fs4451.html
转载随意^^请带上本文地址!