【问题标题】:Getting undefined Variable on 2nd page when using PHP sessions [duplicate]使用 PHP 会话时在第二页获取未定义的变量 [重复]
【发布时间】: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 中执行 - 使用 &lt;?php session_start(); ?&gt;&lt;pre&gt;&lt;?=print_r($_SESSION)?&gt;&lt;/pre&gt; 检查您的会话内容以查看您是否正确启动了该部分。 (session_start(); 应该放在文件的顶部!)另外,您的第一页包含无效代码。您检查不存在的 POST 数据,因此永远不会写入会话。您是否还在其中一个 PHP 文件中设置了会话名称?
  • isset($_POST['submit']) 无效,因为您发布到 L10_Combo2.php。您没有将数据写入会话,为什么您期望可以检索它?

标签: php html session


【解决方案1】:

当您注册会话时,它需要转到表单操作页面。看起来您的表单操作在第 #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 代码的顶部 sn-p 之后

<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. 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 2017-04-21
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多