获取验证码提于服务器错误,登陆页老是提示验证码错误,validate验证控件IE下用remote方法明明返回true 但是还是报错,提示验证码错误...

登陆页后台:login.php

/**

* 前台登录 退出操作

*

*/

defined('IN_B2B2C') or exit('Access Invalid!');

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

class loginControl extends BaseHomeControl {

public function __construct(){

parent::__construct();

Tpl::output('hidden_nctoolbar', 1);

}

/**

* 登录操作

*

*/

public function indexOp(){

Language::read("home_login_index");

$lang= Language::getLangContent();

$model_member= Model('member');

//检查登录状态

$model_member->checkloginMember();

if ($_GET['inajax'] == 1 && C('captcha_status_login') == '1'){

$script = "document.getElementById('codep_w_picpath').src='".APP_SITE_URL."/index.php?act=seccode&op=makecode&nchash=".getNchash()."&t=' + Math.random();";

}

$result = chksubmit(true,C('captcha_status_login'),'num');

if ($result !== false){

if ($result === -11){

showDialog($lang['login_index_login_illegal']);

}elseif ($result === -12){

showDialog($lang['login_index_wrong_checkcode']);

}

if (processClass::islock('login')) {

showDialog($lang['nc_common_op_repeat'],SHOP_SITE_URL);

}

$obj_validate = new Validate();

$obj_validate->validateparam = array(

array("input"=>$_POST["user_name"],"require"=>"true", "message"=>$lang['login_index_username_isnull']),

array("input"=>$_POST["password"],"require"=>"true", "message"=>$lang['login_index_password_isnull']),

);

$error = $obj_validate->validate();

if ($error != ''){

showValidateError($error);exit;

}

$array= array();

$array['member_name']= $_POST['user_name'];

$array['member_passwd']= md5($_POST['password']);

$member_info = $model_member->infoMember($array);

if(is_array($member_info) and !empty($member_info)) {

if(!$member_info['member_state']){

showDialog($lang['login_index_account_stop']);

}

}else{//再此处验证为了防止原来 手机号就是账号的用户自动加GFM登陆不上

$array['member_name'] = 'GFM'.$_POST['user_name'];

$member_info = $model_member->infoMember($array);

if(is_array($member_info) and !empty($member_info)) {

if(!$member_info['member_state']){

showDialog($lang['login_index_account_stop']);

}

}else{

processClass::addprocess('login');

showDialog($lang['login_index_login_fail']);

}

}

$model_member->createSession($member_info);

processClass::clear('login');

// cookie中的cart存入数据库

$this->mergecart($member_info);

//添加会员积分

if (C('points_isuse')){

//一天内只有第一次登录赠送积分

if(trim(@date('Y-m-d',$member_info['member_login_time']))!=trim(date('Y-m-d'))){

$points_model = Model('points');

$points_model->savePointsLog('login',array('pl_memberid'=>$member_info['member_id'],'pl_membername'=>$member_info['member_name']),true);

}

}

showDialog($lang['login_index_login_success'],$_POST['ref_url'] == '' ? 'reload' : $_POST['ref_url'],'succ',$extrajs);

}else{

//登录表单页面

$_pic = @unserialize(C('login_pic'));

if ($_pic[0] != ''){

Tpl::output('lpic',UPLOAD_SITE_URL.'/'.ATTACH_LOGIN.'/'.$_pic[array_rand($_pic)]);

}else{

Tpl::output('lpic',UPLOAD_SITE_URL.'/'.ATTACH_LOGIN.'/'.rand(1,4).'.jpg');

}

if(empty($_GET['ref_url'])) {

$ref_url = getReferer();

if (!preg_match('/act=login&op=logout/', $ref_url)) {

$_GET['ref_url'] = $ref_url;

}

}

//新添

if(!empty($_GET['ref_url'])&&preg_match('/pusername=/',$_GET['ref_url'])) {

$arr=explode("&",$_GET['ref_url']);

$pusername=$arr[2];

$pusername=substr($pusername,10);

if(!empty($pusername)) {

Tpl::output('ref_url_ret',$_GET['ref_url']);

}

}

Tpl::output('html_title',C('site_name').' - '.$lang['login_index_login']);

if ($_GET['inajax'] == 1){

Tpl::showpage('login_inajax','null_layout');

}else{

Tpl::showpage('login');

}

}

}

/**

* 退出操作

*

* @param int $id 记录ID

* @return array $rs_row 返回数组形式的查询结果

*/

public function logoutOp(){

Language::read("home_login_index");

$lang= Language::getLangContent();

session_unset();

session_destroy();

/* 清除member_id, cookie   Author  Yusure */

setcookie( 'member_id', "", time()-3600, '/', C('cookie_domain'), false );

setNcCookie('goodsnum','',-3600);

if(empty($_GET['ref_url'])){

$ref_url = getReferer();

}else {

$ref_url = $_GET['ref_url'];

}

showMessage($lang['login_logout_success'],'index.php?act=login&ref_url='.urlencode($ref_url),'html','succ',1,2000);

}

/**

* 会员注册页面

*

* @param

* @return

*/

public function registerOp() {

Language::read("home_login_register");

$lang= Language::getLangContent();

$model_member= Model('member');

$model_member->checkloginMember();

Tpl::output('html_title',C('site_name').' - '.$lang['login_register_join_us']);

Tpl::showpage('register');

}

/**

* 会员添加操作

*

* @param

* @return

*/

public function usersaveOp() {

//重复注册验证

$dlM = Model("distribute_level");

$min_level_info = $dlM->getMinLevelInfo("grade" ,"is_valid = '1'");

if (processClass::islock('reg')){

showDialog(Language::get('nc_common_op_repeat'),'index.php');

}

Language::read("home_login_register");

$lang= Language::getLangContent();

$model_member= Model('member');

$model_member->checkloginMember();

$result = chksubmit(true,C('captcha_status_login'),'num');

if ($result !== false){

if ($result === -11){

showDialog($lang['invalid_request']);

}elseif ($result === -12){

showDialog($lang['login_usersave_wrong_code']);

}

}

$register_info = array();

$register_info['username'] = $_POST['user_name'];

$register_info['password'] = $_POST['password'];

$register_info['password_confirm'] = $_POST['password_confirm'];

$register_info['email'] = $_POST['email'];

$member_info = $model_member->register($register_info);

if(!isset($member_info['error'])) {

/*用户注册后就要成为分销商,等级是最低的,且父与祖父是空

*Modify by Chen

*/

$dlM = Model("distribute_level");

$min_level_info = $dlM->getMinLevelInfo("grade" ,"is_valid = '1'");

$level_id = $min_level_info['level_id'];

$dis_mem['member_id']  = $member_info['member_id'];

$dis_mem['member_name'] = $member_info['member_name'];

$dis_mem['distribute_level'] = $level_id;

$dis_mem['distribute_addtime'] = time();

$dis_mem['is_valid'] = "1";

//$dis_mem['is_reg_member'] = 1;

$dmM = Model("distribute_member");

$dmM->addMemberInfo($dis_mem);

$model_member->createSession($member_info);

processClass::addprocess('reg');

$this->mergecart();

$_POST['ref_url']= (strstr($_POST['ref_url'],'logout')=== false && !empty($_POST['ref_url']) ? $_POST['ref_url'] : 'index.php?act=member&op=home');

showDialog(str_replace('site_name',C('site_name'),$lang['login_usersave_regist_success_ajax']),$_POST['ref_url'],'succ',$synstr,3);

} else {

showDialog($member_info['error']);

}

}

/**

* 会员名称检测

*

* @param

* @return

*/

public function check_memberOp() {

/**

* 实例化模型

*/

$model_member= Model('member');

$check_member_name= $model_member->infoMember(array('member_name'=>trim($_GET['user_name'])));

if(is_array($check_member_name) and count($check_member_name)>0) {

echo 'false';

} else {

echo 'true';

}

}

/**

* 登录之后,把登录前购物车内的商品加到购物车表

*

*/

private function mergecart($member_info = array()){

if (!$member_info['member_id']) return;

$model_cart= Model('cart');

$save_type = C('cache.type') != 'file' ? 'cache' : 'cookie';

$cart_new_list = $model_cart->listCart($save_type);

if (empty($cart_new_list)) return;

//取出当前DB购物车已有信息

$cart_cur_list = $model_cart->listCart('db',array('buyer_id'=>$_SESSION['member_id']));

//数据库购物车已经有的商品,不再添加

if (!empty($cart_cur_list) && is_array($cart_cur_list) && is_array($cart_new_list)) {

foreach ($cart_new_list as $k=>$v){

if (!is_numeric($k) || in_array($k,array_keys($cart_cur_list))){

unset($cart_new_list[$k]);

}

}

}

//查询在购物车中,不是店铺自己的商品,未禁售,上架,有库存的商品,并加入DB购物车

$mode_goods= Model('goods');

$condition = array();

if (!empty($_SESSION['store_id'])) {

$condition['store_id'] = array('neq',$_SESSION['store_id']);

}

$condition['goods_id'] = array('in',array_keys($cart_new_list));

$goods_list = Model('goods')->getGoodsOnlineList($condition);

if (!empty($goods_list)){

foreach ($goods_list as $goods_info){

$goods_info['buyer_id']= $member_info['member_id'];

$model_cart->addCart($goods_info,'db',$cart_new_list[$goods_info['goods_id']]['goods_num']);

}

}

//最后清空登录前购物车内容

$model_cart->clearCart($save_type);

}

/**

* 电子邮箱检测

*

* @param

* @return

*/

public function check_emailOp() {

$model_member = Model('member');

$check_member_email= $model_member->infoMember(array('member_email'=>trim($_GET['email'])));

if(is_array($check_member_email) and count($check_member_email)>0) {

echo 'false';

} else {

echo 'true';

}

}

/**

* 手机号码检测

*

* @param

* @return

*/

public function check_telOp() {

/**

* 实例化模型

*/

$model_member= Model('member');

$check_member_name= $model_member->infoMember(array('member_tel'=>trim($_GET['member_tel'])));

if(is_array($check_member_name) and count($check_member_name)>0) {

echo 'false';

} else {

echo 'true';

}

}

/**

* 忘记密码页面

*/

public function forget_passwordOp(){

/**

* 读取语言包

*/

Language::read('home_login_register');

$_pic = @unserialize(C('login_pic'));

if ($_pic[0] != ''){

Tpl::output('lpic',UPLOAD_SITE_URL.'/'.ATTACH_LOGIN.'/'.$_pic[array_rand($_pic)]);

}else{

Tpl::output('lpic',UPLOAD_SITE_URL.'/'.ATTACH_LOGIN.'/'.rand(1,4).'.jpg');

}

Tpl::output('html_title',C('site_name').' - '.Language::get('login_index_find_password'));

Tpl::showpage('find_password');

}

/**

* 找回密码的发邮件处理

*/

public function find_passwordOp(){

Language::read('home_login_register');

$lang= Language::getLangContent();

$result = chksubmit(true,true,'num');

if (!$result){

showDialog('非法提交');

}elseif ($result === -11){

showDialog('非法提交');

}elseif ($result === -12){

showDialog('验证码错误');

}

if(empty($_POST['username'])){

showDialog($lang['login_password_input_username']);

}

if (processClass::islock('forget')) {

showDialog($lang['nc_common_op_repeat'],'reload');

}

$member_model= Model('member');

$member= $member_model->infoMember(array('member_name'=>$_POST['username']));

if(empty($member) or !is_array($member)){

processClass::addprocess('forget');

showDialog($lang['login_password_username_not_exists'],'reload');

}

if(empty($_POST['email'])){

showDialog($lang['login_password_input_email'],'reload');

}

if(strtoupper($_POST['email'])!=strtoupper($member['member_email'])){

processClass::addprocess('forget');

showDialog($lang['login_password_email_not_exists'],'reload');

}

processClass::clear('forget');

//产生密码

$new_password= random(15);

if(!($member_model->updateMember(array('member_passwd'=>md5($new_password)),$member['member_id']))){

showDialog($lang['login_password_email_fail'],'reload');

}

$cron_data = array('exetime'=>TIMESTAMP,'exeid'=>$member['member_id'],'type'=>2,'code'=>'email_touser_find_password',

'content'=>array(array(

'site_name'=> $GLOBALS['setting_config']['site_name'],

'site_url'=> SHOP_SITE_URL,

'user_name'=> $_POST['username'],

'new_password'=> $new_password

),false));

$this->addcron($cron_data,true);

$extend_js = "";

showMessage($lang['login_password_email_success'].$extend_js,SHOP_SITE_URL);

}

/**

* 异步发送邮件

*/

public function send_emailOp() {

Model('member')->checkloginMember();

$model_cron = Model('cron');

$condition = array();

$condition['type'] = 2;

$condition['exeid'] = $_SESSION['member_id'];

$condition['code'] = 'email_touser_find_password';

$cron_info = $model_cron->getCronInfo();

if (empty($cron_info)) return ;

$content = unserialize($cron_info['content']);

if (!$content[1]) $content[1] = false;

$this->send_notice($cron_info['exeid'],$cron_info['code'],$content[0],$content[1]);

$model_cron->delCron($condition);

}

/**

* 登陆生成token

*/

private function _get_token($member_id, $member_name, $client) {

$model_mb_user_token = Model('mb_user_token');

//重新登陆后以前的令牌失效

//暂时停用

//$condition = array();

//$condition['member_id'] = $member_id;

//$condition['client_type'] = $_POST['client'];

//$model_mb_user_token->delMbUserToken($condition);

//生成新的token

$mb_user_token_info = array();

$token = md5($member_name . strval(TIMESTAMP) . strval(rand(0,999999)));

$mb_user_token_info['member_id'] = $member_id;

$mb_user_token_info['member_name'] = $member_name;

$mb_user_token_info['token'] = $token;

$mb_user_token_info['login_time'] = TIMESTAMP;

$mb_user_token_info['client_type'] = $client;

$result = $model_mb_user_token->addMbUserToken($mb_user_token_info);

if($result) {

return $token;

} else {

return null;

}

}

/* 根据用户输入的地址解密参数

* */

public function  decodeUrlOp(){

$auth = urldecode($_GET['auth']);

$authSplitKey='GYPAUTH';//避免短信端在url添加的内容无法用explode分割【分割字符串】

$auths = explode($authSplitKey,$auth);//中文下的空格,且只能用explode不能用substr

$auth=$auths[0];

$jump_url = WAPS_URL."/index.html";

$key = "SDGOYIPN53487216";//密钥

$username = decrypt($auth,$key);//还是他妈原生态的好用

$username = json_decode($username);//在加密之前必须json_encode一下防止解密出错

if($username != "" && $username !=null){//url解码后

$query_arr['member_name'] = $username;

$m = Model("member");

$mem_info = $m->where($query_arr)->find();

if($mem_info!=null){//判断用户是否存在,存在就模拟登录

$token = $this->_get_token($mem_info['member_id'], $mem_info['member_name'], "wap");

if($token) {//用js给username和key赋值

$str = "

function addcookie(name, value, expireHours) {

var cookieString = name + '=' + escape(value) + '; path=/';

// 判断是否设置过期时间

if (expireHours > 0) {

var date = new Date();

date.setTime(date.getTime + expireHours * 3600 * 1000);

cookieString = cookieString + '; expire=' + date.toGMTString();

}

document.cookie = cookieString;

if (!document.cookie || document.cookie.length == 0) {

// Cookie 不好使

localStorage.setItem(name, value);

// TODO 对时间或者说有效期做一些处理

}

}

";

$str .= "

addcookie('username','{$mem_info['member_name']}');

addcookie('key','{$token}');

addcookie('isannoy','true');

alert('登录成功');

";

echo $str;

echo  "location.href='{$jump_url}';";

} else {

echo  "alert('对不起,尝试登录失败请重新操作!');location.href='{$jump_url}';";

}

}else{

echo  "alert('对不起,用户不存在请联系管理员确认!');location.href='{$jump_url}';";

}

}else{//参数有问题,跳主页

echo  "alert('对不起,参数不正确请确认!');location.href='{$jump_url}';";

}

}

}

