澳门新葡萄京官网注册 13

澳门新葡萄京官网注册PHP 图片用作submit进行提交

在ASP中,可没有这么好哦!看例子:submit_0.php和submit_1.php 如下:

具体方法

验证码功能:

!--文件submit_0.php --form action=submit_1.php method=postinput type=image src=exa.gif name=sub1/form

一、PHP防止站外提交数据的方法

  1. 减轻服务器的压力(如12306的验证码功能);
  2. 防止暴力注册

下面的代码显示点击的坐标

 代码如下

个人思路:在a-z,A-Z,1-9生成n位随机的数来构成新的验证码。

?php#文件get.phpecho 您鼠标点的横坐标为:.$sub1_x.br;echo 您鼠标点的纵坐标为:.$sub1_y.br;?

<?
$servername=$HTTP_SERVER_VARS[‘SERVER_NAME’];
$sub_from=$HTTP_SERVER_VARS[“HTTP_REFERER”];
$sub_len=strlen($servername);
$checkfrom=substr($sub_from,7,$sub_len);
if($checkfrom!=$servername){
echo(“警告!你正在从外部提交数据!!请立即终止!!”);
exit;
}
?>

关于生成验证码的几个小函数

说明:

把以上代码放到需要防止外部提交数据的页面中,如果是直接输入网址或者是从外部网部链接到本页,则显示:警告!你正在从外部提交数据!!请立即终止!!;如果系从本站链接或通过表单提交到该页,则无此提示。这样做主要是为了防止一些伪造表单向站内提交数据

  1. range() //指定范围输出一个数组

一、$sub1_x和$sub1_y两个变量自动生成

上面的代码通过curl可直接跳过了,我们可以参考dz论坛登录的一种做法

a) 如: range

二、生成的变量是:提交图片的名字加上_x或_y,分别表示横纵坐标

处理远程表单提交更好的方式是,根据一个惟一的字符串或时间戳生成一个令牌,并将这个令牌放在会话变量和表单中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人试图从表单的远程副本发送数据。

  1. array_merge()//合并数组

最后:大家可以发挥您的智慧,利用它实现很多好的效果

要创建随机的令牌,可以使用 PHP 内置的 md5()、uniqid() 和 rand()
函数,如下所示

a) array_merge(数组1,数组2….)

 

  1. array_rand

 代码如下

a) 随机从数组中取出几个下标返回一个数组

<SPAN style=”FONT-SIZE: small”><?php
session_start();   
       
if ($_POST[‘submit’] == “go”){   
    //check token   
    if ($_POST[‘token’] == $_SESSION[‘token’]){   
        //strip_tags   
        $name = strip_tags($_POST[‘name’]);   
        $name = substr($name,0,40);   
        //clean out any potential hexadecimal characters   
        $name = cleanHex($name);   
        //continue processing….   
    }else{   
        //stop all processing! remote form posting attempt!   
    }   
}   
       
$token = md5(uniqid(rand(), true));   
$_SESSION[‘token’]= $token;   
       
       
function cleanHex($input){   
    $clean = preg_replace(“![][xX]([A-Fa-f0-9]{1,3})!”,
“”,$input);   
    return $clean;   
}   
?>   
       
       
<form action=”<?php echo $_SERVER[‘PHP_SELF’];?>”
method=”post”>   
<p><label for=”name”>Name</label>   
<input type=”text” name=”name” id=”name” size=”20″
maxlength=”40″/></p>   
<input type=”hidden” name=”token” value=”<?php echo
$token;?>”/>   
<p><input type=”submit” name=”submit”
value=”go”/></p>   
</form>   </SPAN>

  1. shuffle//将再一次打乱数组中元素
  2. mt_rand //生成一个更好的随机数
  3. 如: mt_rand //生成一个在1-5之间的任意数

没事把以前写的asp写出来

生成验证码代码

ASP防止外部提交数据的方法

<?php

 代码如下

$arr1=range;//指定范围输出一个数组

<%
Server_v1=Cstr(Request.ServerVariables(“HTTP_REFERER”))
Server_v2=Cstr(Request.ServerVariables(“SERVER_NAME”))
If   mid(server_v1,8,len(server_v2))<>server_v2   then
     Response.write “警告!你正在从外部提交数据!!请立即终止!!”
     Response.End
End if
%>

$arr2=range;

$arr3=range;

$arr=array_merge($arr1,$arr2,$arr3); //合并数组

$index = array_rand; //在$arr中随机取5个数,返回值是$arr的下标

Shuffle;

$code = ”;//定义一个空的字符串来存储生成的验证码用’点’来进行拼接

foreach ($index as $key => $value) {//遍历数组

$code.= $arr[$value];//根据下标取数组中的值

}

var_dump;

?>

运行结果截图

澳门新葡萄京官网注册 1

完善:要把验证码添加到图像中这样的验证码才逼真

在完善之前先介绍有关图像创建的大致步骤

创建图像

方法一: 创建一个真彩色图像

imagecreatetruecolor(width, height) //创建一个真彩色图像

说明:

  1. width : 画布的宽度
  2. height: 画布的高度
  3. 返回值为图像资源

澳门新葡萄京官网注册 2

注意:

澳门新葡萄京官网注册 3

为真彩色图像: 填充颜色

imagefill(image, x, y, color) //为图像资源填充颜色

说明:

  1. image //图像资源
  2. x,y,填充的坐标点(注意:填充的与此点最接近的颜色)

color; //用什么颜色来填充

为真彩色图像: 分配颜色

imagecolorallocate(image, red, green, blue)

说明:

  1. image //图像资源
  2. red: //红颜色 或 0x //即十六进制来表示 (0xff就是255)
  3. green//绿颜色
  4. blue //蓝颜色

