php 做的一个下项目,登录后页面跳转到首页,在本地的windows 环境是正常的,上传到linux服务器上就跳转不了。求解答。
代码,项目结构如下:
action/loginin.php
//user loginif (isset($_post['username']) && isset($_post['password']) && !empty($_post['username']) && !empty($_post['password'])) { try{ $username = $_post['username']; $password = $_post['password']; $rs = $config[daoimpl]->getloginbyname($username); $arr = mysql_fetch_array($rs); //echo $arr['sys_user_passwd']; if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) { $_session[sessionuser] = $username; echo '';//跳转到根目录下的index.php }else { echo ; exit(0); } } catch (exception $e){ echo ; exit(0); }}
另外服务器是 操作系统:ubuntu 12.04 64位
回复讨论(解决方案) 跳转不了的表现是什么呢?网页不存在?还是脚本没反应?
1、你的传统代码不会抛出异常,所以你的异常处理是无效的,可以删去。或许就是他的原因
2、url 跳转宜使用绝对路径
location=/index.php
跳转不了的表现是什么呢?网页不存在?还是脚本没反应?
js 脚本没反应。
在登录成功代码里加了一个alert
if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) {
$_session[sessionuser] = $username;
echo '';
echo '';
}else {
echo ;
exit(0);
}
效果是:
点击确认后,重新回到登录界面了
文件名大小写一致么?windows默认是不区分大小写的,linux是区分大小写的。另外,你直接访问那个php,看是否能访问?
或者,你些一个静态的html文件,放到 loginin.php 相同位置,把 loginin.php里面的js拷贝进去测试,看能否正常跳转?
重新回到登录界面 不一定是你没有跳转到index.php,有可能是你的session没有注册成功,到index.php又转到login.php了。
你在index.php最前面放置一些输出信息,看是否有访问过index.php
?log看看程序走到哪?,再?定。
//user loginif (isset($_post['username']) && isset($_post['password']) && !empty($_post['username']) && !empty($_post['password'])) { echo '1'; try{ $username = $_post['username']; $password = $_post['password']; $rs = $config[daoimpl]->getloginbyname($username); $arr = mysql_fetch_array($rs); //echo $arr['sys_user_passwd']; echo '2'; if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) { $_session[sessionuser] = $username; echo '3'; echo '';//跳转到根目录下的index.php }else { echo '4'; echo ; exit(0); } } catch (exception $e){ echo '5'; echo ; exit(0); }}
1、你的传统代码不会抛出异常,所以你的异常处理是无效的,可以删去。或许就是他的原因
2、url 跳转宜使用绝对路径
location=/index.php
根据你的意见,我把代码做了修改,但还是不能跳转,登录成功后返回到了登录界面
if (isset($_post['username']) && isset($_post['password'])
&& !empty($_post['username']) && !empty($_post['password'])
) {
//try{
$username = $_post['username'];
$password = $_post['password'];
$rs = $config[daoimpl]->getloginbyname($username);
$arr = mysql_fetch_array($rs);
//echo $arr['sys_user_passwd'];
if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) {
$_session[sessionuser] = $username;
echo '';
echo '';
}else {
echo ;
//exit(0);
}
//}
//catch (exception $e){
//echo ;
//exit(0);
//}
}
有可能是你的session没有注册成功,到index.php页面之后,判断没有登录,又往登录界面跳转了。你先屏蔽index.php的跳转功能试试看。
?log看看程序走到哪?,再?定。
//user loginif (isset($_post['username']) && isset($_post['password']) && !empty($_post['username']) && !empty($_post['password'])) { echo '1'; try{ $username = $_post['username']; $password = $_post['password']; $rs = $config[daoimpl]->getloginbyname($username); $arr = mysql_fetch_array($rs); //echo $arr['sys_user_passwd']; echo '2'; if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) { $_session[sessionuser] = $username; echo '3'; echo '';//跳转到根目录下的index.php }else { echo '4'; echo ; exit(0); } } catch (exception $e){ echo '5'; echo ; exit(0); }}
已经运行到登录成功代码处,3楼有贴运行现象
if (isset($_post['username']) && isset($_post['password']) && !empty($_post['username']) && !empty($_post['password'])) { $username = $_post['username']; $password = $_post['password']; $rs = $config[daoimpl]->getloginbyname($username); $arr = mysql_fetch_array($rs); if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) { $_session[sessionuser] = $username; echo ''; echo ''; }else { echo ; }}
如果登录成功,会弹出“验证成功”对话框,你有吗?
有可能是你的session没有注册成功,到index.php页面之后,判断没有登录,又往登录界面跳转了。你先屏蔽index.php的跳转功能试试看。
session已经设置成功,屏蔽掉index.php的跳转后,程序就停在了logininphp
if (isset($_post['username']) && isset($_post['password']) && !empty($_post['username']) && !empty($_post['password'])) { $username = $_post['username']; $password = $_post['password']; $rs = $config[daoimpl]->getloginbyname($username); $arr = mysql_fetch_array($rs); if ($arr && $arr['sys_user_passwd'] == generateuserpassword($password)) { $_session[sessionuser] = $username; echo ''; echo ''; }else { echo ; }}
如果登录成功,会弹出“验证成功”对话框,你有吗?
有,3楼的图就是登录后,弹出对话框的截图
有可能是你的session没有注册成功,到index.php页面之后,判断没有登录,又往登录界面跳转了。你先屏蔽index.php的跳转功能试试看。
session已经设置成功,屏蔽掉index.php的跳转后,程序就停在了logininphp
从你贴出来的loginin.php代码和运行情况来看,是不可能往 录界面跳转 跳转的,对吧? 屏蔽掉index.php的跳转后,程序就不再往登录界面跳转,这也就说明了一些问题。
你再在index.php最前面输出一些信息,看看情况如何? 那就是你没有 session_start() 了
?出session看看有什西?
问题初步判断确实是出在我session 检查的代码里,谢谢大家帮忙分析!