不太明白楼主的意思.既然userstate也是在后台的数据库存储的,而登录验证也是通过取得后台数据库中的用户名和密码的,那么为何不将state的字段值取出来呢,按照你说的,默认为0,即没有权限登录,那么在登录验证字符串中加上 "and userstate=1",如果返回值为空就不能登录,这和只用用户名和密码登录的原理不是一样的嘛
只是加了一个附加验证的条件罢了
只是加了一个附加验证的条件罢了
解决方案 »
- 求助,写一个Apache Rewrite 地址重写规则。
- PHP入门书籍!
- 如何快速了解一个php开源框架并对此进行二次开发
- 请教在smarty模版中如何 把数据库a上的表b读取出来,并把数据显示在页面上
- <招聘> PHP/ASP工程师实习生 -- 计算机世界
- PHP,session问题,$_SESSION 取不出数据,怎么回事?
- 谁知道html怎么放进app里
- 请教一个关于英文字符串传递的问题
- 字符串搜索问题--正则表达式
- 为什么老是报这个错:Premature end of script headers: php.exe
- 控制同台计算机重复投票问题
- 我在法国有能力找到web类项目订单,现欲寻求国内合作者/程序员远程共同实现(业余时间)
我改了,将这个LOGON函数加上了 "and userstate=1",但好象不起作用。。仍然可以进入。。我改的是ECSHOP的源代码,网上开源的。
我在想是不是这个程序的函数编译过啊,所以不行。。搞不懂了。
你数据库中userstate字段是什么啊? varchar, bit ,tinyint?
再试试单引之类的吧,登录验证应该没这么多问题吧
if ($user->login($username, $password))
{
update_user_info();
recalculate_price();
if ($url == 'user.php')我想这个LOGIN就是所需要的函数,所以我就搜索了一下它,把它修改了,它的代码如下:
function login($username, $password)
{
if ($this->check_user($username, $password) > 0)
{
if ($this->need_sync)
{
$this->sync($username,$password);
我想这里的CHECK_USER应该是最终的验证函数,再找:
{
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table($this->user_table).
" WHERE " . $this->field_name . "='" . $post_username . "' AND " . $this->field_pass . " ='" . $this->compile_password(array('password'=>$password)) . "'"; return $this->db->getOne($sql);
}我把里面的$SQL改掉了,加上了一个USERSTATE=1,不知道是不是这样?
再查一下sync()函数是干嘛的
如果上面两个对sql语句没有多大影响的话,应该是可以直接加上去 and userstate='1'或and userstate=1的