1.修改注册时的表单,使它发送的请求中带有password。
2.接收请求时,如果请求中有password则设置,否则还是按照原来的样子使用随机字符串。


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

<p>
   <label for="name" class="sr-only"><?php _e('用户名'); ?></label>
   <input type="text" id="name" name="name" placeholder="<?php _e('用户名'); ?>" value="<?php echo $rememberName; ?>" class="text-l w-100" autofocus />
</p>
<p>
   <label for="mail" class="sr-only"><?php _e('Email'); ?></label>
   <input type="email" id="mail" name="mail" placeholder="<?php _e('Email'); ?>" value="<?php echo $rememberMail; ?>" class="text-l w-100" />
</p>

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

<p>
   <label for="password" class="sr-only"><?php _e('密码'); ?></label>
   <input type="password" id="password" name="password" placeholder="<?php _e('密码'); ?>" value="<?php echo $rememberPassword; ?>" class="text-l w-100" autofocus />
</p>
<p>
   <label for="confirm" class="sr-only"><?php _e('重复密码'); ?></label>
   <input type="password" id="confirm" name="confirm" placeholder="<?php _e('重复密码'); ?>" value="<?php echo $rememberConfirm; ?>" class="text-l w-100" />
</p>

找到:

$generatedPassword = Typecho_Common::randString(7);

把它改成:

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

至此我们就完成了,可以去试下效果