当我检查我的cookie时,我确实看到正在制作PHPSESSID。但是当我尝试使用它们时,我收到一条错误消息,指出该变量未定义。
这是我设置会话的方式:
$posts = array("auto_year", "auto_brand", "auto_model", "auto_bodywork", "auto_doors",
"auto_fuel", "auto_gearbox", "auto_type", "auto_uitvoering", "auto_part", "auto_description", "email_address");
//Define POSTS and set into SESSIONS
foreach ($posts as $post) {
if (isset($_POST[$post])) {
$_SESSION[$post] = $_POST[$post];
$$post = $_SESSION[$post];
}
}
我也尝试过手动:
$_SESSION['auto_year'] = '2012';
但它仍然无效。我确实在两个页面的顶部调用了session_start(),但它只是一直给我错误。
答案 0 :(得分:1)
使用${}
您可以创建动态变量。在您的情况下,只需更改为:
${$post} = $_SESSION[$post];
答案 1 :(得分:0)
来自您表单的$ _POST数据可能有问题。由于我没有表单信息,我通过设置$ _POST尝试了这个。
session_start();
$_POST['auto_year'] = 1977;
$posts = array("auto_year", "auto_brand", "auto_model", "auto_bodywork", "auto_doors",
"auto_fuel", "auto_gearbox", "auto_type", "auto_uitvoering", "auto_part", "auto_description", "email_address");
//Define POSTS and set into SESSIONS
foreach ($posts as $post) {
echo $post."<br>";
if (isset($_POST[$post])) {
echo "Creating variable for $post<br>";
$_SESSION[$post] = $_POST[$post];
$$post = $_SESSION[$post];
echo '$auto_year: '.$auto_year . "<br>";
}
}
echo "<br><br>".var_dump($_SESSION);
答案 2 :(得分:0)
另一种选择是使用extract()创建变量,这使您可以一次性设置所有变量;
extract($_SESSION);
将为会话中的每个密钥创建一个变量,例如$ auto_year,$ auto_brand等
http://php.net/manual/en/function.extract.php
注意强> 我想知道为什么要将所有数据都放在单独的变量中,而单个关联数组可能同样容易处理?