开源CMS \ ecshop \ ecshop 注册添加字段

ecshop 注册添加字段

总点击42
简介:开始整理一下这个添加用户注册字段的功能 1.首先整理一下前台注册时候的相关的页面

开始整理一下这个添加用户注册字段的功能


1.首先整理一下前台注册时候的相关的页面


    后台可以直接打开后台的注册设置管理


    在网店后台 -> 系统设置 ->会员注册项设置 可以添加一个选项公司地址


    添加后需要修改数据库ecs_users 表里面添加一个字段表示注册用户的公司地址


    //全局变量 init.php  初始化 shop_config.php//$_CFG = load_config();


   


    user_passport.dwt->user.js->user.php->ecshop.php or integrare.php


    user.php -> is_registered ->$user->check_user()(ecshop.php类下面的check_user)


    首先要修改的就是user.js 文件,里面需要一些js获取公司地址和一些验证


    function register() 定义一个变量


    例如:var company_name = frm.elements['extend_field101'] ? Utils.trim(frm.elements['extend_field101'].value) : '';这个是我的数据库字段可以根据自


己的需要改变


    //添加用户的公司名称的验证


    if (company_name.length == 0)


       {


            msg += company_name_empty + 'n';//zh_cn/user.php语言包


        alert(msg);


      }


      else if (company_name.match(/^s*$|^c:concon$|[%,'*"st<>&]/))


      {


        msg += company_name_invalid + 'n';


      }


      else if (company_name.length < 3)


      {


        msg += company_name_shorter + 'n';


      }


    msg 的内容可以去user.php 语言文件自己定义  company_name_shorter 自己定义寓意


    js简单验证部分完成


    接着就是user.php 里面的处理act_register


    添加封装数组数据


    $other['company_name'] = isset($_POST['extend_field101']) ? $_POST['extend_field101'] : '';


    在这个后面


    if (strpos($password,' ') > 0)


        {


            show_message($_LANG['passwd_balnk']);


        }


    //添加公司名称填写的验证  修改ch下面的user.php 语言饱


                if (strlen($other['company_name']) < 6)


        {


            show_message($_LANG['passport_js']['company_name_shorter']);


        }


    //这里可以加上一些基本的其他的msn和一些地质的验证


    下来就是处理注册数据入库函数 register()找到这里


    if (register($username,$password,$email,$other) !== false)


    这里调用的是include_once(ROOT_PATH . 'includes/lib_passport.php');下面的register函数


    进行一些用户重复的验证接着下来


    在它里面有调用了 if (!$GLOBALS['user']->add_user($username,$email))add_user方法


    这个方法存在于integrate.php add_user  这里面有些简单的验证和一些同步的信息(本人初学对同步不太了解呵呵)


    基本过程就完成了!


    如果注册用户成功了的话需要更新进去一些辅助的信息msn等


    找到与他if (!$GLOBALS['user']->add_user($username,$email))对应的else下面的


    //定义other合法的变量数组


    $other_key_array = array('msn','qq','office_phone','home_phone','mobile_phone','company_name');


    加上自己定义的company_name字段


    通过下面的执行操作$GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('users'),$update_data,'UPDATE','user_id = ' . $_SESSION['user_id']);


    这就完成了数据的添加操作第一部分的添加完成 小总结一下操作文件的思路   


   


    user.php -> is_registered ->$user->check_user()(ecshop.php类下面的check_user)前台js验证用户名的过程


    user.php register->lib_passport.php add_user->integrate.php add_user 通过页面验证够服务器端的验证过程


    判断超级管理员用户名是否存admin_registered( $adminname )


   


   


2.其次是用户中心的修改页面


    接着进行用户中心的操作!


    首先登陆后进入用户中心->用户信息 发现我们公司地址为空 修改后还是为空  为什么呢?


    接下来我们就像应该是哪里错了?  数据库没有添加进去?而数据库里面有数据!那就是应该没有调取出来!


    对了,就是没有调取出来!下面就来实现它吧!


    这个页面所看到的就是一个显示功能,所以我们应高找到对应的php文件去看看


    http://192.168.0.37:84/user.php?act=profile  通过这个地址我们应该找到user.php 文件里面的 act=profile 进行查看


    找到他 /* 个人资料页面 */elseif ($action == 'profile')


    在它里面找到$smarty->assign('profile',$user_info);在这个前面进行打印数组print_r($user_info);用户的信息


    发现数组里面并没有我们想要的company_name的键值所以我们应该找到哪里给$user_info赋值的,


    所以就又找到$user_info = get_profile($user_id);  继续找到这个函数include_once(ROOT_PATH . 'includes/lib_transaction.php');


    就在它里面发现这里面就是提取的用户的信息


    $sql  = "SELECT user_name,birthday,sex,question,answer,rank_points,pay_points,user_money,user_rank,".


             " msn,qq,office_phone,home_phone,mobile_phone,passwd_question,passwd_answer,company_name ".


           "FROM " .$GLOBALS['ecs']->table('users') . " WHERE user_id = '$user_id'";


    在这个sql里面进行添加我们所想要却没有的company_name 字段打印看看是否有我们想要的数据print_r($infos);于$infos = $GLOBALS['db']->getRow($sql);后


    发现有我们需要的数据但是页面上还是没有我们的数据,不用着急继续往下看发现return $info 而不是$infos


    这里我们明白了还没有对$info['company_name'] 赋予我们的 $infos['company_name']值呢! 


    呵呵 !再重新打印一下 $info  发现数据有了!  基本搞定了就能显示了!


    下来我们返回user.php  elseif ($action == 'profile')  下面  发现有个switch  case  好像是少了一个我们的 company_name我们加上他


    我的是这样的你根据你的情况进行改变case 101:   $extend_info_list[$key]['content'] = $user_info['company_name']; break;


    打印print_r($info); 于$smarty->assign('profile',$user_info);之前。 发现没有问题了!页面应该也能够显示数据了!呵呵 !个人中心部分的显示也就基本


搞定了!


    接下来就是我们的修改!


    发现修改好像是没有用唉?    是的因为这里也需要一些东西!O(∩_∩)O~


    接下来我们就要完成它!


    user.php里面找到 /* 修改个人资料的处理 */elseif ($action == 'act_edit_profile')


    发现数组封装数据的时候没有我们所添加的值 根据需要添加自己的字段


    我的是$other['company_name'] = $company_name = isset($_POST['extend_field101']) ? trim($_POST['extend_field101']) : '';


    接着在下面设置一个断点,打印一下这个$other 数组看看是否包含了我们的数据如果有的话就是正确的。接着下面,找到


    if (!empty($mobile_phone) && !preg_match('/^[d-s]+$/',$mobile_phone))


    {


        show_message($_LANG['passport_js']['mobile_phone_invalid']);


    }


    在他之后加上一些过滤


    //过滤公司的不符合汉字的地址


        if(!empty($company_name) && !preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$company_name)){


                 //UTF-8汉字字母数字下划线正则表达式


                  show_message($_LANG['passport_js']['company_name_invalid']);


        }


    运行后发现还是有问题不能够更改我们的字段的数据。我们继续找问题的来源,发现下面还有一个函数if(edit_profile($profile))


    这个就是我们想要的那个东西了!找到include_once(ROOT_PATH . 'includes/lib_transaction.php');下面的(edit_profile($profile))函数


    你会看到一些验证用户是否存在还有数据什么的!这些与我们的没有关系


    我们只要找到/* 过滤非法的键值 */


    $other_key_array = array('msn','company_name');


    添加上我们的字段就行了!呵呵!以防万一设个断点测试!


    在这个之前print_r($profile['other']);应该就会有我们的值了!


    /* 修改在其他资料 */


    if (!empty($profile['other']))


    {


        $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('users'),$profile['other'],"user_id = '$profile[user_id]'");


    }


    到这里!用户的修改页面就处理完毕了!


