Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查用户是否使用函数登录_Php_Function_Authentication - Fatal编程技术网

PHP检查用户是否使用函数登录

PHP检查用户是否使用函数登录,php,function,authentication,Php,Function,Authentication,我在一个网站上工作,索引页检查用户是否使用以下代码登录: if (!$_SESSION['login'] && $_SESSION['login'] == "") { include_once($_SERVER['DOCUMENT_ROOT'] . "/login/"); } elseif ($_SESSION['login'] == 1) { include_once($_SERVER['DOCUMENT_ROOT'] . "/main/"); } 但我希望它看起来更干净,然

我在一个网站上工作,索引页检查用户是否使用以下代码登录:

if (!$_SESSION['login'] && $_SESSION['login'] == "") {
include_once($_SERVER['DOCUMENT_ROOT'] . "/login/");
} elseif ($_SESSION['login'] == 1) {
include_once($_SERVER['DOCUMENT_ROOT'] . "/main/");
}
但我希望它看起来更干净,然后我开始思考是否有可能通过一个函数实现这样的功能:

checklogin($_SESSION['login']);
function checklogin() {
  return (isset($_SESSION['login'])) ? true : false;
}
我对函数没有太多的经验,如果我的问题看起来很愚蠢,我很抱歉,所以请提前感谢。

试试这个

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;
    }
}
只需使用:

或者将其浓缩:

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

这是您需要的:

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

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

不管你的方法是否合理,我认为这会达到你的预期:

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


// **** call to the function

       checklogin($_SESSION['login']);  

// ****

您可以使用此功能:

checklogin($_SESSION['login']);
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
}

别担心,你发布的两个片段都是完全有效的。如何构造代码以及将逻辑放在何处取决于您。但它一定在某个地方。因此,如果您只需要该函数(如第二个示例中所示),那么上一个示例中的逻辑必须位于该函数内部。它不能就这样消失。您应该尽可能重用现有的身份验证框架,因为它确实很复杂。例如,看看哪个是框架不可知的,哪个是数据库不可知的。