2013-08-30 90 views
5

我一个网站和索引页上的检查工作,如果用户登录或不使用这段代码:PHP检查用户登录与功能

if (!$_SESSION['login'] && $_SESSION['login'] == "") { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} elseif ($_SESSION['login'] == 1) { 
include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

但我想它看起来干净,然后我就开始想,如果有可能实现这样的一个功能:

checklogin($_SESSION['login']); 

我没有与功能太多的经验,所以我很抱歉,如果我的问题看起来愚蠢的,所以谢谢提前。

+0

别担心,您发布的这两个代码段都是完全有效的。这取决于你如何构建你的代码以及把逻辑放在哪里。但它必须是*某处*。所以如果你只是想要这个函数(就像在第二个例子中那样),前面例子中的逻辑必须在*函数内部。它不能只是消失。 您应该尽可能重新使用现有的身份验证框架,因为它确实很复杂。例如,看一下https://github.com/delight-im/PHP-Auth,它既是框架不可知的,也是与数据库无关的。 – caw

回答

6

试试这个

if(check_login()) { 
    echo 'You are in!'; 
} else { 
    header('Location: login.php'); 
    exit; 
} 

function check_login() { 
    if(isset($_SESSION['login'] && $_SESSION['login'] != '') { 
     return true; 
    } else { 
     false; 
    } 
} 
3

只需使用empty

if (empty($_SESSION['login'])) { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
} else { 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
} 

或者凝结成:

include_once $_SERVER['DOCUMENT_ROOT'].(empty($_SESSION['login']) ? "/login/" : "/main/"); 
2

有你所需要的:

function userCheck() 
{ 
    return (isSet($_SESSION['login']) && $_SESSION['login']); 
} 

if(userCheck()) 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); 
else 
    include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); 
1

不顾你的方法是否有意义的事实,我认为这会做你所期望的:

function checklogin($login){ 
     if (!$login && $login == "") { 
      include_once($_SERVER['DOCUMENT_ROOT'] . "/path/"); 
     } 
} 


// **** call to the function 

     checklogin($_SESSION['login']); 

// **** 
0

您可以使用此功能:

function checklogin() { 
    return (isset($_SESSION['login'])) ? true : false; 
} 

然后在页面上要检查用户是否已登录,您可以:

if(checklogin() === true){ 
    //here you would put what you want to do if the user is logged in 
} else { 
    //this would be executed if user isn't logged in 
    header('Location: protected.php'); 
    exit(); 
    //the above would redirect the user 
}