您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop二次开发用户注册修改
妙竹2024-12-11Ecshop商城教程已有人查阅
导读按照之前的教程总纲,这篇是这个系列的第一篇教程,EcShop会员系统模块下的用户注册。Web2.0时代下的网站,拥有一个会员系统是一个标配,注册自然是这个系统的第一步,也是很简单一个
按照之前的教程总纲,这篇是这个系列的第一篇教程,EcShop会员系统模块下的用户注册。Web2.0时代下的网站,拥有一个会员系统是一个标配,注册自然是这个系统的第一步,也是很简单一个小功能了。会员注册的流程基本的思路都是一样的:
用户提交注册信息->JS验证(前端验证)->后台验证->写入数据
不管什么网站,看着它注册流程的步骤或源码多复杂,都离不开这个注册的大概流程,本来很简单的注册之前所以变的复杂,更多只是因为安全的考虑现在的“黑客”无聊的太多了。所以在网站建设的过程中,用户注册或者其他用用户提交信息的地方,较好前端和后台都要做严格的验证。知道了这个注册流程,也就知道了EcShop用户注册的流程了,只是EcShop为了让网站管理者即使在不懂代码的情况下,也能完成一些个性化的注册需要使得它的源码看似复杂了一些。
进入网站后台我们可以看到EcShop的会员注册设置也就是添加一些让用户添加的选项,这个每一个网站可以根据自己需求来选中了。
说了那么多,下面才是我们二次开发要关注的东西^_^!
第一步:用户点击注册按钮,浏览器向user.php提交act=register参数,
后台代码
系统设置->商店设置->网店设置
下面有个是否关闭设置,如果设置为是, 那么$_CFG['shop_reg_closed’]的值为1,在模版中将显示 用户注册已经关闭,设置为否,就正常的显示了注册用户需要填写的注册表单。
第二步:填写信息的过程,使用了ajax对用户的信息进行了前端的验证,验证方法在user.js 对用户的信息验证的方法都在这里面,只需要做简单的修改,就能完成我们想要的验证方式。
第三步:通过了前端验证之后,在后台进一步处理(user.php),
用户提交注册信息->JS验证(前端验证)->后台验证->写入数据
不管什么网站,看着它注册流程的步骤或源码多复杂,都离不开这个注册的大概流程,本来很简单的注册之前所以变的复杂,更多只是因为安全的考虑现在的“黑客”无聊的太多了。所以在网站建设的过程中,用户注册或者其他用用户提交信息的地方,较好前端和后台都要做严格的验证。知道了这个注册流程,也就知道了EcShop用户注册的流程了,只是EcShop为了让网站管理者即使在不懂代码的情况下,也能完成一些个性化的注册需要使得它的源码看似复杂了一些。
进入网站后台我们可以看到EcShop的会员注册设置也就是添加一些让用户添加的选项,这个每一个网站可以根据自己需求来选中了。
说了那么多,下面才是我们二次开发要关注的东西^_^!
第一步:用户点击注册按钮,浏览器向user.php提交act=register参数,
后台代码
/* 显示会员注册界面 */
if ($action == 'register')
{
if ((!isset($back_act)||empty($back_act)) && isset($GLOBALS['_SERVER']['HTTP_REFERER']))
{
$back_act = strpos($GLOBALS['_SERVER']['HTTP_REFERER'], 'user.php') ? './index.php' : $GLOBALS['_SERVER']['HTTP_REFERER'];
}
/* 取出注册扩展字段 */
$sql = 'SELECT * FROM ' . $ecs->table('reg_fields') . ' WHERE type < 2 AND display = 1 ORDER BY dis_order, id';
$extend_info_list = $db->getAll($sql);
$smarty->assign('extend_info_list', $extend_info_list);
/* 验证码相关设置 */
if ((intval($_CFG['captcha']) & CAPTCHA_REGISTER) && gd_version() > 0)
{
$smarty->assign('enabled_captcha', 1);
$smarty->assign('rand', mt_rand());
}
/* 密码提示问题 */
$smarty->assign('passwd_questions', $_LANG['passwd_questions']);
/* 增加是否关闭注册 */
$smarty->assign('shop_reg_closed', $_CFG['shop_reg_closed']);
// $smarty->assign('back_act', $back_act);
$smarty->display('user_passport.dwt');
}
其中 取出注册字段就是后台在网站管理后台会员注册选项设置的字段,EcShop默认必须填写的字段使用户名 邮箱 还有密码,其他的就在后台设置。跳转到user_passport.dwt模版以后如果,会先判断用户注册功能是否关闭,这个使在网站后台系统设置中设置,系统设置->商店设置->网店设置
下面有个是否关闭设置,如果设置为是, 那么$_CFG['shop_reg_closed’]的值为1,在模版中将显示 用户注册已经关闭,设置为否,就正常的显示了注册用户需要填写的注册表单。
第二步:填写信息的过程,使用了ajax对用户的信息进行了前端的验证,验证方法在user.js 对用户的信息验证的方法都在这里面,只需要做简单的修改,就能完成我们想要的验证方式。
第三步:通过了前端验证之后,在后台进一步处理(user.php),
/* 注册会员的处理 */
elseif ($action == 'act_register')
{
/* 增加是否关闭注册 */
if ($_CFG['shop_reg_closed'])
{
$smarty->assign('action', 'register');
$smarty->assign('shop_reg_closed', $_CFG['shop_reg_closed']);
$smarty->display('user_passport.dwt');
}
else
{
include_once(ROOT_PATH . 'includes/lib_passport.php');
$username = isset($_POST['username']) ? trim($_POST['username']) : '';
$password = isset($_POST['password']) ? trim($_POST['password']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$other['mobile_phone'] = isset($_POST['extend_field5']) ? $_POST['extend_field5'] : '';
$gender = isset($_POST['sex']) ? trim($_POST['sex']) : '';
$other['msn'] = isset($_POST['extend_field1']) ? $_POST['extend_field1'] : '';
$other['qq'] = isset($_POST['extend_field2']) ? $_POST['extend_field2'] : '';
$other['office_phone'] = isset($_POST['extend_field3']) ? $_POST['extend_field3'] : '';
$other['home_phone'] = isset($_POST['extend_field4']) ? $_POST['extend_field4'] : '';
$sel_question = empty($_POST['sel_question']) ? '' : compile_str($_POST['sel_question']);
$passwd_answer = isset($_POST['passwd_answer']) ? compile_str(trim($_POST['passwd_answer'])) : '';
$back_act = isset($_POST['back_act']) ? trim($_POST['back_act']) : '';
if(empty($_POST['agreement']))
{
show_message($_LANG['passport_js']['agreement']);
}
if (strlen($username) < 3)
{
show_message($_LANG['passport_js']['username_shorter']);
}
if (strlen($password) < 6)
{
show_message($_LANG['passport_js']['password_shorter']);
}
if (strpos($password, ' ') > 0)
{
show_message($_LANG['passwd_balnk']);
}
if(use_name_type($username)){
$email = $username;
}else{
$other['mobile_phone'] = $username;
}
/* 验证码检查 */
if ((intval($_CFG['captcha']) & CAPTCHA_REGISTER) && gd_version() > 0)
{
if (empty($_POST['captcha']))
{
show_message($_LANG['invalid_captcha'], $_LANG['sign_up'], 'user.php?act=register', 'error');
}
/* 检查验证码 */
include_once('includes/cls_captcha.php');
$validator = new captcha();
if (!$validator->check_word($_POST['captcha']))
{
show_message($_LANG['invalid_captcha'], $_LANG['sign_up'], 'user.php?act=register', 'error');
}
}
if (register($username, $password, $email, $gender,$other) !== false)
{
/*把新注册用户的扩展信息插入数据库*/
$sql = 'SELECT id FROM ' . $ecs->table('reg_fields') . ' WHERE type = 0 AND display = 1 ORDER BY dis_order, id'; //读出所有自定义扩展字段的id
$fields_arr = $db->getAll($sql);
$extend_field_str = ''; //生成扩展字段的内容字符串
foreach ($fields_arr AS $val)
{
$extend_field_index = 'extend_field' . $val['id'];
if(!empty($_POST[$extend_field_index]))
{
$temp_field_content = strlen($_POST[$extend_field_index]) > 100 ? mb_substr($_POST[$extend_field_index], 0, 99) : $_POST[$extend_field_index];
$extend_field_str .= " ('" . $_SESSION['user_id'] . "', '" . $val['id'] . "', '" . compile_str($temp_field_content) . "'),";
}
}
$extend_field_str = substr($extend_field_str, 0, -1);
if ($extend_field_str) //插入注册扩展数据
{
$sql = 'INSERT INTO '. $ecs->table('reg_extend_info') . ' (`user_id`, `reg_field_id`, `content`) VALUES' . $extend_field_str;
$db->query($sql);
}
/* 写入密码提示问题和答案 */
if (!empty($passwd_answer) && !empty($sel_question))
{
$sql = 'UPDATE ' . $ecs->table('users') . " SET `passwd_question`='$sel_question', `passwd_answer`='$passwd_answer' WHERE `user_id`='" . $_SESSION['user_id'] . "'";
$db->query($sql);
}
/* 判断是否需要自动发送注册邮件 */
if ($GLOBALS['_CFG']['member_email_validate'] && $GLOBALS['_CFG']['send_verify_email'])
{
send_regiter_hash($_SESSION['user_id']);
}
$ucdata = empty($user->ucdata)? "" : $user->ucdata;
show_message(sprintf($_LANG['register_success'], $username . $ucdata), array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act, 'user.php'), 'info');
}
else
{
$err->show($_LANG['sign_up'], 'user.php?act=register');
}
}
}
这里就是对用户提交信息的后台过滤处理,正确之后跳转首页,错误返回错误页面!EcShop用户注册涉及到的文件代码就这几个,在二次开发的过程根据自己的需求进行修改即可,没有什么比较难以理解的代码,修改起来很简单了!
本文标签:
很赞哦! ()
相关教程
图文教程
ecshop商品搜索结果页title标题修改为关键词+商城名称
考虑到“热门搜索”有可能会被百度收录,所以优化一下搜索结果页面的Title,应该还是有些用处的。下面方法在Ecshop2.7.2版本上测试通过
ecshop商城查看全部商品分类中的商品数量不正确怎么修复
在ecshop中有个查看全部商品分类的页面—-catalog.php这个页面中显示的商品分类中的 分类商品为0,只有最后 的商品数量显示正确
ecshop截取中文字符串的代码实例
做ecshop的时候要把用户订单的姓名显示在网页中但是又不想全部显示出来,这时会用到截取中文字符的情况,由于中文的截取经常出现乱码
ecshop首页调用显示最新商品评论
ECSHOP首页显示很新评论,首页调用商品评论新建立一个 index_comments.lbi 库文件然后在index.dwt 要显示的位置调用:
相关源码
-
自适应黑色简繁双语轴承齿轮机械设备制造网站模板该模板为轴承齿轮机械制造企业提供一体化网站建设方案,着重解决行业特有的多语言展示、移动端适配和高效率内容管理需求,帮助企业精准展示产品特性与工艺流程查看源码 -
(自适应响应式)家电维修清晰服务网站pbootcms模板免费下载本模板基于PbootCMS内核开发,为维修服务类企业打造,特别适合家电维修、设备维护等行业使用。通过简洁直观的界面设计,帮助企业快速搭建专业级服务平台,实现线上业务高效管理。查看源码 -
(PC+WAP)企业管理工程造价资产评估财务审计带留言网站模板本模板基于PbootCMS内核开发,为工程造价咨询、财务审计类企业量身打造,同时支持多行业快速适配。采用PC+WAP双端同步设计,数据实时互通,助您高效展示企业形象与服务能力。查看源码 -
(PC+WAP)红色驾校培训学车在线预约源码下载基于PbootCMS内核开发的驾校培训专用网站模板,深度适配驾驶培训行业展示需求。采用PC与移动端同步响应设计,单一后台统一管理内容数据,更换图文素材后可快速转变为其他行业网站。查看源码 -
(响应式自适应)小学初中作文论文文章资讯博客pbootcms模板下载为中小学作文、教育类网站设计,特别适合展示学生作文、教学资源和写作指导等内容。采用响应式技术,确保在不同设备上都能获得良好的阅读体验。查看源码 -
(PC+WAP)绿色资源回收新能源环保设备pbootcms源码下载基于PbootCMS系统深度开发的环保行业模板,特别适配资源回收设备、新能源技术、环境治理装备等企业的线上展示需求。集成产品库、解决方案、环保案例等专业模块,助力企业高效传递绿色价值。查看源码
| 分享笔记 (共有 篇笔记) |
