Запуск пользовательского ввода проверки PHP приводит к пустому массиву SESSION

Я делаю простую корзину. Я не уверен, как описать мою проблему. У меня есть две страницы. 1-й имеет флажки рядом с каждым элементом. 2-й создайте пустой массив в SESSION, затем в цикле поместите все отмеченные элементы в массив сеанса и распечатайте количество элементов. 2-я страница также имеет форму для ввода сведений о пользователе, которая проверяется с использованием PHP, а не JS. Проблема заключается в том, что при отправке этой формы 2-я страница перезагружается, и массив сессии становится пустым как $ _SESSION [‘cart’] = array (); срабатывает. отправка 1-й страницы дает правильный результат на 2-й странице, но эти результаты становятся 0 при отправке формы на 2-й странице. на обеих страницах есть: session_start (); На вершине.

Вот ключевые части кода для 1-й страницы:

<form name="form" method="POST" id="form" action="cart.php">
<input type=checkbox name=cart[item1]>
<input type=checkbox name=cart[item2]>…etc

2-я страница (cart.php):

include "Validation.php";
$_SESSION['cart']=array();
if(isset($_POST['cart'])){
foreach($_POST['cart'] as $checkboxID => $checkboxVal){
array_push($_SESSION['cart'], $checkboxID);
}
}
echo "<p>number of items in the cart = ".sizeof($_SESSION['cart'])."</p>";<form name="form" method="POST" id="form" action="">
<input type="text" name="userEmail" id="userEmail" placeholder="e.g. [email protected]"/>
<input type="submit" class="buttun" name="buy" value="buy"/>

3-я страница (Validation.php):

if (isset($_POST["buy"])){
//some validation code
}

Есть ли способ решить эту проблему? Я пытался создать пустой массив внутри оператора if, но получил плохие результаты. Я думаю, что использование проверки JS решит проблему, но предпочитаю проверку php.

Спасибо

0

Решение

В вашем коде немало проблем.

надеюсь, вы используете session_start(); в начале вы потеряете данные сессий, когда ваша страница перезагрузится / перейдет на следующую страницу.

во второй части вам не нужно объявлять переменную.

if(isset($_POST['cart']) && !isset($_SESSION['cart']))
foreach($_POST['cart'] as $checkboxID => $checkboxVal)$_SESSION['cart'][$checkboxID]=$checkboxVal;

когда вы хотите увидеть, была ли использована форма, используйте скрытый ввод
<input type='hidden' name='form1' value='1'>

потом вы можете использовать
if(isset($_POST['form1']))...

также, sizeof($_SESSION['cart']) должно быть посчитано ($ _ SESSION [‘cart’])

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]