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