作者:alan
问题:通过站外激活的账号,没有邮箱和密码,一代取消绑定就变成了一次性用户
解决:在站外登陆激活的时候,要求输入 邮箱和密码
修改方法:依次修改两个文件即可。
第一个修改文件路径:apps - home - Lib - Action - PublicAction.class.php
查找 第一处
// 激活外站登陆
public function initotherlogin(){
if ( ! in_array($_POST['type'], array('douban','sina', 'qq')) ) {
$this->error('参数错误');
}
if( !isLegalUsername( t($_POST['uname']) ) ){
$this->error('昵称格式不正确');
}
加入代码:含义检测代码
//添加EMAIL+密码 BY ALAN QQ8510001 begin
if ( ! $this->isValidEmail($_POST['email']) ) {
$this->error('Email格式错误,请重新输入');
}
if( strlen($_POST['password']) < 6 || strlen($_POST['password']) > 16 ) {
$this->error('密码必须为6-16位,且两次必须相同');
}
if ( ! $this->isEmailAvailable($_POST['email']) ) {
$this->error('Email已经被使用,请重新输入');
}
//添加EMAIL+密码 end
查找:第二处
// 初使化用户信息, 激活帐号
$data['uname'] = t($_POST['uname'])?t($_POST['uname']):$userinfo['uname'];
加入代码:含义添加入数据库
//添加EMAIL+密码 BY ALAN QQ8510001
$data['email'] = t($_POST['email']);
$data['password'] = md5($_POST['password']);
第二个修改文件路径 apps - home - Tpl - default - Public - otherlogin.html
查找:代码
<p>用户名:
<input type="text" name="uname" value="{$user.uname}"/>
下面加入:
EMail: <input type="text" name="email" value=""/> (下次登录可以使用)<br />
密码: <input type="password" name="password" value=""/> (密码)<br />
这里的样式可以自定义。。
加入代码之后,验证码不显示。
发现一个奇怪的现象,只要一修改apps – home – Lib – Action – PublicAction.class.php验证码就无法显示。
thinksns都是utf8编码的,使用notepad++之类的工具编辑,选择utf8无bom格式,用记事本编辑就不行。
对,windows记事本不支持utf8