Вы можете использовать javascript для этого. Убедитесь, что у вас включен jQuery.
Добавьте в свой глобальный файл javascript, который включен на обе страницы, поскольку мы будем использовать эти вспомогательные функции как на главной странице, так и на целевой странице, чтобы проверить, существует ли файл cookie, а также создать его.
<script>
function create_cookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toGMTString();
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function get_cookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
</script>
Включить следующий скрипт на главной странице, которая в основном проверяет, существует ли куки «form_submitted», если нет, то перенаправить пользователя на целевую страницу.
<script>
// Redirect to landing page if 'form_submitted' cookie does not exist
if (get_cookie('form_submitted') === 'undefined') {
window.location.href = "http://xxx.com/landing-page";
}
</script>
А на целевой странице, вам необходимо добавить следующий JavaScript, который связывает событие прослушивания для представить в виде и когда это произойдет, то это создает куки, и поэтому в следующий раз, когда пользователь переходит к на главной странице, они не будут перенаправлены.
<script>
jQuery(document).ready(function($) {
// Listen for the form submit event
$('#form-id').on('submit', function(){
// Create cookie so that the user is no longer redirected
create_cookie('form_submitted', 'true', 30);
});
});
</script>
Надеюсь, это поможет. Удачи! =)
Редактировать: Я только что прочитал комментарии, которые остались на вашем оригинальном посте, пока я писал свой ответ. Просто хочу добавить, что добавленная функция create_cookie позволяет вам пройти в течение нескольких дней 30 в моем примере, прежде чем вы захотите, чтобы файл cookie истекал, чтобы вы могли установить его достаточно высоко, чтобы сделать его дольше.
Очевидно, что всегда существует риск с помощью куки-файлов javascript, что люди очищают свои куки-файлы браузеров, но нет другого способа отслеживать что-то подобное на пользователях, которые не вошли в систему. Что может быть более безопасным с точки зрения того, что пользователи не смогут удалить это PHP-сессии, хранящиеся на сервере, но это будет намного сложнее, чем это, и даже это не является доказательством пули, поскольку пользовательские данные, которые вы используете для связи пользователя с сеансом, могут меняться как их IP-адрес, браузер и т. д., поэтому всегда есть риск.
На странице формы вы можете указать ссылку «Я уже заполнил эту форму, отвези меня на главный сайт», который снова устанавливает cookie.
Наконец, вы заметите, что мое решение является легким и не содержит ненужных плагинов, таких как $ .cookie, поскольку я использовал javascript в большой части, только используя jQuery для подготовки документа и привязки события submit.
Файлы cookie обычно истекают через определенное время или пользователь может очистить файлы cookie в любое время, так что это не совсем конкретный способ сделать это. Если вас это не беспокоит, я могу написать ответ о том, как вы можете это сделать, используя jQuery, если хотите? –
Есть ли у вас какие-либо предложения по настройке без очистки очищенных файлов cookie? Если нет - jQuery будет очень полезен, спасибо! – user2528845
Я сам себя обдумывал и, честно говоря, понятия не имею. Может быть, кто-то сможет написать лучший ответ, чем мой, но тем временем я отправлю решение jQuery с помощью cookie. –