Php 为什么if(空($#u会话[';gebruikersnaam';][';wachtwoord';])不工作?

Php 为什么if(空($#u会话[';gebruikersnaam';][';wachtwoord';])不工作?,php,session,Php,Session,首先,我的英语不是很好。对不起,我尽力了。我正在开发一个CMS系统。我需要一个inlog系统。如果未登录,则无法查看某些页面。我创建了一个php会话,但它在其他页面上不起作用。。。我将包括一些我写的代码 在我检查用户名和密码的页面上,我创建了如下会话。并与会话一起检查用户名和密码,因此它可以在该页面上工作 如果会话的条件语句有效,我可以在用户未登录时将其重定向到登录页面 提前谢谢,你会帮我很多忙的 这是因为口误,它的$\u会话不是$\u会话,而且: $_SESSION['gebruikersna

首先,我的英语不是很好。对不起,我尽力了。我正在开发一个CMS系统。我需要一个inlog系统。如果未登录,则无法查看某些页面。我创建了一个php会话,但它在其他页面上不起作用。。。我将包括一些我写的代码

  • 在我检查用户名和密码的页面上,我创建了如下会话。并与会话一起检查用户名和密码,因此它可以在该页面上工作
  • 如果会话的条件语句有效,我可以在用户未登录时将其重定向到登录页面


    提前谢谢,你会帮我很多忙的

    这是因为口误,它的
    $\u会话
    不是
    $\u会话
    ,而且:

    $_SESSION['gebruikersnaam']['wachtwoord'];
    
    实际上是指1个值,而不是2个值:

    $data = array('gebruikersnaam' => array('wachtwoord' => 'mijnwachtwoord'));
    echo $data['gebruikersnaam']['wachtwoord'];
    
    相反,你应该:

    if(!empty($_SESSION['gebruikersnaam']) || !empty($_SESSION['wachtwoord'])){ 
      echo "not ingelogd";
    }
    
    但是,您应该只在会话中存储用户名和id。存储密码是一种潜在的安全漏洞,没有必要

    您也可以使用类似的方法来扫描所需的值:

    function required_session_fields(array $keys){
      foreach($keys as $k){
        if(!array_key_exists($k, $_SESSION) && empty($_SESSION[$k])){
          return false;
        }
      }
      return true;
    }
    
    if(required_session_fields(['gebruikersnaam', 'wachtwoord'])){
      echo 'gelukt';
    }
    
    如果启动了会话并包含了文件,则仍然可以访问
    $\u会话
    变量。在每个新服务器请求上,确保会话已启动

  • 在其他页面上,您必须有

    会话_start()

  • 以前

    if(!empty($_SESSION['gebruikersnaam']['wachtwoord'])) { 
      echo "not ingelogd";
    }
    
    但是,从未创建此变量$\u SESSION['gebruikersnaam']['wachtwoord']。目前您已经创建了$_会话['gebruikersnaam']和$_会话['wachtwoord']

    也许你是想拥有像这样的东西

    if(!empty($_SESSION['gebruikersnaam']) && !empty($_SESSION['wachtwoord'])) { 
          echo "not ingelogd";
        }
    

    我看到
    \u session
    ,检查打字错误。
    $\u session['gebruikersnaam']
    是一个值,
    $\u session['wachtwoord']
    是另一个值。你在那一页上启动了会话吗?@RST这是他的代码的第三行。@xoref我在他的其他页面上是指的。他说他不能回显这个值(希望他知道它是一个数组,所以他需要print\u r()或其他东西),所以我想知道他是否在这些页面上使用了start\u session(),如果答案有用,请向上投票。如果它解决了你的问题,请标记它。下次包含@RST提到的小细节时,我们不知道在您的其他页面中发生了什么,所以也要在这些页面上创建一个。
    if(!empty($_SESSION['gebruikersnaam']['wachtwoord'])) { 
      echo "not ingelogd";
    }
    
    if(!empty($_SESSION['gebruikersnaam']) && !empty($_SESSION['wachtwoord'])) { 
          echo "not ingelogd";
        }