为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在 PHP 中将 $_session 数组拆分为字符串变量吗?

我可以在 PHP 中将 $_session 数组拆分为字符串变量吗?

PHP
胡子哥哥 2022-01-23 10:47:08
我已经能够从每个页面上的用户输入中收集变量,但我试图弄清楚我是否可以$_SESSION['post'][$key]=$value;变成这样的东西:$name = $_SESSION[$name];$cuisine = $_POST['cuisine'];$location = $_POST['location'];$price = $_['price'];这里的每个变量都是用户在每个页面上输入的内容。我可以拆分$_SESSION数组吗?我一直在寻找如何做到这一点的日子,但这就是我到目前为止所得到的......//this can be found on all the pages to retrieve the user input<?phpsession_start();//retrieve form data and store as an array as key/valueforeach($_POST as $key=>$value){    $_SESSION['post'][$key]=$value;}print_r($_SESSION);?>所以我从上面的代码中得到了数组: Array ( [post] => Array ( [name] => Michael [cuisine] => Asian [location] => CBD [price] => $ ) )逻辑:开始会话第 1 页 - 问题 1:“用户输入”第 2 页 - 问题 2:“用户输入”第 3 页 - 问题 3:“用户输入”最后一页 = 将用户输入与 mysql 查询数组进行比较抱歉有任何混淆,这是我的第一篇文章。
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

extract() : 从数组中将变量导入当前符号表


$a = ['name' => 'A', 

    'cuisine'    => 'B',

    'location'   => 'C',

    'price'      => 12.3

];

extract($a,EXTR_OVERWRITE);// Please see manual to use `flags` accordingly

echo $name.'--'.$cuisine.'--'.$location.'--'.$price;

工作演示:https ://3v4l.org/APqoE


查看完整回答
反对 回复 2022-01-23
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

根据您的问题和示例,我希望我能做到您想要的。您希望用户最近发布的每个表单输入都有一个字符串。


你的例子:


foreach($_POST as $key=>$value){  

    $_SESSION['post'][$key]=$value; 

}

但由此您无法实际识别数组位置中 $key 的实际索引位置。它还可能包含您不需要的所有其他键值,因为您正在捕获所有输入。那么为什么不这样做呢?


if ($_POST['your-form']) {

    $array = [

       'name' => isset($_POST['name']) ? stripslashes($_POST['name']) : '',

       'cuisine' => isset($_POST['cuisine']) ? stripslashes($_POST['cuisine']) : '',

       'location' => isset($_POST['location']) ? stripslashes($_POST['location']) : '',

       'price' => isset($_POST['price']) ? stripslashes($_POST['price']) : '',   

    ];


    // now bind to session.

    $_SESSION['temp'] = $array;

}

现在,对于您在回调期间需要的字符串,只需:


list($name, $cuisine, $location, $price) = $_SESSION['temp'];


var_dump($name);

var_dump($cuisine);

var_dump($location);

var_dump($price);

编辑:基于评论。


我们做得到。


function set_value($post_key) {

    $val = isset($_POST[$post_key])) ? stripslashes($_POST[$post_key]) : '';

    if (!empty($val)) {

       $_SESSION['temp'][$post_key] = $val; // store into session.

    }

}


function get_value($post_key) {

    return isset($_SESSION['temp'][$post_key]) ? $_SESSION['temp'][$post_key] : NULL;

}

因此,使用这两个功能,您可以随时实现。这里有一套。


if (isset($_POST['form_name'])) {

     set_value('cuisine'); // will store into session.

}

$cuisine = get_value('cuisine');


查看完整回答
反对 回复 2022-01-23
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信