请教PHP session_start( );后台登陆问题。
发布网友
发布时间:2022-05-19 07:40
我来回答
共5个回答
热心网友
时间:2022-05-19 09:09
session_start 不要加@屏蔽,看看会不会报错。没报错的话,你输出下$_SESSION,看看有没你添加的那个值,判断session的话,用if (isset($_SESSION['islogin'] && $_SESSION['islogin'] == 'yes'),这样比较直观,不容易出错,不建议用 if ($_SESSION['islogin']),虽然没什么影响
PS:你尾部怎么还有个header( "Location: login.php" ); ?前面 if ( !$_SESSION['gogologin'] )后面跳转了,后面else怎么还跳转?
热心网友
时间:2022-05-19 10:27
貌似是 islogin( ) 函数有问题啊,你看:
if ( !$_SESSION['gogologin'] )
{
header( "Location: login.php" );
} //
$_SESSION['gogologin'] 不存在或为空时跳转到登陆页面,而下面的 else 中到数据库中检验账号密码后,数据集为空时终止程序,数据集为真时返回 true ,但下面又有一个header( "Location: login.php" ); !!
所以你先去掉 这个 header( "Location: login.php" ); 再试试,还不行的话就按老办法,不同的地方分别测试下 SESSION['gogologin'] 的值,用 print_r($_SESSION ) 打印出值看下。一段一段的试。
另外 ,你要把@session_start( ); 放在所有代码的最前面。
热心网友
时间:2022-05-19 12:02
看不懂,你把你的登陆成功 的 哪个条件检测值echo出来看看撒,老是成功,说明条件始终是真,反过去一句一句地查!
热心网友
时间:2022-05-19 13:53
1.session_start()前面不能有输出语句,像echo,print_r()等不能出现;
2.你的函数不知道什么理由要把session_start()放在里面,直接放在最上面,<?php
session_start()
function islogin( )
{
....
3.这页面就一个函数,你是怎么进入这个函数的,就是需要你login.php里面islogin(),所有这个页面并没有什么使程序致命的错误,就是后面又跳转到login.php了,
if ( !( $rs = $db->query( $sql ) ) )
{
exit( $sql );
}
if ( $row = $db->fetch_array( $rs ) )
{
return TRUE;//成功了,但你后面又header( "Location: login.php" ),不知道你这程序致命设计的,既然成功了,就跳转到其他的页面,而且不能在这里加跳转啊,应该是返回true那里加跳转,也就是验证这个返回的是不是true的地方加添转
//比如:login.php是这么写的
/*if(islogin()==true)
{
header( "Location: main.php" );
}
else{
header( "Location: login.php" );
}
*/
}
热心网友
时间:2022-05-19 16:01
感觉lz写的挺危险的因为 session_start和 Header的前面都不能输出信息 可是你把他们写在了函数里面没有写在文件开头 只要前面有个warming 你就跪下了 我就遇到过这种情况