是这样的,我开发了一个网站,在我本机能正常登陆,一点事也没有,但我把网站上传到客户那里,就是登陆不上,账号密码都正确,如果账号,密码,验证码输入错误也能正常显示出错信息。当都正确的时候,就是不能跳转页面,$_session['admin'] 好像也写入失败,奇怪的是,验证码的session很正常(因为能显示验证码是否错误)
所以我怀疑是$_SESSION['admin']=$lgUser; 代码出错导致下面的跳转动作也不发生了,我的php是5.3 win32 那边是5.2 unix 平台。还有一个login.html 页面 开发模式是mvc+单点入口模式,admin.php 的开头就第二行就是session_start(),第一行用常理来判断是否非法打开。
我怀疑 $_SESSION['admin'] 这个admin关键词不能被使用?
admin.php页面
if(isset($_POST['lgUser'])&&isset($_POST['lgPswd'])){
if($_SESSION['code']!=$_POST['lgCode']){
echo '<script language="javascript">warn("验证码错误!")</script>';
return false;
}
$lgUser=$_POST['lgUser'];
$lgPswd=md5($_POST['lgPswd']);
if($db->get_num('select `id` from ```admin``` where `username`="'.$lgUser.'" and `password`="'.$lgPswd.'"')){
$_SESSION['admin']=$lgUser;
setcookie('admin',$lgUser,time()+3600*24*7);
header('Location:index.php?module=admin&mod=setting');
}else{
echo '<script language="javascript">warn("账号或密码错误!")</script>';
}
}
请各位帮我解决下这个问题!
所以我怀疑是$_SESSION['admin']=$lgUser; 代码出错导致下面的跳转动作也不发生了,我的php是5.3 win32 那边是5.2 unix 平台。还有一个login.html 页面 开发模式是mvc+单点入口模式,admin.php 的开头就第二行就是session_start(),第一行用常理来判断是否非法打开。
我怀疑 $_SESSION['admin'] 这个admin关键词不能被使用?
admin.php页面
if(isset($_POST['lgUser'])&&isset($_POST['lgPswd'])){
if($_SESSION['code']!=$_POST['lgCode']){
echo '<script language="javascript">warn("验证码错误!")</script>';
return false;
}
$lgUser=$_POST['lgUser'];
$lgPswd=md5($_POST['lgPswd']);
if($db->get_num('select `id` from ```admin``` where `username`="'.$lgUser.'" and `password`="'.$lgPswd.'"')){
$_SESSION['admin']=$lgUser;
setcookie('admin',$lgUser,time()+3600*24*7);
header('Location:index.php?module=admin&mod=setting');
}else{
echo '<script language="javascript">warn("账号或密码错误!")</script>';
}
}
请各位帮我解决下这个问题!
第一行用常理来判断是否非法打开
第二行就是session_start()
那么数据库对象 $db 在哪里实例化的?
$sql = 'select `id` from ```admin``` where `username`="'.$lgUser.'" and `password`="'.$lgPswd.'"';
echo $sql;
exit();
看SQL语句在数据库中执行是否正常~
1.$_SESSION['admin']这个关键字是可以使用的,我就在使用.
2.你的session_start();是从哪里开始的
3.$db->get_num这个类属性是否做到了它的工作
建议一关一关的排除,用die来做,把错误代码贴出来.
必须写在第一行。
那你直接打印$_SESSION看看