2016-04-25 8 views
0

mein Code ist Leute hereinlassen, wenn dort über 19, aber auch, wenn Sie zu alt ist es nicht lassen Sie eingeben, warum ist das? Ich hatte eine Person versuchen, meine Website heute mit 1958 zu betreten und bekam noch gekickt i 1989 eingeben und es funktioniert gutAlter Verify-Code, der Leute aus alten Zeiten herausbringt?

Indexseite

<!doctype html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9" lang=""> <![endif]--> 
<!--[if gt IE 8]><!--> 
<html class="no-js" lang=""> 
<!--<![endif]--> 

<head> 
<meta charset="utf-8"> 
<meta name="description" content=""> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<title>510 Vapour</title> 
<link rel="stylesheet" href="css/bootstrap.min.css"> 
<link rel="stylesheet" href="css/main.css"> 
<link rel="stylesheet" href="css/responsive.css"> 
<link rel="stylesheet" href="css/animate.min.css"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> 
</head> 
<div class="js"> 
<body> 
    <!-- Preloader section --> 
<div id="preloader"></div> 
<!-- Preloader section --> 
<div class="container"> 
    <!-- AccessBox section --> 
    <div id="accessbox"class="animated bounceInDown"> <img class="profile-img" src="images/logo.png" /> 
    <h2 class="text-center">Please enter your date of birth</h2> 
    <!-- Form section--> 
    <form action="php/access.php" method="post" class="access-form"> 
     <input type="text" name="yy" class="access-input-lg" placeholder="2016" required autofocus> 
     <input type="text" name="mm" class="access-input" placeholder="05"> 
     <input type="text" name="dd" class="access-input" placeholder="10"> 
     <input type="submit" name="submit"class="access-btn" value="OK" > 
     <div id="remember" class="checkbox text-center"> 
     <label class="text-center"> 
      <input type="checkbox" value="remember-me"> 
      Remember me </label> 
     </div> 
    </form> 
    <!-- Form section--> 
    <h1 class="text-center"><i class="fa fa-exclamation-triangle red"></i> You must be 19+ to enter this site </h1> 
    <p class="text-center">By ENTERING, you are consenting to your Province's Smoking Laws. You may be required to show a valid government issued Photo ID indicating your date of birth at time of delivery or at the Post Office.</p> 
    </div> 
    <!-- AccessBox section --> 
</div> 
<!-- /container --> 
<!-- JS files--> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
<!-- Pre Loader--> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 

$(window).load(function(){ 
    $('#preloader').fadeOut('slow',function(){$(this).remove();}); 
}); 

}); 
</script> 
</body> 
</div> 
</html> 

access.php

<?php 

    $minAge = 19; 

    if(isset($_POST['submit'])){ 

     if(strlen($_POST['mm'])==1) 
     $month = '0'.$_POST['mm']; 
     else 
     $month = $_POST['mm']; 
     $agevar = $_POST['yy']; 

     $age = strtotime($agevar); 

     $nineteen = strtotime("-" . $minAge . " years"); 

     if($age && $nineteen && $age <= $nineteen){ 

     header('Location: https://www.510vapour.com/main'); 

     } 

     else{ 

     header('Location: ../error.html'); 

     } 

    } 

    ?> 
+2

Verwenden Sie geschweifte Klammern für * alle * Steuerblöcke und Sie werden viel weniger Fehler wie diese haben. Verwenden Sie auch keine strtotime für die Datumsberechnungen. Das ist nicht dafür gedacht. –

+1

Warum checkst du den Tag nicht? der Benutzer kann am letzten Tag des Monats geboren haben und technisch gesehen ist er immer noch 18 Jahre alt. –

+0

lol Entschuldigung im neuen zu PHP so ich semi nicht bekommen, was Sie sagen können Sie bitte helfen –

Antwort

0

Hier ein einfachere Lösung:

if (time() < strtotime('+19 years', strtotime($dob))) { 
    //User is under 19 years of age 
    header('Location: ../error.html'); 
}else{ 
    header('Location: https://www.510vapour.com/main'); 
} 

Valid $dob

1979-02-21 oder 21 Feb 1986


Sie können auch ein jQuery script verwenden Benutzer Alter zu überprüfen.

+0

glaube nicht, dass das für mich funktioniert –

0

Sie können DateTime Objekte verwenden, um das genaue Alter der Person zu berechnen und die entsprechende Aktion basierend darauf auszuwählen.

Das Format year-month-day beim Erstellen des Objekts sollte unabhängig von der Anzahl der Stellen für Jahr, Monat oder Tag verwendet werden.

$birthdate = new DateTime($_POST['yy'].'-'.$_POST['mm'].'-'.$_POST['dd']); 
$now = new DateTime; 
$age = $birthdate->diff($now); 

if ($age->y >= $minAge){ 
    header('Location: https://www.510vapour.com/main'); 
} else { 
    header('Location: ../error.html'); 
} 
+0

Entschuldigung ich bin neu zu PHP also wo würde das Stück Code gehen? –

+0

Dies könnte alles innerhalb des 'if (isset ($ _ POST ['submit'])) {' Blocks ersetzen. –

+0

Dies ist jedoch ein minimales Beispiel. Sie müssten weiterhin sicherstellen, dass die erforderlichen '$ _POST'-Variablen tatsächlich auf gültige Werte gesetzt sind und Fehler auftreten, falls dies nicht der Fall ist. –

Verwandte Themen