使用简单的PHP验证器保护Web窗体

分享于 

5分钟阅读

Web开发

  繁體 雙語

介绍

,是"以为单位收费,以为单位收费,确保测试费用为,以为单位,以为单位。"验证技术的缩写,使得人们能够从网络上的计算机生成请求区分出来。 简单说明:"人可以阅读;机器不能"本文演示了如何为web表单实现简单的CAPTCHA接口。

通过web可以用的简单表单总是容易受到希望使用应用程序的人们自己的目的攻击。 许多网站使用CAPTCHA来防止机器人滥用他们的服务。 除了other可以防止机器人参与在线投票,在free电子邮件帐户registering在发送电子邮件消息之前,要求( 无法识别) 发送者通过验证测试,从而阻止垃圾邮件。 他们也被用来阻止人们使用僵尸网络来帮助从多媒体网站下载大量内容。

你可能已经在一些网站目标中看到了CAPTCHA项目。 它的主要工具是随机创建的图像,包含一个显示为图形图像的短语,而不是在渲染页面上的计算机可读。 表单要求用户提供短语。 如果表单发布不包含正确的短语,你可以安全地假设人员错误,或者不是人。

使用代码

现在是时候把这段代码工作起来了。 一个简单且经常使用的接口来实现这个新的安全措施是网站上的表单。 在这种形式中,你通常捕获随机数。

<formname="form1"method="post"action="form.php""><tablewidth="342"align="center"cellspacing="0"bgcolor="#D4D0C8"><tr> 
 <tdalign="center"><imgsrc="php_captcha.php"></td><tdalign="center"> 
 Please enter the string shown in the image in the form.<br></td><tdalign="center"><inputname="number"type="text"></td><td><inputname="Submit"type="submit"value="Submit"></td> 
 </tr></table></form>

下面的代码可以用于创建随机数,这些数字嵌入到现有映像文件中,如下所示。 第一行启动会话,该会话提供对用户输入的访问。 第二行将生成一个随机字符串 $RandomStr,该字符串在第三行中被裁剪为 5个字符。 使用 imagecreatefromjpeg("img.jpg") 函数将现有图像文件作为后台创建图像。

<?phpsession_start();$RandomStr = md5(microtime());$ResultStr = substr($RandomStr,0,5);$NewImage =imagecreatefromjpeg("img.jpg");?>

然后使用下面的代码修改图像,指定要使用的颜色,并使用 imageline() 函数生成若干行。 接下来,imagestring() 函数用于绘制修剪后的随机字符串 $ResultStr,并将它的保存为会话变量。

<?php$LineColor = imagecolorallocate($NewImage,233,239,239);$TextColor = imagecolorallocate($NewImage, 255, 255, 255);
imageline($NewImage,1,1,40,40,$LineColor);
imageline($NewImage,1,100,60,0,$LineColor);
imagestring($NewImage, 5, 20, 10, $ResultStr, $TextColor); 
$_SESSION['key'] = $ResultStr;?>

最后,使用以下行将图像输出到浏览器,以显示生成的CAPTCHA图像。

<?phpheader("Content-type: image/jpeg");
imagejpeg($NewImage);?>

下面是可以用于验证使用实际随机数的用户输入的代码示例。 将根据应用程序的期望行为来实现 ifelse 部分的实现。

<?phpif(isset($_REQUEST['Submit'])){
 $key=substr($_SESSION['key'],0,5);
 $number = $_REQUEST['number'];
 if($number!=$key){
 echo' Validation string not valid! Please try again!';
 }
 else {
 echo' Your string is valid!';
 } 
}?>


结束语

CAPTCHA可以很好地限制应用程序中的成功。不需要的HTTP POST 请求数量。 由于captcha是完全自动化的,所以在执行测试时不需要人工维护或者干预。 这在成本和可靠性方面有明显的优势。

我希望简单的代码对理解概念很有用。 认证认证 !


WEB  for  PHP  form  cap  表单  
相关文章