一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

ecshop注册页面添加推荐人验证的方法总结

时间:2016-07-12 编辑:简简单单 来源:一聚教程网

方法一,

注册时增加推荐人选填框:

1,打开/languages/zh_cn/user.php

Ctrl+F,查找$_LANG['label_password'] = '密码';
在下面增加一行:$_LANG['label_rec_user'] = '推荐人';

保存修改

2,打开/themes/当前主题目录/user_passport.dwt

Ctrl+F,查找

在上面粘贴以下代码(可根据你的主题样式修改): 程序代码

 <
                <{$lang.label_rec_user}
                <
                   <
               <
           <

保存修改

3,打开/user.php

Ctrl+F,查找$email    = isset($_POST['email']) ? trim($_POST['email']) : '';
在下面增加一行:$rec_user    = isset($_POST['rec_user']) ? trim($_POST['rec_user']) : '';
Ctrl+F,查找if (register($username, $password, $email, $other) !== false)
修改为:if (register($username, $password, $email, $rec_user, $other) !== false)

4,打开/includes/lib_passport.php

Ctrl+F,查找 * @param   string       $email             注册email
在下面增加一行: * @param   string       $rec_user          推荐人用户名(此步骤可以跳过,只是加个注释)
Ctrl+F,查找function register($username, $password, $email, $other = array())
修改为:function register($username, $password, $email, $rec_user, $other = array())
Ctrl+F,查找//设置推荐人
将下面的 程序代码


$sql = 'Update '. $GLOBALS['ecs']->table('users') . ' SET parent_id = ' . $up_uid . ' Where user_id = ' . $_SESSION['user_id'];
                $GLOBALS['db']->query($sql);

替换为 程序代码

  
                if (empty($rec_user))
       {
           $rec_userid=$up_uid;
    }
       else
       {
      
     $recsql = "Select user_id FROM " . $GLOBALS['ecs']->table('users') . " Where user_name = '$rec_user'";
     $recone = $GLOBALS['db']->getOne($recsql);
   
     if ($recone)
           {
               $rec_userid=$recone['user_id'];
     }
           else
           {
               $rec_userid=0;
           }
   
        }
              
    $sql = 'Update '. $GLOBALS['ecs']->table('users') . ' SET parent_id = ' . $rec_userid . ' Where user_id = ' . $_SESSION['user_id'];
                $GLOBALS['db']->query($sql);

5,打开/js/user.js

Ctrl+F,查找var password  = Utils.trim(frm.elements['password'].value);
在下面增加一行:var rec_user  = Utils.trim(frm.elements['rec_user'].value);

{$lang.label_rec_user} 
      

方法二,

主要修改4个页面     思路,就是复制  用户名input的功能给推荐人就行了  不用改底层

1.前台模板   user_passport.dwt
2.js(jquery实现的)文件     user.js
3.前台       user.php
4. lib_passport.php
 
1首先在用户注册模板中的相关位置添加    推荐人input  html属性

ecshop注册页面添加推荐人验证功能

 
   


     
      {$lang.label_email}
     
   

   

   
    
   

     
      {$lang.label_rec_user}
     
   

   

is_rec_registered(this.value) js函数   就需要在   user.js中去修改了
 
2.打开  user.js文件

找到方法   function is_registered( username );  复制并在其下面粘贴一份   修改名字为  function is_rec_registered( rec_user ),单独验证推荐人是否是已经注册的用户、

代码如下:

//推荐人修改  start
function is_rec_registered( rec_user )
{
    var submit_disabled = false;
    var unlen = rec_user.replace(/[^\x00-\xff]/g, "**").length;

    if ( rec_user == '' )
    {
        document.getElementById('rec_user_notice').innerHTML = '推荐人不允许为空!';
        var submit_disabled = true;
    }

    if ( !chkstr( rec_user ) )
    {
        document.getElementById('rec_user_notice').innerHTML = '推荐人包含非法字符';
        var submit_disabled = true;
    }
    if ( unlen < 3 )
    {
        document.getElementById('rec_user_notice').innerHTML = '推荐人长度不能少于 3 个字符。';
        var submit_disabled = true;
    }
    if ( unlen > 14 )
    {
        document.getElementById('rec_user_notice').innerHTML = '推荐人长度多多少于 14 个字符。';
        var submit_disabled = true;
    }
    if ( submit_disabled )
    {
        document.forms['formUser'].elements['Submit'].disabled = 'disabled';
        return false;
    }
    Ajax.call( 'user.php?act=is_rec_registered', 'rec_user=' + rec_user, rec_registed_callback , 'GET', 'TEXT', true, true );
}

注册  ajax.call 调用的函数  rec_registed_callback()   改函数实现根据返回的 result的真假状态,在页面提示信息(推荐人不存在...)

function rec_registed_callback(result)
{
  if ( result == "true" )
  {

    $("#rec_user").parent().removeClass("params_error");
    $("#rec_user").parent().addClass("params_success");

    document.getElementById('rec_user_notice').innerHTML = ""; //zhouhuan
    document.forms['formUser'].elements['Submit'].disabled = '';
  }
  else
  {

    $("#rec_user").parent().removeClass("params_success");
    $("#rec_user").parent().addClass("params_error");
    document.getElementById('rec_user_notice').innerHTML = '推荐人不存在,请重新输入';
    document.forms['formUser'].elements['Submit'].disabled = 'disabled';
  }
}

//推荐人修改   end
 
 
3. 修改user.php文件   重要!!!!

首先找到   $not_login_arr =array('login','act_login';          在这个数组里面讲   act的  is_rec_registered加进去
$not_login_arr =
array('login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered',
'is_rec_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer','oath' , 'oath_login', 'other_login');

再添加下面代码,  当act == is_rec_registered的时候 执行下面操作(检查推荐人是否注册)

/* 验证推荐人是否注册 */
elseif ($action == 'is_rec_registered')
{

    include_once(ROOT_PATH . 'includes/lib_passport.php');

    $rec_user = trim($_GET['rec_user']);
    $rec_user = json_str_iconv($rec_user);

    if ($user->check_user($rec_user) || admin_registered($rec_user))
    {
        echo 'true';
    }
    else
    {
        echo 'false';
    }
}
 
最后在  lib_passport.php文件中
查找到     $up_uid = get_affiliate();

讲下面的if语句替换成   (原来的是根据ID查找,现在根据rec_user)

if (!empty($rec_user))
{
     $recsql = "SELECT user_id FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_name = '$rec_user'";
       $recone = $GLOBALS['db']->getOne($recsql);
       if ($recone)
     {
           $up_uid=$recone;
      }
}
 
大体流程思路就这样,   具体要你自己实际中去修改细节,希望可以帮助到你

热门栏目