网站地图    收藏   

主页 > 后端 > ecshop教程 >

关于ecshop注册会员后二次登录不成功的问题 - e

来源:自学PHP网    时间:2014-11-28 23:31 作者: 阅读:

[导读] 很久没上博客写东西了,每次都是把平常工作上遇到的问题解决后才发布到博客上面来,一来是感觉其他人用到相同平台应该也会碰到同样的问题,在这里给大家领好方向,二来,本人记性不大...

关于ecshop注册会员后二次登录不成功的问题

很久没上博客写东西了,每次都是把平常工作上遇到的问题解决后才发布到博客上面来,一来是感觉其他人用到相同平台应该也会碰到同样的问题,在这里给大家领好方向,二来,本人记性不大好,容易忘事.

说说这个问题吧,今天早上还在测试基于ecshop后台的商城开发,其实之前一直出现这个问题,源于本人不长记性,还以为是自己记错密码了,早上认真的想了一回,发现不是本人记错了.

比如:新注册一个会员,成功后顺利登录到会员中心页面,接着退出,再登录,这次还是成功的,接着再登录,这次就不行了,显示用户名或密码不正确,本人才意识到问题大条了,百度上搜啊搜,看到很多遇到同样问题的帖子,但是没有解决到根本上,郁闷!

直到旁边的兄弟提醒了下,先注册一个,看数据库这条记录,然后重新登录,再看一下这条记录,比较一下有什么细微变化没,哥照做了,没错,有三个地方发生变化,其中一个是登录次数,这个可以忽略,不是重点,另外一个是密码的md5值和  ec_salt 这个字段,可以看出 ec_salt 注册时原本是空值,重新登录后这里却生成了一个值,差别就在此.

可以在ecshop整个文件夹里搜索这个字段出现的地方 在integrates/ecshop.php 可以找到$new_password=md5(md5($password).$ec_salt); 这句话,在这句代码往上看

  1. if(emptyempty($ec_salt)) 
  2. $ec_salt=rand(1,9999); 
  3. $new_password=md5(md5($password).$ec_salt); 
  4. $sql = "UPDATE ".$this->table($this->user_table)."SET password= '" .$new_password."',ec_salt='".$ec_salt."'"
  5.                    " WHERE user_name='$post_username'"
  6.                          $this->db->query($sql); 
  7.             } 

到这里问题就可以找到了,注册时ec_salt 这个字段是空的,所以当注册后session其实已经生成,所以直接跳转会员中心时不用经过登录这段代码的运行,所以就直接跳过上面这段代码了,但是第二次登录的时候,就会经过这段代码,检测到这个空值时,就会先随机生成一个数,在密码 MD5值情况下,再和这个值 MD5一次,这样就造成了密码被重新修改了一次,接着等你退出再要登录的时候,这时候的密码就不是你注册时候的那个密码了.

不好意思废话了那么多。。。

解决办法:1、直接在数据库里给这个字段默认一个值,四位数以内都可以.

          2、在代码里面改,就是在增加会员记录时,给ec_salt赋一个默认值.

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论