无法跨页面携带SESSION变量

时间:2019-03-20 15:40:05

标签: php html

我在使用会话变量时遇到麻烦。我在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>

3 个答案:

答案 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"];
}

您只是将代码放在错误的位置。如此接近。

相关问题