【问题标题】:Why is my first session in PHP not sending data to my second?为什么我在 PHP 中的第一个会话没有向我的第二个会话发送数据?
【发布时间】:2021-11-17 13:09:34
【问题描述】:

我试图让一个会话将数据从页面输入到 post 数组,然后将其存储到会话数组,然后将其发送到会话 2,我希望在其中显示信息。我的第一个会话将我发送到我的会话 2 页面,但未显示信息。谁能告诉我我的代码是否有问题?谢谢

会话 1

<?php
session_start();

if(isset($_POST["employeeNameBox"]))
{
    $_SESSION["employeeName"] = $_POST["employeeNameBox"];
    header("Location: Session2.php");
}

if(isset($_POST["employeeidBox"]))
{
    $_SESSION["employeeid"] = $_POST["employeeidBox"];
    header("Location: Session2.php");
}

if(isset($_POST["phoneNumberBox"]))
{
    $_SESSION["phoneNumber"] = $_POST["phoneNumberBox"];
    header("Location: Session2.php");
}

if(isset($_POST["emailBox"]))
{
    $_SESSION["email"] = $_POST["emailBox"];
    header("Location: Session2.php");
}

if(isset($_POST["positionBox"]))
{
    $_SESSION["position"] = $_POST["positionBox"];
    header("Location: Session2.php");
}

if(isset($_POST["ITProjectBox"]))
{
    $_SESSION["ITProject"] = $_POST["ITProjectBox"];
    header("Location: Session2.php");
}

?>

<html>

<body>

<?php include('Header.php'); ?>
<?php include('Menu.php'); ?>

<div class="content">

            <form method="POST">
        
            <input type="text" name="employeeNameBox" value="Employee name"> <br> 
            <input type="text" name="employeeidBox" value="Employee id"> <br>
            <input type="text" name="phoneNumberBox" value="Phone number"> <br> 
            <input type="text" name="emailBox" value="Email"> <br> 
            
            <input type="radio" id="Manager" name="positionBox" value="Manager"> 
            <label for="Manager">Manager</label><br>
            <input type="radio" id="Team Lead" name="positionBox" value="Team Lead"> 
            <label for="Team Lead">Team Lead</label><br> 
            <input type="radio" id="IT Developer" name="positionBox" value="IT Developer"> 
            <label for="IT Developer">IT Developer</label><br>
            <input type="radio" id="IT Analyst" name="positionBox" value="IT Analyst"> 
            <label for="IT Analyst">IT Analyst</label><br><br>


            <select name="ITProjectBox">
                <option value="Project A">Project A</option>
                <option value="Project B">Project B</option>
                <option value="Project C">Project C</option>
                <option value="Project D">Project D</option>
            </select> <br><br>

            <button type="submit">Submit Information</button>
            
            </form>

</div>


</div>

<?php include('Footer.php'); ?>


</body>
</html>

第 2 节

<?php
session_start();

if(isset($_SESSION["employeeName"]))
{
    echo "<b>Employee name: </b>" .$_SESSION["employeeName"];
    echo("<br><br>");
}

if(isset($_SESSION["employeeid"]))
{
    echo("<b>Employee id: </b>" .$_SESSION["employeeid"]);
    echo("<br><br>");
}

if(isset($_SESSION["phoneNumber"]))
{
    echo("<b>Phone number: </b>" .$_SESSION["phoneNumber"]);
    echo("<br><br>");
}

if(isset($_SESSION["email"]))
{
    echo("<b>Email: </b>" . $_SESSION["email"]);
    echo("<br><br>");
}

if(isset($_SESSION["position"]))
{
    echo("<b>Position: </b>" . $_SESSION["position"]);
    echo("<br><br>");
}

if(isset($_SESSION["ITProject"]))
{
    echo("<b>IT Project: </b>" . $_SESSION["ITProject"]);
    echo("<br><br>");
}

?>

<html>

<body>

<?php include('Header.php'); ?>
<?php include('Menu.php'); ?>

<div class="content">

</div>

<?php include('Footer.php'); ?>


</body>
</html>

【问题讨论】:

  • 在我的最后工作正常,您是否被重定向到正确的页面?
  • @Peneh 是的,我被重定向到 session2,但没有显示任何文本,你能看到 session1 的输出吗?
  • 您在每个if 条件下都有header() 重定向,这是不必要的。设置所有会话时只需一次就足够了。一旦使用header() 重定向,使用exit(); 以防止之后执行。
  • 这里有两个问题... 1) 您试图在 &lt;html&gt; 标记之前回显 HTML。查看您的页面源代码,您期望的输出可能在那里,只是在文档中的错误位置。 2)您正在设置 Location 标头而不用 exit 终止脚本。
  • @Phil 你说得对,我将 session2 回声移到了我的内容 div 中,它们神奇地出现了,哈哈,谢谢

标签: php html web session post


【解决方案1】:

首先,确保你的会话在重定向之前被保存,你可以使用 session_write_close()。

其次,确保您的脚本在重定向后完成,使用退出。

您可以使用同时执行这两种操作的函数来节省代码:

session_start();

if(isset($_POST["employeeNameBox"]))
{
    $_SESSION["employeeName"] = $_POST["employeeNameBox"];
    my_redirect('Session2.php');
}

//Here rest of vars

function my_redirect($to)
{
    session_write_close();
    header('Location: ' . $to);
    exit;
}

【讨论】:

  • 这对我有用,也可以将 Session2 中的 echo 语句移动到我的内容 div。谢谢楼主
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2020-07-31
  • 2013-01-09
  • 2019-01-14
  • 2022-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多