【问题标题】:How to update and get session value in WordPress?如何在 WordPress 中更新和获取会话值?
【发布时间】:2018-03-11 01:50:58
【问题描述】:

我正在尝试更新会话中的一个下拉框和两个文本框值,然后在下一页中获取这些会话值。为此,我在第一页中编写了以下代码

<form action="/thanks" method="POST">

<select name="select_amount" id="select_amount" onchange="submit();">
   <option>-----</option>
   <option value="10">1st option</option>
   <option value="15">2nd option</option>
   <option value="20">3rd option</option>
   <option value="25">4th option</option>
</select>

<input type="text" name="programname" /><br>
<input type="text" name="email" /><br>
<input type="submit" name="submit" class="button_add">

</form>

      <?php
            session_start();
            if(isset($_POST['submit'])) {
            $_SESSION['pro']=$_POST['programname'];
            $_SESSION['e']=$_POST['email'];
            $_SESSION['amount']=$_POST['select_amount'];
       }?>      

在thanks.php 文件中,我试图通过以下代码获取会话值

<?php
     session_start(); 
     if (isset($_SESSION['amount'])) {
     echo $_SESSION['amount'];
}?>

我还在我的主题 function 文件中添加了以下代码,但它不起作用。

if(!session_id()) {
    session_start();
}

【问题讨论】:

  • 问题是?
  • 要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。

标签: php wordpress session


【解决方案1】:

session_start() 在输出发送到浏览器后调用,这将导致抛出错误。 session_start() 应该是 PHP 文件中的第一件事(在起始标记之后)。

您正试图在表单所在的同一页面上设置session 变量。 PHP 代码不在浏览器中执行,而是在服务器上执行,因此 $_POST 变量只有在您提交表单后才可用。

你可能想要做的是:

<?php
      session_start(); // start session before output
?>
<form action="/thanks" method="POST">

<select name="select_amount" id="select_amount" onchange="submit();">
   <option>-----</option>
   <option value="10">1st option</option>
   <option value="15">2nd option</option>
   <option value="20">3rd option</option>
   <option value="25">4th option</option>
</select>

<input type="text" name="programname" /><br>
<input type="text" name="email" /><br>
<input type="submit" name="submit" class="button_add">

</form>

谢谢.php

<?php
    session_start();

    // form is posted to this page
    if(isset($_POST['submit'])) {

        // form is posted to this page
        $_SESSION['amount'] = $_POST['select_amount'];
        $_SESSION['programname'] = $_POST['programname'];
        $_SESSION['email'] = $_POST['email'];

        echo $_SESSION['amount'];
    }
}?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2017-07-18
    • 2015-09-05
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多