Php 重新打开浏览器后无法检索会话

Php 重新打开浏览器后无法检索会话,php,session,Php,Session,我编写了两个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 - igno

我编写了两个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>";
?>


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


我认为还有一些错误

  • 您可以删除1。在
    session-database-1.php
    中的行,因为那里没有使用$\u session
  • 未定义索引:全名
    是因为当您直接调用此url时,您没有$u帖子
  • 如果您直接调用第二个文件,并且SELECT没有返回任何结果,那么您将包含第一个文件。这样会调用两次
    会话\u start
  • 您可以在一个文件中解决它:

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

    您意识到在浏览器关闭后会话会被破坏。。。对吗?使用
    ini_集('session.cookie_life',60*60*24*7)您可以将会话生存期设置为7天。如果你关闭浏览器并重新打开它,你的会话仍然存在。我认为这与他的错误无关。他是在分配课程,而不是阅读。啊,你说得对。。。我想是有点太匆忙了。但在会话的生命周期中,我假设他默认保留了会话,这会在退出时终止会话。这只是为了记录,因为Drazion编写了
    ,一旦浏览器关闭,会话就会被销毁。
    。是的@Drazion,没错。默认值为
    0
    ,这意味着在浏览器关闭之前
    
    
    if(isset($_POST['full_name']))
      // Then show your login form
    else
      // make your database select and show the results