Php 为什么if(!$\u会话[';dbname';]){}返回false?

Php 为什么if(!$\u会话[';dbname';]){}返回false?,php,session,Php,Session,我无法创建会话 我的php代码是 <?php $dbhost = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "dany"; $query = ""; $sqlQuery = ""; $row = ""; $username=false;

我无法创建会话

我的php代码是

<?php 

          $dbhost = "localhost";
          $dbuser = "root";
          $dbpassword = "";
          $dbname = "dany";
          $query = "";
          $sqlQuery = ""; 
          $row = "";
          $username=false;
          if(isset($_POST['n'])){
              $username=$_POST['n'];
           }
          $password= false;
          if(isset($_POST['p'])){
              $password= $_POST['p'];
          }
          $conn=mysqli_connect($dbhost,$dbuser,$dbpassword,$dbname);
          $sUser=mysqli_real_escape_string($conn,$username);
          $sPass=mysqli_real_escape_string($conn,$password);
          // For Security 
          $query="SELECT * From admin where username='$sUser' and password='$sPass'";
          $result=mysqli_query($conn,$query);
          if(mysqli_num_rows($result)==1)
          {
              session_start();
              $_SESSION['dany']= $dbname;
              header('location:adminPanel.php');
          }
?>
对于我给出的每个有效输入以及无效输入,都返回false。
我试图复制整个代码并创建一个新的虚拟项目,它在那里工作。但是在我的actula项目中不起作用。

您需要检查用
isset定义的
dany
条目是否:

if(isset($_SESSION['dany'])){

$_会话…
正在返回
false
…?这是否意味着它进入
if
还是不进入
if
?您是否首先检查了会话是否成功启动(
mysqli_num_rows($result)==1
is
true
)?@deceze如果(!$\u session['dany'])返回true。这意味着$\u会话['dany']等于false。它进入if块。但对于有效的输入,我不应该这样做。@deceze--第3行“adminPanel.php”中未定义的索引:dany--这是我得到的一个错误。是的,它确实开始工作,但现在它对所有输入都起作用,不管是有效的还是无效的。我尝试了这样做,如果(isset($_SESSION['dany')){header('location:form.php');}如果(isu null)的话($_SESSION['dany']){header('location:adminLogin.php');}但是这具有相同的效果,您不需要
,否则如果($_null($_SESSION['dany']){
,您可以使用一个简单的
else{
。我以前试过。但它也没有解决问题。我仍然无法创建会话无论何时测试会话,都需要使用
会话_destroy()终止会话
以便能够再次测试。否则浏览器可以保持您的会话状态并使您始终处于日志状态。我已经编写了那段代码以终止会话。但是如果会话已创建,我将工作。我无法创建会话。@Isac
if(!$_SESSION['dany'])
if(isset($_SESSION['dany'])){