Исходя из ваших вопросов и примера, я надеюсь, что я правильно понял, что вы хотите.Вы хотите строку для каждого ввода формы, который был недавно опубликован вашим пользователем.
Ваш пример:
foreach($_POST as $key=>$value){
$_SESSION['post'][$key]=$value;
}
Но из этого вы не можете фактически определить фактическое местоположение индекса ключа $ в пределах расположения массива.Также он может содержать все другие значения ключей, которые вам не нужны, поскольку вы захватываете все вводимые данные.Так почему бы не сделать это вместо этого?
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');