これにはjavascriptを使用できます。jQuery が含まれていることを確認してください。
ホームページとランディング ページの両方でこれらのヘルパー関数を使用して、Cookie が存在するかどうかを確認し、作成するため、両方のページに含まれているグローバル JavaScript ファイルに次を追加します。
<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>
ホームページに次のスクリプトを含めます。これは基本的に、Cookie「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 を追加する必要があります。この JavaScript は、フォームを送信するためのリッスン イベントをバインドします。イベントが発生すると、Cookie が作成されるため、ユーザーが次にホームページにアクセスしたときに、Cookie は作成されません。リダイレクトされました。
<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 関数を使用すると、Cookie の有効期限が切れるまでの日数 (私の例では 30 日) を渡すことができるので、それを非常に高く設定して長持ちさせることができることを追加したかっただけです。
明らかに、JavaScript Cookie には、人々がブラウザーの Cookie をクリアするリスクが常にありますが、ログインしていないユーザーでこのようなものを追跡する他の方法はありません。ユーザーが削除できないという点でより安全なのは、PHP セッションです。サーバーに保存されますが、これはこれよりもはるかに困難であり、ユーザーをセッションに関連付けるために使用するユーザーデータは、IP、ブラウザーなどのように変更される可能性があるため、常にリスクが存在するため、防弾ではありません.
フォーム ページに表示できるのは、「このフォームは既に入力済みです。メインの Web サイトに移動します」というリンクであり、Cookie が再度設定されます。
最後に、私のソリューションは軽量で、$.cookie などの不要なプラグインが含まれていないことに気付くでしょう。これは、JavaScript を大部分使用し、ドキュメントの準備に jQuery を使用し、送信イベントをバインドするだけであるためです。