我在使用会话变量时遇到麻烦。我在page1.php上创建了会话变量,然后尝试在page2.php上显示它,但是它没有用。我确保添加session_start();在页面的开头,所以这不是问题。
这是我的page1.php代码
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>website</title>
<link rel="icon" href="icon.png">
<link rel="stylesheet" type="text/css" href="style.css">
<?php
if(!isset($_POST["submit"])) {
$_SESSION["username"] = $_POST["username"];
}
?>
</head>
<body id="body">
<form action="page2.php" method="post">
<input type="username" id="username" name="username" placeholder="Username">
<input type="submit" id="submit" name="submit" value="Submit">
</form>
</body>
</html>
这是我的page2.php代码
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>website</title>
<link rel="icon" href="icon.png">
<link rel="stylsheet" type="text/css" href="style.css">
</head>
<body id="body">
Your username is: <?php echo $_SESSION["username"]; ?>
</body>
</html>
答案 0 :(得分:1)
$_POST['username']
在page1.php
中不可用,而仅在page2
中可用,因为那是响应所提交的表单的页面。
在$_POST["submit"]
中将无法使用page1
在测试时将其添加到脚本顶部,即使您在针对LIVE环境配置的网站上进行开发,也会看到类似的错误
未定义索引,应从page1.php
<?php
ini_set('display_errors', 1);
ini_set('log_errors',1);
error_reporting(E_ALL);
答案 1 :(得分:1)
在page1.php中拥有
// v------ wrong logic?
if(!isset($_POST["submit"])) {
$_SESSION["username"] = $_POST["username"];
}
然后
<!-- v---------- page2.php -->
<form action="page2.php" method="post">
<input type="username" id="username" name="username" placeholder="Username">
<input type="submit" id="submit" name="submit" value="Submit">
</form>
这意味着,当您提交表单时,您将被重定向到不处理表单数据$_POST
的page2.php。
您可能希望将这段代码放在page2.php中:
if(isset($_POST["submit"])) {
$_SESSION["username"] = $_POST["username"];
}
注意:
页面顶部,您拥有:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en-US">
您会注意到,在<!DOCTYPE html>
之前,将呈现一些字符(垂直空白),这些字符将激活某些浏览器上的quirks模式。确保文档类型是页面的第一行。
答案 2 :(得分:0)
1。如果声明
代码只会执行 IF $ _POST ['submit']未初始化。
要解决此问题,您需要删除“!” isset()之前;
if(isset($_POST["submit"])) {
$_SESSION["username"] = $_POST["username"];
}
2。您的POST变量将转到page2.php
您需要将其添加到page2.php:
if(isset($_POST["submit"])) {
$_SESSION["username"] = $_POST["username"];
}
您只是将代码放在错误的位置。如此接近。