【发布时间】:2018-08-16 22:42:35
【问题描述】:
我正在处理会话当我将表单从第 1 页提交到第 2 页时,在第 2 页上,我不断收到未定义变量的通知。你们都看到了我看不到的东西吗 ?此外,我只放置相关的 HTML。谢谢!
附: - (我阅读了类似的帖子,但他们没有回答我的问题,他们只提到检查赋值运算符。另外,我查看了“已经在这里回答”的示例,但它对我没有帮助,因为在那个 stackoverflow 帖子中它假设我知道用户名是什么。在我的情况下它是不同的,因为用户名是用户输入的任何内容,它不是我预先确定的!)
第 1 页:HTML/PHP
<form action="L10_Combo2.php" method="POST">
<p>Please enter your username</br>
<input type="text" id="username" name="username"/>
</p>
<p>Please enter your email address</br>
<input type="email" id="email" name="email"
</p>
</br></br>
<input type="submit" name="submit" value="Submit Information"/>
</form>
<?php
session_start();
if(isset($_POST['submit'])){
$username = $_SESSION['username'];
$email = $_SESSION['email'];
}
?>
第 2 页:L10_Combo2
<?php
session_start();
if(isset($_SESSION['username']) && isset($_SESSION['email'])){
$username = $_SESSION['username'];
$email = $_SESSION['email'];
}
//This is where I am getting the undefined variable error!
print("Stored in the session: " . $username . $email);
session_destroy();
【问题讨论】:
-
会话应始终从文件开始。
-
您永远不会在第 1 页上点击您的 IF 语句。您的表单提交到第 2 页,因此您要在此处存储会话。所有 PHP 处理都是在文件提交到浏览器之前完成的,之后不会捕获任何内容。
-
在你的代码中有一点,
$username和$email可以完全未定义。要么在页面顶部用空值声明这两个,要么在if上放一个else -
显然您的 if 块解析为 false 并且未在 L10_Combo2 中执行 - 使用
<?php session_start(); ?><pre><?=print_r($_SESSION)?></pre>检查您的会话内容以查看您是否正确启动了该部分。 (session_start();应该放在文件的顶部!)另外,您的第一页包含无效代码。您检查不存在的 POST 数据,因此永远不会写入会话。您是否还在其中一个 PHP 文件中设置了会话名称? -
isset($_POST['submit'])无效,因为您发布到 L10_Combo2.php。您没有将数据写入会话,为什么您期望可以检索它?