Как удалять изменчивые array session многообразных шагов wizard?

Я считаю разработанным простого 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" }
9
задан 17.06.2019, 17:51
0 ответов