通过GD生成PNG图片,并把$randval随机数字赋给$_SESSION['login_check_num'],在通过用户输入的$_POST进行比较,来判断是否正确。
注意:如果服务器未开启GD库支持,需要修改php.ini文件,使php支持GD库。
代码如下:
<?php
//调用生成验证码图片
//by http://www.
if($_GET["action"]=="verifycode")
{
rand_create();
}
//生成验证码图片
function rand_create()
{
//通知浏览器将要输出PNG图片
Header("Content-type: image/PNG");
//准备好随机数发生器种子
srand((double)microtime()*1000000);
//准备图片的相关参数
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0); //RGB黑色标识符
$white = ImageColorAllocate($im, 255,255,255); //RGB白色标识符
$gray = ImageColorAllocate($im, 200,200,200); //RGB灰色标识符
//开始作图
imagefill($im,0,0,$gray);
while(($randval=rand()%100000)<10000);{
$_SESSION["login_check_num"] = $randval;
//将四位整数验证码绘入图片
imagestring($im, 5, 10, 3, $randval, $black);
}
//加入干扰象素
for($i=0;$i<200;$i++){
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
//输出验证图片
ImagePNG($im);
//销毁图像标识符
ImageDestroy($im);
}
//检验验证码
function rand_check()
{
if($_POST["reg_rand"] == $_SESSION["login_check_num"]){
return true;
}
else{
exit("验证码输入错误");
}
}
?>
您可能感兴趣的文章:
php验证码简单函数代码(附效果图)
分享一个php 验证码类及调用示例
php验证码的三个实例代码分享
一个php验证码的封装类
php自定义大小验证码的实例代码
php生成扭曲及旋转的验证码图片的实例代码
php仿QQ验证码的实现代码
php验证码函数使用的例子
php5验证码类(简易实用型)
php点击验证码实时刷新的实现代码
php图片验证码的例子
php彩色验证码的简单例子
php验证码刷新与局部刷新的实现方法
php GD库生成验证码的实例
php生成验证码的例子
php随机验证码 php生成随机验证码(图文)
一个比较稳定的php登陆系统验证码
用php生成带有雪花背景的验证码
基本流程:
1、获取目标网站图片地址。
2、读取图片内容。
3、创建要保存图片的路径并命名图片名称。
4、写入图片内容。
5、完成。
我们自定义几个函数,实现采集远程图片的功能。
1、make_dir()建立目录。判断要保存的图片文件目录是否存在,如果不存在则创建目录,并且将目录设置为可写权限。
<?php
function make_dir($path){
if(!file_exists($path)){//不存在则建立
$mk=@mkdir($path,0777); //权限
@chmod($path,0777);
}
return true;
}
?>
2、read_filetext()取得图片内容。使用fopen打开图片文件,然后fread读取图片文件内容。
<?php
function read_filetext($filepath){
$filepath=trim($filepath);
$htmlfp=@fopen($filepath,"r");
//远程
if(strstr($filepath,"://")){
while($data=@fread($htmlfp,500000)){
$string.=$data;
}
}
//本地
else{
$string=@fread($htmlfp,@filesize($filepath));
}
@fclose($htmlfp);
return $string;
}
?>
3、write_filetext()写文件,将图片内容fputs写入文件中,即保存图片文件。
<?php
function write_filetext($filepath,$string){
//$string=stripSlashes($string);
$fp=@fopen($filepath,"w");
@fputs($fp,$string);
@fclose($fp);
}
?>
4、get_filename()获取图片名称,也可以自定义要保存的文件名。
<?php
function get_filename($filepath){
$fr=explode()("/",$filepath);
$count=count($fr)-1;
return $fr[$count];
}
?>
5、在函数save_pic()中调用,最后返回保存后的图片路径。
<?php
function save_pic($url,$savepath=''){
//处理地址
$url=trim($url);
$url=str_replace()(" ","%20",$url);
//读文件
$string=read_filetext($url);
if(empty($string)){
echo '读取不了文件';exit;
}
//文件名
$filename = get_filename($url);
//存放目录
make_dir($savepath); //建立存放目录
//文件地址
$filepath = $savepath.$filename;
//写文件
write_filetext($filepath,$string);
return $filepath;
}
调用save_pic()函数保存图片,测试代码:
//目标图片地址
$pic = "http://www./1205/06/2776119_demo.jpg";
//保存目录
$savepath = "images/";
echo save_pic($pic,$savepath);
?>
实际应用中,可能会采集某个站点的内容,比如产品信息,包括采集防盗链的图片保存到网站上服务器上。
这时可以使用正则匹配页面内容,将页面中相匹配的图片都找出来,然后分别下载到网站服务器上,完成图片的采集。
测试代码:
<?php
function get_pic($cont,$path){
$pattern_src = '/<[img|IMG].*?src=/blog_article/[/index.html'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/';
$num = preg_match_all($pattern_src, $cont, $match_src);
$pic_arr = $match_src[1]; //获得图片数组
foreach ($pic_arr as $pic_item) { //循环取出每幅图的地址
save_pic($pic_item,$path); //下载并保存图片
echo "[OK]..!";
}
}
//通过分析页面内容,将主体内容找出来,调用get_pic()实现图片的保存。
//采集一篇关于手机报道内容页的图片
$url = "http://www./321/3215791.html";
$content = file_get_contents($url);//获取网页内容
$preg = '#<div >(.*)<div ></div>#iUs';
preg_match_all($preg, $content, $arr);
$cont = $arr[1][0];
get_pic($cont,'img/');
?>
以上代码经测试可以采集图片,但特殊情况下未测试,比如目标网站做了302多次跳转的,目标网站做了多种防采集的,留给大家自行测试与研究。
您可能感兴趣的文章:
php采集程序代码(入门)
php写的文章采集URL补全函数(FormatUrl)
一个php文本采集类
一个比较全面的截取函数(多用于采集内容的分析)
要成为一名PHP编程高手并不容易,并不像很多人想象的那样,只要能够飞快地编写几条简单的代码去解决一个复杂的问题就是PHP编程高手了,真正的PHP高手还需要考虑更多的其它问题。以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则。
1、懒惰是金
2、编写漂亮的代码
3、追求程序的速度,而不是编程的速度
懒惰是金
程序员太忙了,所以才应该在编程时学会偷懒。对于一个程序员来说,懒惰的方法有两种:
其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或者项目中去。其二是编写一些有用的代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复的劳动,自然就可以懒惰一点了。这两种偷懒的方法都非常适合PHP程序员了。
首先,PHP是在自由开放的环境中诞生和成长的一门语言。在世界各地,有成千上万的程序员,他们一直在为PHP的完美而不断奋斗,他们也愿意和别人分享自己的聪明才智和自己编写的代码。你每天都可以从一些PHP网站、邮件列表、新闻组发现大量的优秀的程序代码。
这样说,我并不是鼓励你整天等着让别人为你编写代码,但是你可以“站在伟人的肩膀上”,充分发扬“拿来主义”,聪明地应用别人的程序代码可以节省你大量时间。其次,在PHP中,你可以方便地建立自己的函数库,这样可以在你以后编写程序时省去很多麻烦。
为大家介绍几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。
1.通用数据库处理函数
和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。
在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库——不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。
就笔者而言,很喜欢使用这些函数,因为可以直接使用一些简单的诸如”query”、”next_record”之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。
编写各种常用的函数,形成自己的个人函数库,也是一个不错的编程习惯,日积月累必有大成!
,祝大家早日成为技术高手、大牛!!!