我写了两个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。
session-database-1.php
中的行,因为那里没有使用$_SESSION Undefined index: full_name
是因为当您直接调用此url时没有$_POST- 如果直接调用第二个文件,并且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与会话