重新打开浏览器后无法重试会话


can not retrive session after reopening browser

我写了两个php文件,当他们键入正确的用户时,它们会在数据库中显示用户的信息,如果他们重新打开浏览器,则会再次显示。然而,当我重新打开浏览器时,我收到了这个错误消息:

Notice: Undefined index: full_name in C:'xampp'htdocs'test'session-database-2.php on line 3
wrong user please type again
Notice: A session had already been started - ignoring session_start() in C:'xampp'htdocs'test'session-database-1.php on line 1

第一个是session-database-1.php

<?php session_start() ?>
<?php
echo "login Form";
echo "<form action='session-database-2.php' method='POST'>
        name <input type='text' name='full_name' />
            <input type='submit' value='submit'/>
        </form>";
?>

第二个是

<?php session_start() ?>
<?php
$_SESSION['full_name']=$_POST['full_name'];
$host='localhost';
$username='root';
$password='root';
$dbname='pet';
$connect=mysqli_connect($host,$username,$password,$dbname) or die("can't connect to server");
$query="SELECT * FROM register WHERE full_name='{$_SESSION['full_name']}'";
$result=mysqli_query($connect,$query) or die("can't execute query");
if(mysqli_affected_rows($connect))
{
    while($row=mysqli_fetch_assoc($result))
    {
        extract($row);
        echo $full_name."<br/>";
        echo $email."<br/>";
        echo $phone."<br/>";
    }
}
else
{
    echo "wrong user please type again";
    include "session-database-1.php";
    exit();
}
?>

我认为还有一些错误。

  1. 您可以删除1。session-database-1.php中的行,因为那里没有使用$_SESSION
  2. Undefined index: full_name是因为当您直接调用此url时没有$_POST
  3. 如果直接调用第二个文件,并且SELECT没有返回任何结果,那么就包含了第一个文件。这样session_start被调用两次

你可以在一个文件中解决它:

if(isset($_POST['full_name']))
  // Then show your login form
else
  // make your database select and show the results

如果你想让数据持久存在,即使浏览器关闭,你也无法使用会话。正如Pat在评论中提到的,一旦浏览器关闭,会话就会被破坏。这个SO线程可能会帮助您理解两个之间的区别

Cookie与会话