2014-02-24 99 views
0

我对PHP比较陌生,但我知道很多。我正在创建一个登录表单,我正在检查他们是否已登录,然后才能进入页面,如果他们没有登录,那么他们被重定向到登录页面,我正在使用会话。每次用户在日志中或注册它创建使用会话时间:PHP会话问题 - 检查登录

$_SESSION['username'] = '$username'; 

在每个用户不允许访问页,包括我,checklogin.php - 我做了一个文件,使用此代码: 。

<?php 
function checklogin() { 
session_start(); 
if(!isset($_SESSION['myusername'])){ 
    return false; 
    header('location: login.php'); 
} else { 
    return true; 
} 
} 

checklogin(); //checks login 

?> 

但是它似乎并没有工作在未登入时,您可以访问网页此外,还有一个if语句:

if(!isset($_SESSION['myusername'])){ 

这是用来确定什么是所示标题。

这一切都没有工作,所以我做错了什么?任何帮助将不胜感激。

+3

将'session_start();'放在页面的顶部,而不是放在你的函数中。 –

+0

给我一分钟,会尝试。 – poseidon

+0

'$ _SESSION ['username']!== $ _SESSION ['myusername']'... – War10ck

回答

1

你需要把session_start()在你的PHP文件的顶部端,checkLogin()函数之外。会话变量需要使用相同的名称,因此请在“用户名”和“myusername”之间选择。您还需要交换你的语句的顺序,如果用户没有登录:

header('location: login.php'); 
return false; 

header呼叫不会发生作为功能针前返回。你也不需要引用你的变量,例如$_SESSION['username'] = $username;是正确的,假设$username已定义。

+2

现在所有的作品都很完美,非常感谢! – poseidon

0
$_SESSION['username'] = $username; 

,这是正确的语法使用它..