【问题标题】:PHP and variable in session会话中的 PHP 和变量
【发布时间】:2021-09-02 04:00:24
【问题描述】:

我需要在 2 个 php 页面之间传递一个变量。

按钮提交后,表单中的action调用第二个页面。

<body>
    <div>
        <form action="callSecondPage.php" method="POST">
            <div>
                <select name="taskOption">
                    <option>First</option>
                    <option>Second</option>
                    <option>Third</option>
                </select>
            </div>
            <?php
                $currentValue = (isset($_POST['taskOption'])) ? $_POST['taskOption'] : '';
                $_SESSION['taskOption'] = $currentValue;
            ?>
            <div>
                <button name="submit" class="btn">Submit</button>
            </div>
        </form>
    </div>
</body>

在第二页中,我只是尝试找到该值并在控制台中打印它:

<?php   
  session_start();  
  $taskOption = $_SESSION['taskOption'];  
  echo '<script>';    
  echo 'console.log('. json_encode($taskOption, JSON_HEX_TAG) .')'; 
  echo '</script>';  ?>

我哪里错了?为什么第二页的值为null?

【问题讨论】:

  • 是不同的文件(page1.phppage2.php),如果是,你会在第二个做 session_start() 吗?
  • 此代码在第一页是真的吗?如果是,则不需要使用SESSION,而是可以直接在callSecondPage 中使用POST
  • 此代码在第一页,是的,有 2 个不同的文件。
  • 我尝试直接在第二页进行 POST 但结果始终相同...空值。
  • 以后当您需要添加更多代码时,请编辑您的问题。 cmets 中的代码很难阅读,您可以自己看到。这次我给你加了,然后我在下面准备了一个答案——请看一下。谢谢。

标签: php forms session session-variables form-submit


【解决方案1】:

这没有任何意义,因为您从一开始就从未将值存储在会话中。您的其他代码:

$currentValue = (isset($_POST['taskOption'])) ? $_POST['taskOption'] : ''; 
$_SESSION['taskOption'] = $currentValue;` 

将始终在 Session 中设置一个空值,因为它试图查找的值直接发布到 callSecondPage.php,它永远不会通过此代码。

因此,因为您将值直接发布到第二页,所以在 callSecondPage.php 中您可以简单地写

$taskOption= $_POST['taskOption'];
echo $taskOption;

立即从 POST 数据中获取它。无需会话。

【讨论】:

  • 谢谢,它可以工作,但是当你说我直接在第二页中设置会话中的值时,我不明白。有了这一行: $_SESSION['taskOption'] = $currentValue;` 在第一页我没有在会话中设置值吗?
  • i don't understand when you say that i'm setting the value in session directly in second page...我也没有,因为我没有这么说。我说您是将表单发布 直接到第二页。 action="callSecondPage.php" 表示只要您提交表单,下一个运行的代码就是 callSecondPage.php 代码。它永远不会回到您的第一页。
  • With this row: $_SESSION['taskOption'] = $currentValue; in first page am i not setting the value in session...您正在设置一个值,但它总是将值设置为""(即空)-我的回答已经解释了原因。请理解$_POST['taskOption'] 永远不会存在于您的第一页,因为您将表单提交到第二页,而不是第一页。
猜你喜欢
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2013-05-01
  • 2011-06-09
  • 2012-05-18
  • 2011-07-05
相关资源
最近更新 更多