传递PHP会话值

时间:2017-08-14 18:22:03

标签: php session session-cookies

我正在尝试通过PHP会话将值从一个WordPress页面传递到另一个页面。我在两个页面上都有一个下拉列表,除了选项值外,它们是相同的。我想在页面加载的第二页上选择的选项反映在第一页上提交的选定值。

我已经研究了很多问题,但却找不到我需要的东西。任何帮助将不胜感激!

第1页:

<?php
    if(!isset($_SESSION)) { 
        session_start(); 
        echo $_SESSION['state'];
        $var_value = $_SESSION['state'];
    } 
?>

<form>
    <input type=hidden name="retURL" value="page2.php">
    <select id="state" name="state">
        <option>State 1</option>
        <option>State 2</option>
        <option>State 3</option>
    </select>
    <input type="submit" name="submit" value="Submit">
</form>

第2页:

<?php
    session_start();
    if(isset($_POST['state'])){
        $_SESSION['state'] = $_POST['state'];
    }
?>

<select>
    <option <?php if($var_value == 'State 1') echo 'selected'; ?> value="http://customizedlink">State 1</option>
    <option <?php if($var_value == 'State 2') echo 'selected'; ?> value="http://customizedlink">State 2</option>
    <option <?php if($var_value == 'State 3') echo 'selected'; ?> value="http://customizedlink">State 3</option>
</select>

2 个答案:

答案 0 :(得分:1)

  

WordPress核心不使用PHP会话。 WordPress平台完全是无状态的,不提供支持   用于保持用户登录的cookie之外的会话   英寸

WordPress核心不使用PHP会话,但有时它们是用例,插件或主题所必需的。

您可以使用WordPress Native PHP Sessions插件实现PHP的本机会话处理程序,由WordPress数据库支持。

请参阅Using the PHP Session in WordPress

答案 1 :(得分:0)

你忘了告诉我们你是如何从第1页到第2页的。但是,让我们假设你在第1页SELECT时再次调用第1页。在这种情况下,您需要将$_SESSION['state'] = $_POST['state'];作业从第2页移至第1页。必须之前移至第2页。

此外,第2页正在使用名为$var_value的内容,但未在示例中的任何位置设置。您的意思是在第2页的$var_value = $_SESSION['state'];之上某处执行SELECT吗?

如果这些都没有引导您回答,请提供有关代码背景的更多信息。

试试这个。您的Page 1 FORM元素在提交时会调用第1页。因此......

<?php
    if(!isset($_SESSION)) { 
        session_start(); 
        if( isset($_POST['state']) ){
            $_SESSION['state'] = $_POST['state'];
        }
        echo "Page 1: ".$_SESSION['state'];
    } 
?>

<form method="post">
    <input type=hidden name="retURL" value="page2.php">
    <select id="state" name="state">
        <option>State 1</option>
        <option>State 2</option>
        <option>State 3</option>
    </select>
    <input type="submit" name="submit" value="Submit">
</form>

第2页

<?php
    session_start();
    echo "Page 2: ".$_SESSION['state'];
    $var_value = $_SESSION['state'];
?>

<select>
    <option <?php if($var_value == 'State 1') echo 'selected'; ?> value="http://customizedlink">State 1</option>
    <option <?php if($var_value == 'State 2') echo 'selected'; ?> value="http://customizedlink">State 2</option>
    <option <?php if($var_value == 'State 3') echo 'selected'; ?> value="http://customizedlink">State 3</option>
</select>

您应该在第2页(运行第1页)之后看到$_SESSION['state']的正确值 IF 我已正确理解您的代码的意图。