Если вы хотите сделать все это на стороне клиента, вы, безусловно, можете. Имейте в виду, что это будет легко обойти, поэтому вы никогда не захотите реализовывать реальную безопасность в javascript на клиенте, но для чего-то глупого, чтобы держать сторожевые группы за спиной, это будет работать.
Я предполагаю, что у вас есть HTML-файл, который вы вставили выше, сохраненный как checkAge.html. Добавьте следующее к тегу <form>
:
<form action="index.html" name="age_form" method="get" id="age_form" onSubmit="checkAge()">
Это будет выполнять функцию checkAge
при отправке формы. Если человек говорит, что ему больше 18 лет, то функция возвращает true, и форма отправляется, и загружается index.html
. Если они говорят, что им не 18 лет, функция возвращает значение false, отображается всплывающее окно с предупреждением и форма не отправляется.
И измените вашу функцию checkAge
, чтобы последняя часть выглядела следующим образом:
var ret;
if ( (today.getTime() - theirDate.getTime()) < 0) {
alert("You are too young to enter this site!");
ret = false;
}
else {
ret = true;
}
setCookie('ageCheck', ret, 1); // save the cookie for one day
return ret;
}
При этом добавляется код для установки файла cookie, а затем возвращается значение true или false.
Кроме того, вам нужно добавить эту функцию , чтобы упростить настройку файлов cookie:
function setCookie(c_name,value,expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toUTCString());
}
Это просто вспомогательная функция, облегчающая настройку файла cookie.
Тогда на ваших страницах контента вы можете сделать что-то вроде этого:
<html>
<head>
<title>My age-restricted content</title>
<script>
window.onload = function () {
var ageCheck = getCookie('ageCheck');
if ('true' == ageCheck) {
document.getElementById('content').style.display = '';
} else {
window.location = '/checkAge.html';
}
}
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
</script>
</head>
<body>
<div id="content" style="display: none;">
You can't see this unless you are old enough
</div>
</body>
</html>
Это делает содержимое страницы невидимым по умолчанию. Когда страница загружается, код javascript проверит, есть ли cookie, указывающий, что человеку 18 лет. Если он есть, то отображается содержимое страницы. Если cookie не существует, из cookie существует сообщение о том, что человеку не исполнилось 18 лет, он перенаправляется на страницу проверки возраста.