存储和更改会话变量-PHP会话变量

时间:2016-10-22 作者:aido14

我想更改一个会话变量,它将在两个不同的位置更改另一个变量。一个变量决定了用户将看到哪些帖子,它们位于我的自定义帖子存档文件(archive spark.php)中,另一个变量位于我的(functions.php)文件中,我正在重力表单挂钩中使用该文件,该挂钩决定了表单将发布到哪个类别。重力表单是所有页面上的弹出窗口。

当我在自定义post类型页面(archive spark.php)上时,一切都很好,我创建的表单更改了这两个页面中的变量,但当我重新加载页面或转到另一个页面时,我再次设置了加载默认变量。我可以理解为什么它会这样做,因为我的会话位于“if(isset)”中,但我不知道如何在提交表单后将变量作为会话变量保存。

我将此插件用于会话变量:http://silvermapleweb.com/using-the-php-session-in-wordpress/

下面是代码:归档spark。php

<?php
//this is default variable if nothing is submitted with my form
$the_user_garden = "gardens"; 
?>

<?php
//this is the form that will change the variable
if(isset($_POST[\'submit\'])) 
{ 
$the_user_garden = $_POST[\'sub_garden_1\'];
}
?>
<form method="post" action="<?php echo $_SERVER[\'REQUEST_URI\']; ?>">
<input type="text" name="sub_garden_1" value="sub_garden_1"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>

<?php
//this put the new variable value   from the form as session variable
$_SESSION[\'myKey\'] = $the_user_garden; 
?>

<?php
$author_id = get_current_user_id( );
//this is where I am using the changes variable
if( have_rows($the_user_garden, \'user_\'.$author_id) ): ?> 

<?php 
//and here too
while( have_rows($the_user_garden, \'user_\'.$author_id) ): the_row(); ?>
功能。php

<?php
add_action(\'init\', \'myStartSession\', 1);
add_action(\'wp_logout\', \'myEndSession\');
add_action(\'wp_login\', \'myEndSession\');

function myStartSession() {
if(!session_id()) {
    session_start();

}
}

function myEndSession() {
session_destroy ();
}

?>
<?php
// this is where I need the variable for gravity form(pop up)   
 if(isset($_SESSION[\'myKey\'])) {
$the_user_garden = $_SESSION[\'myKey\'];
} else {
$the_user_garden = "gardens";

}
?>

<?php
//this is where I am using variable
$author_id = get_current_user_id( );
if( have_rows($the_user_garden, \'user_\'.$author_id) ): ?>
基本上,我需要一种方法,将会话变量存储在整个网站的所有页面上,如果我提交表格以保存该变量。

提前感谢。。

1 个回复
SO网友:aido14

不确定是否有人理解我的问题,但如果你理解了,并且有类似的问题,我会发布我是如何解决的。

我只需添加一个session\\u start();在我的表格上。。

<?php
session_start(); //see here
//this is the form that will change the variable
if(isset($_POST[\'submit\'])) 
{ 
$the_user_garden = $_POST[\'sub_garden_1\'];
}
?>
<form method="post" action="<?php echo $_SERVER[\'REQUEST_URI\']; ?>">
<input type="text" name="sub_garden_1" value="sub_garden_1"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>