imagefill和imagecolorallocate的代码演示

在没有给画布填充颜色时的效果

澳门新葡萄京官网注册 4

给画布填充颜色时的效果和代码

<?php

//创建图像资源默认显示为黑色

$image = imagecreatetruecolor;

//1.image //图像资源

//2.red: //红颜色 或 0x //即十六进制来表示 (0xff就是255)

//3.green//绿颜色

//4.blue //蓝颜色

$color = imagecolorallocate($image, 255, 0, 0);

//1.image //图像资源

//2.x,y,填充的坐标点(注意:填充的与此点最接近的颜色)

//3.color; //用什么颜色来填充

imagefill($image, 0, 0, $color);

//输出图像

header(‘content-type:image/jpeg’);

imagejpeg;

//销毁图像资源

imagedestroy;

?>

结果截图;

澳门新葡萄京官网注册 5

输出图像

  1. 输出图像到浏览器

a) header(‘content-type:image/jpeg’); //设置将图像通过浏览来查看

b) imagejpeg

  1. 按文件进行输出图像

a) imagejpeg(图像资源,’图像路径’,图像的质量) //质量取值0-100

b) 注意:

澳门新葡萄京官网注册 6

注意:只能jpeg格式才有质量这个参数.

销毁图像

imagedestroy; //销毁图像,释放内存资源.

注意: 当前生成几个图像资源,就销毁几个.

验证码的整个代码:

<?php

//实例:让文本居于图像的正中

//创建图像资源

$image = imagecreatetruecolor;

$color = imagecolorallocate($image, mt_rand, mt_rand, mt_rand;

//为图像资源填充颜色

imagefill($image, 0, 0, $color);

//绘制图像

$font = 5;

//验证码的开始

$arr1 = range;

$arr3 = range;

$arr2 = range;

//array_merge — 合并一个或多个数组

$arr = array_merge($arr1,$arr2,$arr3);

$index = array_rand; //随机从原数组中找出5个下标

$string = ”;

foreach ($index as $value) { //$value
两个功能,即是$index中的值,又是$arr中的下标

$string .= $arr[$value]; //将得到字符进行连接

}

//验证码的结束

//mt_rand — 生成更好的随机数

//echo mt_rand;die;

//加入点干扰

$pointcolor = imagecolorallocate($image, mt_rand, mt_rand, mt_rand;

//循环创建1000个干扰点

for ($i=0; $i <1000 ; $i++) {

imagesetpixel($image, mt_rand(0,imagesx, mt_rand(0,imagesy,
$pointcolor);

}

//加入线的干扰

$lintecolor = imagecolorallocate($image, mt_rand, mt_rand, mt_rand;

// 循环创建50个线干扰

for ($i=0; $i <50 ; $i++) {

imageline($image, mt_rand(0,imagesx, mt_rand(0,imagesy,
mt_rand(0,imagesx, mt_rand(0,imagesy ,$lintecolor);

}

//一个字符的宽度 imagefontwidth

//字符串的个数: strlen

//一个字符的宽度*字符串的个数

//所有字符串宽度和= 一个字符的宽度*字符串的个数

//$x = (画布的宽度-所有字符串宽度和)/2

$x = (imagesx-imagefontwidth*strlen/2;

//$y = (画布的高度-字符的高度)/2;

//字符的高度: imagefontheight

$y = (imagesy-imagefontheight/2;

$stringcolor = imagecolorallocate($image, mt_rand, mt_rand, mt_rand;

imagestring($image, $font, $x, $y, $string, $stringcolor);

//输出图像

header(‘content-type:image/jpeg’); //设置将图像通过浏览来查看

imagejpeg($image,”,100); //将图像资源输出

//销毁图像资源

imagedestroy; //销毁图像

理解代码中的一些函数

加入干扰的点

imagesetpixel(image, x, y, color)

说明:x,y 一个点的坐标

澳门新葡萄京官网注册 7

加入干扰的线

imageline(image, x1, y1, x2, y2, color)

说明: x1,y1是线的一个端点坐标; x2,y2是线的另一个端口的坐标;
由两点画一条线

澳门新葡萄京官网注册 8

让验证码居于图像的正中

  1. imagefontheight获取字体的高度:
  2. imagefontwidth获取字体的宽度:
  3. strlen//获取字符串的长度
  4. imagesx //获取画布的宽度
  5. imagesy //获取画布的高度

澳门新葡萄京官网注册 9

最后运行结果

澳门新葡萄京官网注册 10

再次完善(和html代码结合起来)

Html代码

澳门新葡萄京官网注册 11

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<title>Document</title>

</head>

<body>

<form name=’frm’ method=’post’ action=”>

<table width=”30%” border=”2″ align=”center” rules=”all”
cellpadding=”10″>

<tr>

<th colspan=”2″>请输入信息</th>

</tr>

<tr>

<th>姓名:</th>

<th><input type=”text”
name=”username”></input></th>

</tr>

<tr>

<th>密码:</th>

<th><input type=”password”
name=”userpwd”></input></th>

</tr>

<tr> 555556

<th>验证码</th>

<th><input type = ‘text’ name =
‘checkcode’></input><img src=”21.php” style=”cursor:pointer”
onclick=”this.src=’21.php’?+Math.random()”></th>

</tr>

<tr>

<th colspan=”2″><input type=”submit” name=”submit”
value=”提交”></input></th>

</tr>

</table>

</form>

</body>

</html>

理解;

澳门新葡萄京官网注册 12

最后结果截图

澳门新葡萄京官网注册 13

发表评论

电子邮件地址不会被公开。 必填项已用*标注