Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2019, 23:41
Интересующийся
Отправить личное сообщение для razik Посмотреть профиль Найти все сообщения от razik
 
Регистрация: 14.09.2018
Сообщений: 21

Как реализовать такой скрипт (редирект)
добрый день,нужна помощь.

Есть 4 страницы html

1.html
2.html
3.html
4.html

пользователь идет сначала на 1.html и так до 4,

задача:

допустим он дошел до 3.html и хочет перейти назад, необходимо его туда не возвращать, и вобще через куки оставить его на той странице на которой он сейчас, т.е. 3, как то отключить возврат назад через куки... если бы он был на 4 стр. и нажал назад , то оставить его на 4.. и тд.

проблема:

не подходит решение на js, т.к. все можно подсмотреть, обфускация кода также не подходит

как реализовать что то подобное ? может кто подскажет
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2019, 02:31
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

razik, это нужно делать на уровне сервера. Хранить step на сессию пользователя, генерировать нужную страницу в зависимости от текущего step.

Бэк на каком языке?
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2019, 17:37
Интересующийся
Отправить личное сообщение для razik Посмотреть профиль Найти все сообщения от razik
 
Регистрация: 14.09.2018
Сообщений: 21

Сообщение от ruslan_mart Посмотреть сообщение
razik, это нужно делать на уровне сервера. Хранить step на сессию пользователя, генерировать нужную страницу в зависимости от текущего step.

