2013-09-11 8 views
0

У меня была полная уверенность в верификации, и мне интересно, что сейчас лучше. Это не должно быть надежным, мой первоначальный план - использование jquery.Возрастная проверка

Я нашел этот ресурс, http://www.techerator.com/2010/09/how-to-perform-age-verification-with-jquery-and-cookies-mmm-cookies/

Для простоты использования, я вставил метод здесь:

Используется на страницах, которые нуждаются в проверке

if ($.cookie('is_legal') == "yes") { 
//legal! 
} else { 
document.location = "http://www.domain.com/[pathtofile]/verify.php?redirect=http://<?php echo $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; ?>"; 
} 

Проверка страницы

$('#accept-btn').click(function(){ 
$.cookie('is_legal', 'yes', { expires: 1, path: '/', domain: 'domain.com' }); 

<?php if (!isset($_REQUEST['redirect']) || $_REQUEST['redirect'] == "") { ?> 
document.location = "http://www.domain.com"; 

<?php }else{ ?> 
document.location = "<?php echo $_REQUEST['redirect']; ?>"; 
<?php } ?> 
}); 

вот часть html.

<p>Are you OVER 18</p> 
<div id="accept-btn">YES</div> 
<div id="noaccept-btn">  NO</div > 

Первый вопрос заключается в том, что заявление еще не работает, а он, похоже, использует ту же переменную для перенаправления для опции YES и NO опции.

ТАКЖЕ Мне любопытно, только ради изучения, почему это не работает должным образом и как исправить, а во-вторых, что действительно лучше здесь. Как я сказал, seo/php или надежный способ не критичен.

Мой желаемый результат заключается в том, что при доступе к любой странице на сайте они получают опцию «да» или «нет», а затем, когда «ДА», они получают доступ к странице, если они не выбирают «нет», это перенаправление.

+3

Я думаю, вы должны были бы быть восемнадцать лет, чтобы выяснить, как установить куки в браузере с помощью JavaScript, правильно? – tadman

+3

Вы смешиваете языки в одном заявлении. Короткий ответ - не делайте этого. Когда-либо. – Fresheyeball

+3

Tadman, вам может показаться, что это полезно, у него тоже есть фотографии http://www.wikihow.com/Be-Sarcastic – Deedub

ответ

1

Как насчет чистой версии PHP этого?

<?php 

/** 
* @author - Sephedo 
* @for - Deedub @ Stackoverflow 
* @question - http://stackoverflow.com/questions/18751788/age-verification 
*/ 

$min_age = 18; // Set the min age in years 

if(isset($_POST['submit'])) 
{ 
    if(mktime(0, 0, 0, $_POST['month'], $_POST['day'], $_POST['year']) < mktime(0, 0, 0, date('m'), date('j'), (date('Y') - $min_age))) 
    { 
     var_dump("over $min_age"); 
    } 
    else 
    { 
     var_dump("under $min_age"); 
    } 
} 

?> 

<form method="POST" > 
<fieldset> 
<legend>Enter your age</legend> 
<label for="day" >Day:</label> 
<select name="day" > 
<?php 
    for($x=1; $x <= 31; $x++) 
    { 
     if($x == date("j")) echo "<option selected>$x</option>"; else echo "<option>$x</option>"; 
    } 
?> 
</select> 
<label for="day" >Month:</label> 
<select name="month" > 
<?php 
    for($x=1; $x<=12; $x++) 
    { 
     if($x == date("m")) echo "<option selected>$x</option>"; else echo "<option>$x</option>"; 
    } 
?> 
</select> 
<label for="day" >Year:</label> 
<select name="year" > 
<?php 
    for($x=date("Y"); $x>=(date("Y")-100); $x--) 
    { 
     echo "<option>$x</option>"; 
    } 
?> 
</select> 
<input type="submit" name="submit" /> 
</fieldset> 
</form> 
+0

sephendo, это тоже может работать! СПАСИБО! Я думаю, было бы проще иметь простое да или нет. – Deedub

+0

Я добавил еще один ответ только с кнопками «да» и «нет» – Sephedo

+0

Я также добавил бит cookie - будьте осторожны при тестировании и добавьте setcookie («age_verification», '') вверху, чтобы сбросить – Sephedo

0

Новая версия, как это предусмотрено в комментариях

<?php 
    /** 
    * @author - Sephedo 
    * @for - Deedub @ Stackoverflow 
    * @question - http://stackoverflow.com/questions/18751788/age-verification 
    */ 

    // ADD TO ALL PAGES WHICH NEED TO HAVE AGE VERIFICATION 
    session_start(); 
    if(! isset($_SESSION['age_verification']) or $_SESSION['age_verification'] != true) die(header("Location: checkage.php?url=http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]")); 

    // session_destroy(); // uncomment to reset for testing and debugging. 

    echo 'hello over 18 person'; 

?> 

<?php 

    /** 
    * @author - Sephedo 
    * @for - Deedub @ Stackoverflow 
    * @question - http://stackoverflow.com/questions/18751788/age-verification 
    */ 

    // checkage.php 
    session_start(); 

    // checkage.php 
    if(isset($_POST['yes'])) 
    { 
     $_SESSION['age_verification'] = true; 

     if(isset($_GET['url'])) 
     { 
      die(header('Location: ' . $_GET['url'])); 
     } 
     else 
     { 
      die(header('Location: index.php')); 
     } 
    } 
    elseif(isset($_POST['no'])) 
    { 
     $_SESSION['age_verification'] = false; 
    } 

    // The below line will check if someone has already said no so you can show them a page which tells them to they are too young. 
    if(isset($_SESSION['age_verification']) and $_SESSION['age_verification'] != true) die(header('Location: tooyoung.php')); 

    ?> 

    <form method="POST" > 
    <fieldset> 
    <legend>Are you over 18?</legend> 
    <input type="submit" name="yes" value="Yes" /> <input type="submit" name="no" value="No" /> 
    </fieldset> 
    </form> 
+0

спасибо Sephedo- так, как он захватывает url конкретной страницы, на которой вы находитесь, если люди могут посещать любую страницу на сайте? – Deedub

+0

, так что вы перенаправляете обратно .. плохо добавьте что-нибудь. – Sephedo

+0

на любую страницу, к которой они пытались получить доступ. – Deedub

Смежные вопросы