Я считаю разработанным простого Wizard
, функционирование - использование одного tabs
, что только скрывает и показывает div
в шаге, который находится.
<div id="step1" class="step">
</div>
<div id="step2" class="step">
</div>
<div id="step3" class="step">
</div>
Контент появляется согласно шагу посредством var step = <?php echo $step ?>;
если в переменной javascript/jquery
у него есть следующая информация var step = 3;
уходит показывать контент id step3
а именно следующее:
<div id="step3" class="step">
</div>
Чтобы сохранять шаги, которые находит пользователь в настоящее время и так предотвращать возврат продвижения того же самого, я использую сеансы PHP
, чтобы показывать пользователю шаг, где я остаюсь, и не начинаться с начала, для этого у меня есть три файла PHP
:
saveTemp.php
<?php
session_start();
$step = isset($_GET['step']) ? $_GET['step'] : 1;
$_SESSION['datos_form'] = $_POST;
include 'php/libs/validate.php';
header('Content-Type: application/json');
$json = array(
'radio' => $radio,
'step' => $step
);
echo json_encode($json);
?>
wizard.php
<?php
//session_start();
if (isset($_GET['p'])) {
session_destroy();
session_start();
}
include 'validate.php';
$r =array(
1 => 'Transferencia Bancaria',
2 => 'PayPal',
3 => 'Tarjeta de credito',
);
?>
validate.php
<?php
$datosForm = (isset($_SESSION['datos_form']) && is_array($_SESSION['datos_form'])) ? $_SESSION['datos_form'] :array();
$sPaso = isset($datosForm['__step__']) ? $datosForm['__step__'] : 1;
$step = isset($step) ? $step : $sPaso;
$radio = isset($datosForm['radio']) ? $datosForm['radio'] : 1;
$_SESSION['datos_form']['__step__'] = $step;
?>
Уже я возвращаю сохраняемые шаги следующей формы:
<script type="text/javascript">
var step = <?php echo $step ?>;
var radio = <?php echo $radio ?>;
</script>
Проблема, которую я представляю, - это, закончив покупку, где я пробую удалять сеансы шагов $step
чтобы возобновлять в шаг 1, используя функцию unset
:
if($payment === 'Completed'){
session_start();
unset($_SESSION['datos_form']);
unset($_SESSION['__step__']);
unset($_SESSION['formid']);
unset($_SESSION['sPaso']);
unset($_SESSION['Pending']);
unset($_SESSION['radio']);
unset($_SESSION['p']);
unset($_SESSION['step']);
unset($step);
unset($radio);
}
Я реализовал один var_dump($_SESSION);
и один print_r($GLOBALS);
получая следующую информацию:
[_SESSION] => Array
(
[datos_form] => Array
(
[__step__] => 3
)
[4b228aaae2a6a7ce403bc4ecbc481de6] => ../libro.pdf
[cart] => Array
(
[0] => 11
)
[qty] => Array
(
[0] => 1
)
[formid] => 64da7c62c643f40684f573acffb144eba6bfaf63
[id_user] => 1
)
)
var_dump
array(6) { ["datos_form"]=> array(1) { ["__step__"]=> string(1) "3" }
Когда я перемещаю в шаг 1, получается следующее изменение:
[datos_form] => Array
(
[__step__] => 1
)
array(6) { ["datos_form"]=> array(1) { ["__step__"]=> string(1) "1" }
Когда я перемещаю в шаг 2, получается следующее изменение:
[datos_form] => Array
(
[__step__] => 2
)
array(6) { ["datos_form"]=> array(1) { ["__step__"]=> string(1) "2" }