首页 > 解决方案 > 使用 PHP 会话时在第二页上获取未定义的变量

问题描述

我正在处理会话当我将表单从第 1 页提交到第 2 页时,在第 2 页上,我不断收到未定义变量的通知。你们都看到了我没有看到的东西吗?此外,我只放置相关的 HTML。谢谢!

PS - (我阅读了类似的帖子,但他们没有回答我的问题,他们只提到检查赋值运算符。另外,我查看了“已经在这里回答”的示例,但它对我没有帮助,因为在那个 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();

标签: phphtmlsession

解决方案


当您注册会话时,它需要转到表单操作页面。看起来您的表单操作在第 2 页上

<?php
        session_start();
        if(isset($_POST['submit'])){
            $username = $_SESSION['username'];
            $email = $_SESSION['email'];
        }
    ?>    //Move this to page #2

将您的 php 脚本移动到第 1 页的顶部

<?php
session_start(); //this needs to be on the top most code

if(isset($_POST['submit'])){ //this needs to move to the form action page, looks like its on page #2.
    $username = $_SESSION['username'];
    $email = $_SESSION['email'];
}

?>

您的 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(); //this needs to be on the top most code on page 2

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); 
    print_r($_SESSION);

    session_destroy();

也做一个

 print_r($_SESSION); to see what's in the sessions before session destroy to check what is actually in the session var. 

推荐阅读