登陆页前台:

.public-top-layout, .head-search-bar, .head-user-menu, .public-nav-layout, .nch-breadcrumb-layout, #faq {

display: none !important;

}

.wrapper {

width: 1000px;

}

#footer {

border-top: none!important;

padding-top: 30px;

}

$(document).ready(function(){

$('input[name="Submit"]').click(function(){

if($("#login_form").valid()){

$("#login_form").submit();

} else{

document.getElementById('codep_w_picpath').src='<?php echo SHOP_SITE_URL?>/index.php?act=seccode&op=makecode&nchash=<?php echo getNchash();?>&t=' + Math.random();

}

});

$("#login_form").validate({

errorPlacement: function(error, element){

var error_td = element.parent('dd');

error_td.find('label').hide();

error_td.append(error);

},

rules: {

user_name: "required",

password: "required"

,captcha : {

required : true,

minlength: 4,

remote   : {

url : '<?php echo SHOP_SITE_URL?>/index.php?act=seccode&op=check&nchash=<?php echo getNchash();?>',

type: 'get',

data:{

captcha : function(){

return $('#captcha').val();

}

}

}

}

},

messages: {

user_name: "<?php echo $lang['login_index_input_username'];?>",

password: "<?php echo $lang['login_index_input_password'];?>"

,captcha : {

required : '<?php echo $lang['login_index_input_checkcode'];?>',

minlength: '<?php echo $lang['login_index_input_checkcode'];?>',

remote : '<?php echo $lang['login_index_wrong_checkcode'];?>'

}

}

});

});

前台调用了seccode.php 中check方法

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

只需要在seccode.php文件中加入这句话就可以了

seccode.php

/**

* 验证码

*

*/

defined('IN_B2B2C') or exit('Access Invalid!');

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

class seccodeControl{

public function __construct(){

}

/**

* 产生验证码

*

*/

public function makecodeOp(){

$refererhost = parse_url($_SERVER['HTTP_REFERER']);

$refererhost['host'] .= !empty($refererhost['port']) ? (':'.$refererhost['port']) : '';

$seccode = makeSeccode($_GET['nchash']);

@header("Expires: -1");

@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);

@header("Pragma: no-cache");

$code = new seccode();

$code->code = $seccode;

$code->width = 90;

$code->height = 26;

$code->background = 1;

$code->adulterate = 1;

$code->scatter = '';

$code->color = 1;

$code->size = 0;

$code->shadow = 1;

$code->animator = 0;

$code->datapath =  BASE_DATA_PATH.'/resource/seccode/';

$code->display();

}

/**

* AJAX验证

*

*/

public function checkOp(){

if (checkSeccode($_GET['nchash'],$_GET['captcha'])){

exit('true');

}else{

exit('false');

}

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值