2013-03-17 4 views
1

Около 2 часов я борюсь с этой проблемой. Я хочу вставить мои переменные $ _POST в массив $ _SESSION и добавить все новые данные, отправленные из формы в переменную сеанса. Теперь, когда я определяю свою переменную сеанса как массив, я так говорю?
$ _SESSION ['name'];
или вот так
$ _SESSION ['name'] = array();

У меня есть две переменные POST, и я хочу вставить их в массив сеансов.

Вот форма:

<form action="action.php" method="POST" > 
<label>Moovie name: <input type="text" name="name" /></label><br /> 
<label>Price: <input type="text" name="price" /></label><br /> 
<input type="submit" value="Send" /> 
</form> 

А вот action.php

<?php 

session_start(); 

$_SESSION['name'] = array(); 
$_SESSION['price'] = array(); 

$name = $_POST['name']; 
$price = $_POST['price']; 

array_push($_SESSION['name'], $name); 
array_push($_SESSION['price'], $price); 

print_r($_SESSION['name']); 
echo "<br>"; 
print_r($_SESSION['price']); 

?> 

Примечание: Если я говорю

$_SESSION['name']; instead of $_SESSION['name'] = array(); 

я получаю предупреждение: array_push() ожидает параметр 1 является массивом, null указанным в действии.php
Опять же, $ _SESSION ['name'] массив с самого начала?

+0

Проверьте, если [ 'is_array'] (http://www.php.net/manual/en/function.is -array.php), если нет, то установите их в массивы и продолжите, если он уже был инициализирован, что '= array()' код не будет запущен, поэтому вы не будете его обнулять. (или, с тем, как работает PHP, вы можете просто просто использовать '$ _SESSION ['name'] [] = $ name;' и т. д., и если это не массив, это будет сделано для одного.) – Jon

+0

@Jon 'is_array()' все равно вызовет уведомление, что ключ вообще не существует, используйте 'isset()' также/вместо: 'if (! isset ($ _ SESSION ['name'])) {$ _SESSION [ 'name'] = array(); } ' – DaveRandom

ответ

1

Вы освобождаете сеансовые массивы каждый раз, когда запускается этот сценарий.

Чтобы избежать этого, проверьте, если массивы уже присутствуют в сессии:

<?php 

session_start(); 


if (!isset($_SESSION['name'])) { 
    $_SESSION['name'] = array(); 
} 
if (!isset($_SESSION['price'])) { 
    $_SESSION['price'] = array(); 
}  


$name = $_POST['name']; 
$price = $_POST['price']; 

array_push($_SESSION['name'], $name); 
array_push($_SESSION['price'], $price); 

print_r($_SESSION['name']); 
echo "<br>"; 
print_r($_SESSION['price']); 

?> 
+0

Спасибо, ты спас мне много клеток мозга –

Смежные вопросы