我试图通过尝试此代码来了解会话变量。出于测试的目的,我创建了3个页面并尝试传递会话变量。我注意到,第3页中没有填充会话变量。我已经搜索过问题所在,我还没弄明白。
第1页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bio Data</title>
</head>
<body>
<form action="process.php" method="post">
<label for="fst_name">
First Name
<input type="text" name="fst_name" id="fst_name">
</label>
<label for="lst_name">
Last Name
<input type="text" name="lst_name" id="lst_name">
</label>
<input name="submit" type="submit" value=" Login ">
</form>
</body>
</html>
第2页
<?php
session_start();
if (isset($_POST["submit"])){
$_SESSION['fst_name'] = $_POST['fst_name'] ;
$_SESSION['lst_name' ] = $_POST['lst_name'] ;
header("location:display.php");
}else{
echo "Error";
}
PAGE3
<?php
session_start();
echo $_SESSION['fst_name'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Biodata Display</title>
</head>
<body>
<table>
<tr>
<td><?php echo "Hello " . $_SESSION['fst_name']; ?></td>
<td><?php echo $_SESSION['lst_name']; ?></td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:1)
PHP中的会话通过保存由特殊cookie引用的数据文件服务器端(默认名为PHPSESSID)来工作,因此当您的浏览器发送正确的cookie时,PHP从保存的数据文件中提取前一个$ _SESSION值。这意味着:
要简化测试,请创建一个这样的页面:
<?php
session_start();
header("Content-Type: text/plain");
var_dump($_COOKIE);
var_dump($_SESSION);
$_SESSION['hello'] = "world";
加载此页面TWICE后,您应该在$ _SESSION和$ _COOKIE中看到正确的数据。如果它不起作用,则问题出在您的服务器/环境中。如果可行,我会再次查看您的代码,但第一眼看上去很好。