2017-07-04 100 views
-3

即时通讯无法创建会话。

我的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'); 
      } 
?> 

在会话中,检查其他代码,代码:

<?php 
session_start(); 
if(!$_SESSION['dany']) 
{ 
    header('location:adminLogin.php'); 
} 
?> 

此行:

if(!$_SESSION['dany']) 

正在恢复假我给出的每个有效输入以及无效输入。 我试图复制整个代码并创建一个新的虚拟项目,它在那里工作。但不适用于我的actula项目。

+0

'$ _ SESSION ...'是'返回... FALSE'?这是否意味着它*进入了'if' *或者它没有进入'if' *?你是否首先检查了会话是否成功启动*(mysqli_num_rows($ result)== 1'为'true')? – deceze

+0

@deceze if(!$ _ SESSION ['dany'])返回true。这意味着$ _SESSION ['dany']等于false。 它进入if块。但我不应该在有效的投入。 –

+0

@deceze ---未定义的索引:第3行的“adminPanel.php”中的dany --- 这就是即时错误的原因。 –

回答

0

您需要检查dany条目以isset定义:

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

是的,它确实开始工作,但现在其工作的所有输入,无论是有效或invalid.i试图做这 if(isset($ _ SESSION ['dany'])) { header('location:form.php') ; } else if(is_null($ _ SESSION ['dany'])){ header('location:adminLogin.php'); } 但这有同样的效果 –

+0

你不需要'else if(is_null($ _ SESSION ['dany'])){',你可以用一个简单的'else {'。 – Isac

+0

我曾尝试过。但它也没有解决问题。我仍然无法创建会话 –