Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[素材] 邮箱注册登录(6月30日已修复新注册用户无法同步到ucenter问题)

[复制链接]
weiwenchu 发表于 2011-6-30 17:25:21 | 显示全部楼层 |阅读模式
本帖最后由 weiwenchu 于 2011-9-24 09:10 编辑

给我自己的网站做个广告,淮安爱家网:http://www.haaijia.com/
思路很简单:将用户名检测换成邮箱检测,用户完成注册后同时将用户名(即注册邮箱)数据写入email字段中,两者互不冲突。(有个小漏洞就是个人资料中的常用邮箱可以修改,而登录邮箱还是原先注册时的那个邮箱,最懒的解决方法是在个人资料模版中删除相应的字段即可)
1.修改注册模版中注册邮箱的长度限制
打开文件:\template\default\do_register.htm
查找代码:
  1. if(unLen < 3 || unLen > 15) {
  2. warning(cu, unLen < 3 ? '用户名小于3个字符' : '用户名超过 15 个字符');
  3. return;
  4. }
复制代码

修改为:
  1.   if(unLen < 6 || unLen > 36) {
  2.    warning(cu, unLen < 6 ? '用户名小于6个字符' : '用户名超过 36 个字符');
  3.    return;
  4.   }
复制代码
注意:这里只是修改了模版页面中用户输入的字符数的检测限制,数据库中相应的username字段的长度限制需要手动去,由于数量较多,这里就不作详细的叙述了。
同时删除以下代码:


  1.   <tr><th>邮箱</th><td><input type="text" id="email" name="email" value="@" class="t_input" tabindex="5" />
  2.   <br>请准确填入您的邮箱,在忘记密码,或者您使用邮件通知功能时,会发送邮件到该邮箱。</td></tr>
复制代码

2.关键!修改注册页面的php代码
打开文件:source/do_register.php
查找并删掉以下代码:

  1. $email = isemail($_POST['email'])?$_POST['email']:'';
  2. if(empty($email)) {
  3. showmessage('email_format_is_wrong');
  4. }
  5. //检查邮件
  6. if($_SCONFIG['checkemail']) {
  7. if($count = getcount('spacefield', array('email'=>$email))) {
  8. showmessage('email_has_been_registered');
  9. }
  10. }
复制代码


在下面添加代码:


  1.   $email = $username;

  2.   !isemail($username)?showmessage('邮箱不合法!'):'';//isemail检查邮箱是否有效  
  3.   $query=$_SGLOBAL['db']->query("select uid from ".tname('member')." where username='$username'");
  4.   $u=$_SGLOBAL['db']->fetch_array($query);
  5.   !empty($u)?showmessage('email_has_been_registered'):'';//检查邮箱重复
复制代码
继续查找代码:
  1. //检查IP
  2. $onlineip = getonlineip();
  3. if($_SCONFIG['regipdate']) {
  4. $query = $_SGLOBAL['db']->query("SELECT dateline FROM ".tname('space')." WHERE regip='$onlineip' ORDER BY dateline DESC LIMIT 1");
  5. if($value = $_SGLOBAL['db']->fetch_array($query)) {
  6. if($_SGLOBAL['timestamp'] - $value['dateline'] < $_SCONFIG['regipdate']*3600) {
  7. showmessage('regip_has_been_registered', '', 1, array($_SCONFIG['regipdate']));
  8. }
  9. }
  10. }
复制代码
在下面添加代码:
  1. $query=$_SGLOBAL['db']->query('select uid from '.tname('member').' order by uid desc limit 0,1');
  2. $value=$_SGLOBAL['db']->fetch_array($query);
复制代码
继续查找代码:
  1. $username = trim($_GET['username']);
  2. if(empty($username)) {
  3. showmessage('user_name_is_not_legitimate');
  4. }
  5. @include_once (S_ROOT.'./uc_client/client.php');
复制代码
在下面添加代码
  1. !isemail($username)?showmessage('邮箱不合法!'):'';
  2. $query=$_SGLOBAL['db']->query("select uid from ".tname('member')." where username='$username'");
  3. $u=$_SGLOBAL['db']->fetch_array($query);
  4. !empty($u)?showmessage('email_has_been_registered'):showmessage('succeed');
复制代码

3.修改登录页面PHP代码
打开文件 source/do_login.php
查找代码:
  1. //同步获取用户源
  2. if(!$passport = getpassport($username, $password)) {
  3. showmessage('login_failure_please_re_login', 'do.php?ac='.$_SCONFIG['login_action']);
  4. }
复制代码
在下面添加代码:
  1. $passport = getpassport($username, $password);
  2. if(empty($passport)){
  3. $password = md5("$password");
  4. $sql="select uid,username from ".tname('member')." where password='$password' and username='$username'";
  5. $query = $_SGLOBAL['db']->query($sql);
  6. $passport = $_SGLOBAL['db']->fetch_array($query);
  7. if(empty($passport)){
  8. showmessage('login_failure_please_re_login', 'do.php?ac='.$_SCONFIG['login_action']);
  9. }
  10. }
复制代码

4.修改ucenter和uc_client中关于用户长度的限制
打开文件:uc_client/model/user.php和ucenter中的同名目录
查找代码:
  1. function check_username($username) {
  2. $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
  3. $len = strlen($username);
  4. if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*"\s\<\>\&]|$guestexp/is", $username)) {
  5. return FALSE;
  6. } else {
  7. return TRUE;
  8. }
  9. }
复制代码

修改里面的数字(同第一步)

最后修改数据库中相应字段的长度限制就可以了,还有别忘了更新缓存!



 楼主| weiwenchu 发表于 2011-6-30 17:25:40 | 显示全部楼层
本帖最后由 weiwenchu 于 2011-6-30 17:26 编辑

自己顶

如果还是弄不好的可以加我QQ:393486
回复

使用道具 举报

yolin5210 发表于 2011-7-20 11:54:05 | 显示全部楼层
好东西顶
回复

使用道具 举报

dreamboycx 发表于 2012-1-31 11:26:54 | 显示全部楼层
顶楼主。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-3 20:22 , Processed in 0.168512 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表