php如何给注册页面加验证码,实现magento注册页面添加验证码

该博客介绍了在Magento平台上如何实现注册页面的验证码功能。首先,通过PHP创建了一个生成随机验证码的控制器,并将其保存到session中。接着,展示了前端模板中如何显示验证码图片以及替换验证码的逻辑。然后,提供了JavaScript代码用于点击更换验证码和AJAX验证。最后,验证用户输入的验证码是否与session中的值匹配。
摘要由CSDN通过智能技术生成

85d2f0c5ed3f60b3cea7662ba7232d2b.png

magento 注册页面添加验证码

captcha

一:app/code/local/Mage/Customer/controllers/CapthchasController.php

Header("Content-type: image/PNG");

class Mage_Customer_CapthchasController extends Mage_Core_Controller_Front_Action

{

public function getCode($num=4,$w=6,$h=20){

// header("Content-type:text/html;charset=utf-8");

session_start();

// 去掉了 0 1 O l 等

$str = "23456789abcdefghijkmnpqrstuvwxyz";

$code = '';

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

$code .= $str[mt_rand(0, strlen($str)-1)];

}

//将生成的验证码写入session,备验证页面使用

$_SESSION["helloweba_char"] = $code;

//创建图片,定义颜色值

$im = imagecreate($w, $h);

$black = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));

$gray = imagecolorallocate($im, 118, 151, 199);

$bgcolor = imagecolorallocate($im, 235, 236, 237);

//画背景

imagefilledrectangle($im, 0, 0, $w, $h, $bgcolor);

//画边框

imagerectangle($im, 0, 0, $w-1, $h-1, $gray);

//imagefill($im, 0, 0, $bgcolor);

//在画布上随机生成大量点,起干扰作用;

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

imagesetpixel($im, rand(0, $w), rand(0, $h), $black);

}

//将字符随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成

$strx = rand(3, 8);

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

$strpos = rand(1, 6);

imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);

$strx += rand(8, 14);

}

$te=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//字体颜色

imagepng($im);

imagedestroy($im);

imagettftext($im,12,3,20,20,$te,'t1.ttf',$str);

}

public function indexAction(){

$this->getCode(4,60,20);

}

}

二:app\design\frontend\default\default\template\persistent\customer\form

$base_url = $this->getBaseUrl();

if(strstr($base_url,'index.php')=='index.php/'){

$base_url = str_replace('index.php/','', $base_url);

}

三:js 验证

//点击 切换验证码

jQuery(function(){

jQuery("#getmathcode").click(function(){

jQuery('#getcode_char').attr("src",'<?php echo $base_url?>customer/capthchas/getVerification?' + Math.random());

});

});

//ajax验证码处理

jQuery('#submitbtn').click(function(){

jQuery('#submitbtn').text('Loading...');

var icode = false;

var code_char = jQuery("#yzm").val();

Validation.add('validate-icode', '验证码错误。', function(v) {

jQuery.ajaxSetup({

async : false

});

jQuery.post(

"<?php echo $base_url?>customer/capthchas/Verification?act=char",

{code:code_char},

function(msg){

if(msg){

v = true;

}else{

v = false;

}

}

)

if(!v){

return false;

}

return true;

});

四:注册session验证

$action = $_GET['act'];

$code = trim($_POST['code']);

//echo $code.'-'.$_SESSION["helloweba_char"];

if(trim($code)==$_SESSION["helloweba_char"]){

return  1;

}else{

//return 0;

}

(责任编辑:最模板)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值