Tank Auth 忘记密码不起作用
我使用 CodeIgniter + Tank Auth。只有代码 http://localhost/XXXXXXXX/auth/forgot_password 不起作用。 结果总是: “您的激活密钥不正确或已过期。请再次检查您的电子邮件并按照说明进行操作。”
注册和激活就OK了。
I use CodeIgniter + Tank Auth. Only the code http://localhost/XXXXXXXX/auth/forgot_password doesn't work.
The result always is:
"Your activation key is incorrect or expired. Please check your email again and follow the instructions."
The registration and activation are all right.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(4)
如果 URL 中的 XXXXXXXX 表明您在 /auth/ 之前有一个额外的 URI 段,则应将其更改
function reset_password()
{
$user_id = $this->uri->segment(3);
$new_pass_key = $this->uri->segment(4);
为:
function reset_password()
{
$user_id = $this->uri->segment(4);
$new_pass_key = $this->uri->segment(5);
注意 $this->uri->segment() 中的不同数字。在 /auth/ 之前有一个额外的段,您的用户 ID 和激活码将作为第四和第五段中的参数传递(而不是 Tank Auth 假定的第三和第四段)。
它可能是您数据库中的时间戳
在用户模型函数“can_reset_password”中
使用 UNIX_TIMESTAMP(new_password_requested)
您可以回显 $user_id 和 $new_pass_key 如果它们正确,那么问题出在时间比较上。
要修复 url 以始终获取
$break =$this->uri->total_segments();
$new_pass_key= $this->uri->segment($break);
$user_id= $this->uri->segment($break-1);
时间戳的最后两段,请尝试对用户模型中的函数 Reset_password 执行此操作
function reset_password($user_id, $new_pass, $new_pass_key, $expire_period = 900)
{
$this->load->helper('date');
$this->db->set('password', $new_pass);
$this->db->set('new_password_key', NULL);
$this->db->set('new_password_requested', NULL);
$this->db->where('id', $user_id);
$this->db->where('new_password_key', $new_pass_key);
$this->db->where('UNIX_TIMESTAMP(new_password_requested) >=',mysql_to_unix( time() - $expire_period));
$this->db->update($this->table_name);
return $this->db->affected_rows() > 0;
}
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
一些可能的问题:
$config['forgot_password_expire']
。您的电子邮件中可能链接到了错误的网址。
这看起来不对:
http://localhost/XXXXXXXX/auth/forgot_password
应该是这样的:
http://localhost/auth/forgot_password/XXXXXXXX
不阻止您使用 Tank Auth,但使用后我建议您尝试 Ion_Auth 如果你还处于早期阶段。我相信它也用在 PyroCMS 中,如果这增加了任何信用的话。
Some likely problems:
$config['forgot_password_expire']
in Tank Auth.You may be linking to the wrong URL in your email.
This doesn't look right:
http://localhost/XXXXXXXX/auth/forgot_password
It should be something like:
http://localhost/auth/forgot_password/XXXXXXXX
Not to discourage you from using Tank Auth, but having used it I can recommend trying Ion_Auth if you are still in the early stages. I believe it's used in PyroCMS as well if that adds any credit.