我创建了一个用于游戏服务器管理的小型php站点,但它不会强制未登录的用户登录。如果会话不是活动的,我添加了一个重定向,并在注销时销毁了会话。该站点位于此处http://zelware.co.uk/gameman
它会强制你第一次登录,但是如果你把login.php从网址中去掉,它会让你再次进入主页面。如有任何帮助,将不胜感激,谢谢!
发布于 2013-03-31 20:38:35
您需要一个if语句,其中
$_SESSION['loggedin']==TRUE; 检查是否有人已登录。还可以考虑设置session_id()并用它重定向。
发布于 2013-03-31 21:04:54
要对用户进行身份验证,您需要一个简单的机制:
is_user_logged_in(){ return $_ session‘’logged_ in‘;//它是一个布尔值,应由登录函数设置为TRUE }//在您的每一页中,您都应该调用此if ( !is_user_logged_in() ){ //重定向到您的登录页头(“Location:http://yoursitename.com/login_page.php");}
if ( valid_user($username,$password) ){ //这是您应该在其他页面中检查的值$_ session‘’logged_ in‘= TRUE;//您可能还需要将其他与用户相关的信息存储在会话$_ session 'user’= array("id“=> 1,"username”=> "test_user")中//来自DB的数据数组}
未设置($_SESSION‘’logged_in‘);session_destroy();
发布于 2013-03-31 23:33:35
您需要创建一种机制来验证用户是否已登录。登录时,系统会设置一个会话cookie --一个随机的、唯一的哈希。哈希值以cookie的形式存储在数据库中,同时存储的还有用户名、密码、IP和登录时间。
当用户访问页面时,您调用一个函数,看起来有点像这样:(不完全是,这并不是很好,只是基本的检查,您还应该检查IP是否匹配以及会话是否已过期)
function verify_login() {
//
$hash = $_COOKIE['loginhash'];
if($hash != ''):
$hash = mysql_real_escape_string($hash);
$sql = "SELECT * FROM session WHERE hash = '$hash'";
else:
header('Location: login.php');
endif;
$res = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($res) !=0):
while($row = mysql_fetch_assoc($res)) {
echo 'The user is logged in.';
}
else:
header('Location: login.php');
endif;
}https://stackoverflow.com/questions/15729395
复制相似问题