Бэк на каком языке?
я бы выбрал php, но не знаю как сделать то что написал(
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2019, 17:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от razik
я бы выбрал php, но не знаю как сделать
Анализировать запросы клиента. Для этого все запросы клиента нужно хранить в сессии, в РНР это суперглобальный массив $_SESSION. В сессию можно записывать имя файла, которое из сетевого пути можно получить функцией basename. Перед тем как отдать клиенту запрашиваемую страницу, серверный скрипт проверяет содержит ли сессия ранее запомненное имя страницы и если да, то направляет клиента на нее, если же нет, то запоминает новое имя страницы в сессии и перенаправляет на нее.

То есть, на сервере либо все запросы клиента должны перенаправляться на индексный файл, в котором выполняется сценарий вышеописанный, который проверяет, запоминаем, перенаправляет на ... или подключает нужный файл, либо в каждом из ваших файлов должен быть php-код выполняющий эти операции. Для того, чтобы РНР код выполнялся в файлах с расширением .html, это расширение нужно добавить как исполняемое на сервере.

В общем нужно сперва определится со структурой файлов на сервере и прочие условия если таковые есть.
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2019, 18:01
Интересующийся
Отправить личное сообщение для razik Посмотреть профиль Найти все сообщения от razik
 
Регистрация: 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';?>

но вот по поводу логики не хватает знаний( поэтому обратился за помощью
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2019, 18:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну а какая тут может быть логика, обычная проверка и выполнение ее результата. Но ведь сайт же не эти 4 страницы, наверное же есть и другие, по крайней мере индексный файл уж точно должен быть. Каково должно быть действие если клиент к примеру после второй страницы запросит иную, которой нет среди указанных?

То чего вы хотите, это некий частный случай, а сценарий должен проверять и выполнять все условия в пределах всей файловой структуры сайта. Если сценарий описать как частный случай без учета этого, то он у вас сразу же развалится как только произойдет запрос не описанный условиями в сценарии. Это понятно?

Последний раз редактировалось laimas, 15.09.2019 в 19:09.
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2019, 10:06
Интересующийся
Отправить личное сообщение для razik Посмотреть профиль Найти все сообщения от razik
 
Регистрация: 14.09.2018
Сообщений: 21

Сообщение от laimas Посмотреть сообщение
Ну а какая тут может быть логика, обычная проверка и выполнение ее результата. Но ведь сайт же не эти 4 страницы, наверное же есть и другие, по крайней мере индексный файл уж точно должен быть. Каково должно быть действие если клиент к примеру после второй страницы запросит иную, которой нет среди указанных?

То чего вы хотите, это некий частный случай, а сценарий должен проверять и выполнять все условия в пределах всей файловой структуры сайта. Если сценарий описать как частный случай без учета этого, то он у вас сразу же развалится как только произойдет запрос не описанный условиями в сценарии. Это понятно?
да понятно, но грубо говоря, если попал на страницу задача уже на этой странице задержать, чтобы не вводил что попало, если иную указал также на этой странице задерживаем, нужно по цепочке его провести, т.е. исходные данные это определенная цепочка страниц,

но просто зайдя на сайт и заведомо вбить адрес из "цепочки" страниц также не должно давать никакого результата, как то так, не знаю поняли ли вы меня
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2019, 11:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сценарий разрабатывается под определенные цели, если ее нет, то и написать код невозможно. Пользователь попавший впервые на ваш сайт, что попадает сразу на страницу 1.html после чего обязан дойти хоть умри до 4.html? А что дальше?

Без понятия целей этой частной задачи она представляется как прихоть, а не задача. Можно "удержать" так как описано ранее и хватит двух базовых функций для этого. А можно и по иному поступить, например иметь массив с ключами от 1 по N, который описывает файлы, по которым нужно пройти, а сессия хранит счетчик шагов, по которому как по ключу в массиве можно определять и следующий файл, и запрещать переход, и прочее. Но время жизни сессии по умолчанию равно 24 минутам, что должен делать сценарий если находясь на одной из страниц будет запрос клиента тогда, когда сессия умерла? И почему запрещать шаг назад? Например, если речь идет о пошаговом заполнении формы, то запрещать возвраты это большая глупость ибо пользователь может допустить и ошибку в предыдущем шаге, исправить которую он уже не сможет.

Решений может быть как 1000 и одна ночь, какое из них выбрать будет зависеть от цели "удержания", если только это действительно так.

Последний раз редактировалось laimas, 16.09.2019 в 11:10.
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2019, 12:48
Интересующийся
Отправить личное сообщение для razik Посмотреть профиль Найти все сообщения от razik
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2019, 13:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от razik
запрещать нужно чтобы пользователь повторно не купил одно и тоже
И что это означает, нельзя купить любой товар в количестве более одного? Или нельзя купить любой товар более одного раза в день, месяц, ...?

У вас всего четыре товара и не магазин, а базар на доверии? Вы в реальном магазине делали же покупки, вам в нем разве запрещали посещать любой его раздел без покупки в них товаров? Конечно же нет, вы можете бродить по магазину вообще не совершив покупки в итоге, выбирать любые товары в любом разделе, а расплачиваться за все на выходе на единой кассе.

Все ваши шаги в контексте магазина это просто глупость. В виртуальном магазине так же как и в реальном ведется учет товаров, которые описываются в базе данных, и которые покупатель помещает в корзину. Вот тут уж проверяйте чего там нельзя больше чего-то покупать, то есть положить в корзину. А покупка в виртуальном магазине, это этап оформления заказа.

Не трогайте пока вообще никакого языка программирования, ни серверного, ни клиентского, подумайте над концепцией своего магазина, политикой торговли, и только потом эту концепцию перекладывать в программный код. А все что выше вы тут пишите никуда не годится. Вряд ли вы без знания языка серверного сможете написать магазин, поэтому берите либо готовый движок и стройте на нем свой магазин, либо если он имеет какую-то специфику, которую нельзя реализовать движком готовым, то заказывайте оплачиваемую работу, пишите техническое задание на свой магазин, будет вам рабочий код рабочего магазина.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
help Не могу понять как реализовать такой слайдер ElecricWizard Общие вопросы Javascript 6 11.05.2015 14:41
как получить такой же эффект как на примере. vuler Общие вопросы Javascript 3 18.02.2015 14:05
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34
как можно реализовать вот такой эффект меню(http://allure-estetic.ru/)? Reasgo Библиотеки/Тулкиты/Фреймворки 3 09.10.2011 16:46
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40