Cookie: задать и проверить

298
21 августа 2017, 10:31

Сайт:

site.com

  1. folder
    • index.php
    • one.php
    • two.php
  2. index.php

Собственно, задача в том, чтобы путь пользователя был folder/index.php -> folder/one.php -> folder/two.php без возможности перейти от folder/index.php к folder/two.php минуя folder/one.php. Решил реализовать это через куки.

Задаю куку при нажатии кнопку "submit" на folder/index.php на 5 минут:

if (isset($_GET['submit'])) SetCookie("name_started","Started",time()+300);

Затем, если на folder/one.php нажимается кнопка "submit" и есть первая кука, задается кука "name_two" также на 5 минут. Если первой куки нет, редирект на index.php:

if (isset($_COOKIE['name_started']) && isset($_GET['submit'])) SetCookie("name_two","Two",time()+300);
if (!isset($_COOKIE['name_started'])) exit(redirect("../folder/"));

И аналогично на two.php.

Проблема в том, что при нажатии кнопки "submit" на folder/index.php, я перехожу на folder/one.php и меня редиректит на folder/index.php, будто кука не сохранялась. В браузере прием куки разрешен.

Answer 1

Проблема вся в том, что не вызывается index.php в action.

Допустим у нас есть шаги регистрации:
1.php - попадаем всегда
2.php - если есть кука из 1.php
3.php - Если есть куки 2.php

реализация должна быть примерно такой:

1.php:

 <?php
   if (isset($_GET['submit'])) {
     setcookie("name_started","Started",time()+300);
      header( 'Location: http://test.dev/2.php' ); //если всё ок, то идём в 2.php
   }
 ?>
 <form action="1.php">
     <p>1</p>
     <input type="submit" name="submit" value="send1"/>
 </form>

2.php:

<?php
   if (isset($_COOKIE['name_started']) && isset($_GET['submit'])) {
       setcookie("name_two","Two",time()+300);
       header( 'Location: http://test.dev/3.php' );  //если всё ок идём в 3.php
   } else if(!isset($_COOKIE['name_started'])) {
       header( 'Location: http://test.dev/1.php' ); //если нету куки, то идём в 1.php
   }
?>
<form action="2.php"> 
    <p>2</p>
    <input type="submit" name="submit" value="send2"/>
</form>

3.php:

<?php

   if ( isset($_COOKIE['name_two']) && isset($_GET['submit'])) {
       setcookie("name_three","Three",time()+300);
       die('success');
   } else if(!isset($_COOKIE['name_two'])) {
       header( 'Location: http://test.dev/2.php' ); //если нет второй куки идём в 2.php, а если нет и первой, то в 2.php есть проверка на первую кук и тогда она редиректит на 1.php
   }
?>
<form action="3.php">
<p>3</p>
    <input type="submit" name="submit" value="send3"/>
</form>

Вот как то так оно должно работать на куках

READ ALSO
Поиск запроса в тексте

Поиск запроса в тексте

Приходят данные от стороннего API - запрос и текст в котором нужно искать этот запросКириллица

183
Сравнить два массива объектов php

Сравнить два массива объектов php

Есть два массива с именамиЗаписать в третий массив имена которые не совпадают из первого и второго массива

237
Strcmp() Ошибка

Strcmp() Ошибка

Не понимаю, в чем проблемаВ справочниках сказано, что функция strcmp(str1,str2), если str1 > str2, то компилятор вернет значение > 0 , если str1 < str2, то значение...

288
Как вывести текст в любую часть экрана?

Как вывести текст в любую часть экрана?

Необходимо вывести текст в координаты x, y на дисплей,Не в само окошко программы, а на desktop, любое другое окно других программ по заданным координатам...

413