Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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_Login_Mysqli - Fatal编程技术网

PHP登录脚本会话不存在

PHP登录脚本会话不存在,php,login,mysqli,Php,Login,Mysqli,我在尝试创建一个简单的登录系统时遇到问题。以下是我的设置: index.php <?php if(!isset($_SESSION['username'])){ session_start(); //present login form with action=login.php } else { //display actual page } ?> login.php <?php if(!empty($_SESSION['username'])){ echo $

我在尝试创建一个简单的登录系统时遇到问题。以下是我的设置:

index.php

<?php if(!isset($_SESSION['username'])){
session_start();
//present login form with action=login.php
} else {
//display actual page
}
?>

login.php

<?php
if(!empty($_SESSION['username'])){
    echo $_SESSION['username'];
} else {
$username=$_POST['username'];
$password=sha1($_POST['password']);
$link=mysqli_connect("localhost","root","password","database",3306,"/tmp/mysql.sock");
$query="SELECT * FROM login WHERE `name`='".$username."' AND `passwordhash`='".$password."' LIMIT 1";
$result=mysqli_query($link,$query);
if(mysqli_num_rows($result)==1){
            session_start();
    $_SESSION['username']=$username;
    $row=mysqli_fetch_assoc($result);
    $_SESSION['firstname']=$row['firstname'];
    $_SESSION['lastname']=$row['lastname'];
    echo "Username: ". $_SESSION['username']." Name: ".$_SESSION['firstname']." ".$_SESSION['lastname']; //this is just here as POC. If I redirect to index.php (using header()), it shows the login form (claims $_SESSION['username'] is unset).
}
}
?>

登录后,它会在login.php上显示我的用户名、名字和姓氏(这不是数据库问题)。但是如果我重定向到index.php,它会立即显示登录表单。有什么问题吗?
编辑:即使将session_start()添加到login.php,结果也是一样的。

将session_start()作为文件的第一行,它必须包含在所有使用会话变量的文件中。

您还必须在
login.php
上调用
session_start()在使用
$\u会话之前
谢谢!我没有意识到它需要在每个使用会话变量的文件中调用——在我看来,不管文件是什么,会话都会持续。再次感谢。很高兴我能帮你检查这个答案,如果它解决了你的问题,我会尽快让我。我还有5分钟的时间来批改答案。