14.09.2019, 23:41
|
Интересующийся
|
|
Регистрация: 14.09.2018
Сообщений: 21
|
|
Как реализовать такой скрипт (редирект)
добрый день,нужна помощь.
Есть 4 страницы html
1.html
2.html
3.html
4.html
пользователь идет сначала на 1.html и так до 4,
задача:
допустим он дошел до 3.html и хочет перейти назад, необходимо его туда не возвращать, и вобще через куки оставить его на той странице на которой он сейчас, т.е. 3, как то отключить возврат назад через куки... если бы он был на 4 стр. и нажал назад , то оставить его на 4.. и тд.
проблема:
не подходит решение на js, т.к. все можно подсмотреть, обфускация кода также не подходит
как реализовать что то подобное ? может кто подскажет
|
|
15.09.2019, 02:31
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
razik, это нужно делать на уровне сервера. Хранить step на сессию пользователя, генерировать нужную страницу в зависимости от текущего step.
Бэк на каком языке?
|
|
15.09.2019, 17:37
|
Интересующийся
|
|
Регистрация: 14.09.2018
Сообщений: 21
|
|
Сообщение от ruslan_mart
|
razik, это нужно делать на уровне сервера. Хранить step на сессию пользователя, генерировать нужную страницу в зависимости от текущего step.
Бэк на каком языке?
|
я бы выбрал php, но не знаю как сделать то что написал(
|
|
15.09.2019, 17:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от razik
|
я бы выбрал php, но не знаю как сделать
|
Анализировать запросы клиента. Для этого все запросы клиента нужно хранить в сессии, в РНР это суперглобальный массив $_SESSION. В сессию можно записывать имя файла, которое из сетевого пути можно получить функцией basename. Перед тем как отдать клиенту запрашиваемую страницу, серверный скрипт проверяет содержит ли сессия ранее запомненное имя страницы и если да, то направляет клиента на нее, если же нет, то запоминает новое имя страницы в сессии и перенаправляет на нее.
То есть, на сервере либо все запросы клиента должны перенаправляться на индексный файл, в котором выполняется сценарий вышеописанный, который проверяет, запоминаем, перенаправляет на ... или подключает нужный файл, либо в каждом из ваших файлов должен быть php-код выполняющий эти операции. Для того, чтобы РНР код выполнялся в файлах с расширением .html, это расширение нужно добавить как исполняемое на сервере.
В общем нужно сперва определится со структурой файлов на сервере и прочие условия если таковые есть.
|
|
15.09.2019, 18:01
|
Интересующийся
|
|
Регистрация: 14.09.2018
Сообщений: 21
|
|
Сообщение от laimas
|
Анализировать запросы клиента. Для этого все запросы клиента нужно хранить в сессии, в РНР это суперглобальный массив $_SESSION. В сессию можно записывать имя файла, которое из сетевого пути можно получить функцией basename. Перед тем как отдать клиенту запрашиваемую страницу, серверный скрипт проверяет содержит ли сессия ранее запомненное имя страницы и если да, то направляет клиента на нее, если же нет, то запоминает новое имя страницы в сессии и перенаправляет на нее.
То есть, на сервере либо все запросы клиента должны перенаправляться на индексный файл, в котором выполняется сценарий вышеописанный, который проверяет, запоминаем, перенаправляет на ... или подключает нужный файл, либо в каждом из ваших файлов должен быть php-код выполняющий эти операции. Для того, чтобы РНР код выполнялся в файлах с расширением .html, это расширение нужно добавить как исполняемое на сервере.
В общем нужно сперва определится со структурой файлов на сервере и прочие условия если таковые есть.
|
могу файлы сделать не .html а .php, мне бы понять как реализовать кодом что вы описали выше, структура файлов, все страницы:
1.php
2.php
3.php
4.php
будут в корневом каталоге сайт.ру/
а всю логику хотелось бы вывести в файл если такое возможно?
к примеру config.php а далее получается его можно уже подключить к страничкам .php
<?php include 'config.php';?>
но вот по поводу логики не хватает знаний( поэтому обратился за помощью
|
|
15.09.2019, 18:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Ну а какая тут может быть логика, обычная проверка и выполнение ее результата. Но ведь сайт же не эти 4 страницы, наверное же есть и другие, по крайней мере индексный файл уж точно должен быть. Каково должно быть действие если клиент к примеру после второй страницы запросит иную, которой нет среди указанных?
То чего вы хотите, это некий частный случай, а сценарий должен проверять и выполнять все условия в пределах всей файловой структуры сайта. Если сценарий описать как частный случай без учета этого, то он у вас сразу же развалится как только произойдет запрос не описанный условиями в сценарии. Это понятно?
Последний раз редактировалось laimas, 15.09.2019 в 19:09.
|
|
16.09.2019, 10:06
|
Интересующийся
|
|
Регистрация: 14.09.2018
Сообщений: 21
|
|
Сообщение от laimas
|
Ну а какая тут может быть логика, обычная проверка и выполнение ее результата. Но ведь сайт же не эти 4 страницы, наверное же есть и другие, по крайней мере индексный файл уж точно должен быть. Каково должно быть действие если клиент к примеру после второй страницы запросит иную, которой нет среди указанных?
То чего вы хотите, это некий частный случай, а сценарий должен проверять и выполнять все условия в пределах всей файловой структуры сайта. Если сценарий описать как частный случай без учета этого, то он у вас сразу же развалится как только произойдет запрос не описанный условиями в сценарии. Это понятно?
|
да понятно, но грубо говоря, если попал на страницу задача уже на этой странице задержать, чтобы не вводил что попало, если иную указал также на этой странице задерживаем, нужно по цепочке его провести, т.е. исходные данные это определенная цепочка страниц,
но просто зайдя на сайт и заведомо вбить адрес из "цепочки" страниц также не должно давать никакого результата, как то так, не знаю поняли ли вы меня
|
|
16.09.2019, 11:07
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сценарий разрабатывается под определенные цели, если ее нет, то и написать код невозможно. Пользователь попавший впервые на ваш сайт, что попадает сразу на страницу 1.html после чего обязан дойти хоть умри до 4.html? А что дальше?
Без понятия целей этой частной задачи она представляется как прихоть, а не задача. Можно "удержать" так как описано ранее и хватит двух базовых функций для этого. А можно и по иному поступить, например иметь массив с ключами от 1 по N, который описывает файлы, по которым нужно пройти, а сессия хранит счетчик шагов, по которому как по ключу в массиве можно определять и следующий файл, и запрещать переход, и прочее. Но время жизни сессии по умолчанию равно 24 минутам, что должен делать сценарий если находясь на одной из страниц будет запрос клиента тогда, когда сессия умерла? И почему запрещать шаг назад? Например, если речь идет о пошаговом заполнении формы, то запрещать возвраты это большая глупость ибо пользователь может допустить и ошибку в предыдущем шаге, исправить которую он уже не сможет.
Решений может быть как 1000 и одна ночь, какое из них выбрать будет зависеть от цели "удержания", если только это действительно так.
Последний раз редактировалось laimas, 16.09.2019 в 11:10.
|
|
16.09.2019, 12:48
|
Интересующийся
|
|
Регистрация: 14.09.2018
Сообщений: 21
|
|
Сообщение от laimas
|
Сценарий разрабатывается под определенные цели, если ее нет, то и написать код невозможно. Пользователь попавший впервые на ваш сайт, что попадает сразу на страницу 1.html после чего обязан дойти хоть умри до 4.html? А что дальше?
Без понятия целей этой частной задачи она представляется как прихоть, а не задача. Можно "удержать" так как описано ранее и хватит двух базовых функций для этого. А можно и по иному поступить, например иметь массив с ключами от 1 по N, который описывает файлы, по которым нужно пройти, а сессия хранит счетчик шагов, по которому как по ключу в массиве можно определять и следующий файл, и запрещать переход, и прочее. Но время жизни сессии по умолчанию равно 24 минутам, что должен делать сценарий если находясь на одной из страниц будет запрос клиента тогда, когда сессия умерла? И почему запрещать шаг назад? Например, если речь идет о пошаговом заполнении формы, то запрещать возвраты это большая глупость ибо пользователь может допустить и ошибку в предыдущем шаге, исправить которую он уже не сможет.
Решений может быть как 1000 и одна ночь, какое из них выбрать будет зависеть от цели "удержания", если только это действительно так.
|
1 2 3 4 это все покупки, запрещать нужно чтобы пользователь повторно не купил одно и тоже двигался дальше по страницам, про счетчик вы все верно описали, именно в той последовательности и тех страниц которые нужно указать в конфиге, шаг влево и вправо растрел) назад возвращать на -1 шаг(предыдущую) страницу не допускается как и для нового пользователя попасть сразу на шаг вперед..т.к. он сразу получит что купил, но он этого не делал и захотел сразу перескочить.. примерно так, остается только понять как код накидать с этими 2мя базовыми функциями, я пока в php 0) время сессии максимально возможное
Последний раз редактировалось razik, 16.09.2019 в 12:53.
|
|
16.09.2019, 13:14
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от razik
|
запрещать нужно чтобы пользователь повторно не купил одно и тоже
|
И что это означает, нельзя купить любой товар в количестве более одного? Или нельзя купить любой товар более одного раза в день, месяц, ...?
У вас всего четыре товара и не магазин, а базар на доверии? Вы в реальном магазине делали же покупки, вам в нем разве запрещали посещать любой его раздел без покупки в них товаров? Конечно же нет, вы можете бродить по магазину вообще не совершив покупки в итоге, выбирать любые товары в любом разделе, а расплачиваться за все на выходе на единой кассе.
Все ваши шаги в контексте магазина это просто глупость. В виртуальном магазине так же как и в реальном ведется учет товаров, которые описываются в базе данных, и которые покупатель помещает в корзину. Вот тут уж проверяйте чего там нельзя больше чего-то покупать, то есть положить в корзину. А покупка в виртуальном магазине, это этап оформления заказа.
Не трогайте пока вообще никакого языка программирования, ни серверного, ни клиентского, подумайте над концепцией своего магазина, политикой торговли, и только потом эту концепцию перекладывать в программный код. А все что выше вы тут пишите никуда не годится. Вряд ли вы без знания языка серверного сможете написать магазин, поэтому берите либо готовый движок и стройте на нем свой магазин, либо если он имеет какую-то специфику, которую нельзя реализовать движком готовым, то заказывайте оплачиваемую работу, пишите техническое задание на свой магазин, будет вам рабочий код рабочего магазина.
|
|
|
|