如何在WordPress中更新和获取会话值?

时间:2017-09-29 07:39:00

标签: php wordpress session

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

<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();
}

1 个答案:

答案 0 :(得分: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>

thanks.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'];
    }
}?>