】;最后在注册页面中判断password即可。"/> 】;最后在注册页面中判断password即可。">

typecho如何让用户登录后跳转到前台页面?

PHPz
發布: 2020-09-04 14:32:15
原創
3432 人瀏覽過

typecho如何让用户登录后跳转到前台页面?

typecho让用户登录后跳转到前台页面的方法:

typecho让用户登录后跳转到前台页面而不是进入后台?另外默认的用户注册只输入用户名和邮件地址,我先添加密码和昵称项该如何实现呢?

我的方法是修改/var/Widget/Register.php和/admin/register.php两个文件,最好是先做好备份(不会写插件不要吐槽...

到/var/Widget/Register.php这个文件,看到41-47行。

/** 如果请求中有password */if (array_key_exists('password', $_REQUEST)) {  $validator->addRule('password', 'required', _t('必须填写密码'));  $validator->addRule('password', 'minLength', _t('为了保证账户安全, 请输入至少六位的密码'), 6);  $validator->addRule('password', 'maxLength', _t('为了便于记忆, 密码长度请不要超过十八位'), 18);  $validator->addRule('confirm', 'confirm', _t('两次输入的密码不一致'), 'password');}
登入後複製

发现路由里面本来就有关于密码的请求处理。

这就非常方便了,根本不用我们从零开始构建。

再往下找,可以找到一行:

$generatedPassword = Typecho_Common::randString(7);
登入後複製

randString?是不是Random String即随机字符串的缩写呢?翻了一下/var/Typecho/Common.php中的实现发现正好就是。

还有文件末尾的:

$this->widget('Widget_Notice')->set(_t('用户 %s 已经成功注册, 密码为 %s', $this->screenName, $generatedPassword), 'success');
登入後複製

还记得这个字符串是注册成功后上方弹出的文字框里的内容吗?看这参数的顺序,我们不难猜出这个$generatedPassword即为密码。

那么我们现在要做的事情就有两个:

1.修改注册时的表单,使它发送的请求中带有password。

2.接收请求时,如果请求中有password则设置,否则还是按照原来的样子使用随机字符串。

打开注册页面,从地址栏里就可以看得到我们的注册文件位于/admin/register.php。 看到20-27行

    " value="" class="text-l w-100" autofocus="">
    " value="" class="text-l w-100">
登入後複製

照猫画虎,在27行之后添加:

    " value="" class="text-l w-100" autofocus="">
    " value="" class="text-l w-100">
登入後複製

根据路由信息,我们需要发送password和confirm的两个请求内容。

这样我们的表单部分就修改完了,刷新页面可以看到多了两个文本框。

之后再来到/var/Widget/Register.php,找到有这么一段代码

$dataStruct = array(  'name'      =>  $this->request->name,  'mail'      =>  $this->request->mail,  'screenName'=>  $this->request->name,  'password'  =>  $hasher->HashPassword($generatedPassword),  'created'  =>  $this->options->time,  'group'    =>  'subscriber');
登入後複製

不难看出可以通过$this->request->请求名称来获取请求内容。

那么我们找到刚才的:

$generatedPassword = Typecho_Common::randString(7);
登入後複製

把它改成:

/** 如果请求中含有password则设置为密码,否则随机密码 */
if (array_key_exists('password', $_REQUEST)) {  $generatedPassword = $this->request->password;}else{  $generatedPassword = Typecho_Common::randString(7);}
登入後複製

至此所有工作就已经完成了,我们就可以在注册页面自定义密码了。

更多相关技术文章,请访问PHP中文网

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板