gpt4 book ai didi

php - 在 WordPress 中提交表单后 session 丢失

转载 作者:行者123 更新时间:2023-12-03 02:13:22 26 4
gpt4 key购买 nike

我设置的session在表单提交后就丢失了。

我构建了 session 类来设置新 session 、取消设置等。在wordpress模板的function.php中。

函数.php

if (!session_id()) {
session_start();
}
include get_template_directory() . "/custom/session.php";

session .php

class session {
function __construct() {

}

function set_flashdata($name, $value) {
$_SESSION[$name] = $value;
}

function flashdata($name) {
if (isset($_SESSION[$name])) {
$str = $_SESSION[$name];
return $str;
} else {
return FALSE;
}
}

function userdata($name) {
if (isset($_SESSION[$name])) {
return $_SESSION[$name];
} else {
return FALSE;
}
}

function set_userdata($name, $value) {
$_SESSION[$name] = $value;
}

function unset_userdata($name) {
if (isset($_SESSION[$name])) {
unset($_SESSION[$name]);
}
}
}

我尝试将 session 设置为:

<?php 
$sess = new session();
$sess->set_userdata('sess_name',"some value");
?>
<form action="get_permalink(212);">
//input buttons
</form>

提交表单后,它会转到永久链接(212)。然后我就尝试了。

<?php
$sess = new session();
$value = $sess->userdata('sess_name');
var_dump($value); //returns false. That means session is lost after form submit. Why?
?>

最佳答案

您需要将 session 开始/恢复移动到 session 的构造函数中。

像这样:

class session
{
function __construct()
{
if (! session_id()) {
session_start();
}
}

还有一件事要提,每次你执行new Session时,你都会得到一个具有相同功能的对象,并使用相同的全局变量$_SESSION

您不需要多个 $session 对象,现在是研究单例模式的好时机。

关于php - 在 WordPress 中提交表单后 session 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43176441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com