3.再有就是后台的会员管理的相关页面文件


    后台可以对会员进行添加!所以我们也应该进行一些步骤的操作!


    后台找到会员管理->会员列表 点击进去


    里面右上角有添加会员项  列表里面也有编辑和删除会员选项


   


    肚子有点难受!!唉!!这几天天气变的!


    整理完他!首先进行编辑项的操作部分


    我们对某个会员进行编辑进去发现我们设置的字段的值为空没有数据跟前面的情况相同就不在重复了!只写上简单的代码!和操作步骤!


    找到我的路径admin123/users.php,打开找到/*-- 编辑用户帐号---------- */elseif ($_REQUEST['act'] == 'edit')


    这里的sql就是获取的数据,在里面加上我们的字段值


    $sql = "SELECT u.user_id,u.sex,u.birthday,u.pay_points,u.rank_points,u.user_rank,u.user_money,u.frozen_money,u.credit_line,


u.parent_id,u2.user_name as parent_username,u.qq,u.msn,


    u.office_phone,u.home_phone,u.mobile_phone,u.company_name".


        " FROM " .$ecs->table('users'). " u LEFT JOIN " . $ecs->table('users') . " u2 ON u.parent_id = u2.user_id WHERE u.user_id='$_GET[id]'";


    接着就是封装数组数据找到if($row)


    $user['mobile_phone']   = $row['mobile_phone'];$user['company_name']   = $row['company_name'];


    再case条件里面加上一个


    case 101:   $extend_info_list[$key]['content'] = $user['company_name']; break;


    设置断点打印!print_r($user);这个就是会员的数据!


    呵呵!完成了会员数据的显示!


    下面是修改提交!


    发现我们直接提交还是没有反应!数据库也米有变化!


    说明我们的工作还没有做完!那我们就继续!


    更新操作!


    首先我们因该找到/*更新用户账号*/elseif ($_REQUEST['act'] == 'update')


    找到封装数组数据的地方加上


    $other['company_name'] = isset($_POST['extend_field101']) ? htmlspecialchars(trim($_POST['extend_field101'])) : '';


    打印数组应该就能够打印出我们的值了!取消断点测试!应该ok!


    下面我们就用户的添加再简单的说一下!


    /*添加会员帐号*/


    elseif ($_REQUEST['act'] == 'insert')


    在封装数组数据的时候加上我们的


    $other['mobile_phone'] = isset($_POST['extend_field5']) ? htmlspecialchars(trim($_POST['extend_field5'])) : '';


    设置断点,打印数组print_r($other);发现我们的数据在里面了!


    去掉断点刷新我们的数据进去了!O(∩_∩)O~

意见反馈 常见问题 官方微信 返回顶部