假设我有两个页面:page01.php和page02.php(它们的代码如下所示)。
如果我将 page01 上的表单中的操作属性留空.php为空(即 action="),然后访问 page01.php,填写表单,按提交,然后访问 page02.php - 一切正常(即 $_SESSION 变量存储在 page01 上提交的数据.php并且可以按预期在 page02 上访问和查看.php)。
但是,当我尝试使表单将用户发送到 page02.php(通过将操作 atrribute 更改为 action="page02.php")时,看起来 $_SESSION 全局变量不存储 page01.php 中的数据。
我的问题是:发生这种情况是因为用户在提交表单后立即被重定向到 page02.php并且 page01 上的 php 标签之间的代码.php没有被执行?
我知道我可以在第 02 页上使用 $_GET 或 $_POST 来实现所需的行为.php但我只是想了解操作属性和 $_SESSION 交互的方式。谢谢。
页01.php:
<html>
<head>
<title>Page 01</title>
</head>
<body>
<h1>Please fill this form</h1>
<form action="" method="post">
Name: <input name="username">
<input type="submit" value="send">
</form>
<?php
session_start();
if(isset($_POST['username'])) {
$_SESSION['username']=$_POST['username'];
}
?>
</body>
第02.php页:
<html>
<head>
<title>Page 02</title>
</head>
<body>
<h1>Another temporary page is working</h1>
<?php
session_start();
$expectedName = "Bob";
if($_SESSION['username'] == $expectedName) {
echo "Welcome, Bob!";
}
else {
echo "Access denied. You are ". $_SESSION['username'] . ", not Bob.";
}
?>
</body>
action 属性是您指定提交后需要运行脚本的位置的属性。
因此,如果您希望在提交表单后重定向用户,请使用 header() 函数。