经过大量的搜索和错误搜索后,我难倒了。 重定向不允许我访问实际站点的代码有什么问题?我无法获得年龄输入来指引我到主站点或index.php。无论输入什么日期,如果答案错误,重定向到用户将去的地方 - 在这种情况下,youtube。
这是我在index.php本地工作的内容:
<?php
@session_start();
$url = 'http://localhost/J2.5/index.php';
if (!isset($_COOKIE['Visited'])) {
$_COOKIE['Visited'] = 1;
$url = 'http://localhost/J2.5/ageverificationone.php';
}
header("Location: {$url}");
?>
该部分很适合弹出年龄验证脚本所在的实际页面 - ageverificationone.php(可以是任何名称..很多变化):
<?php
session_start();
if($_SERVER['REQUEST_METHOD']=='POST')
{
if(isset($_POST['YES']))
{
$redirect=isset($_GET['return'])?urldecode($_GET['return']):'./';
$expire=isset($_GET['x']) && is_numeric($_GET['x'])?intval($_GET['x']):-1;
if($expire==-1)
{
$_SESSION['verified']="yes";
header("location: ".$redirect);
exit(0);
}
if($expire==0)
{
setcookie("verified", "yes",mktime(0,0,0,01,01,date("Y")+30));
$_SESSION['verified']="yes";
header("location: ".$redirect);
exit(0);
}
setcookie("verified", "yes",(time()+$expire));
$_SESSION['verified']="yes";
header("location: http://www.superiorvaping.com/");
exit(0);
}else{
header("location: http://www.youtube.com/watch?v=gppbrYIcR80");
exit(0);
}
}
?>
<html>
<head>
<title>Age Verification</title>
<script language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
//-->
</script>
<script type="text/javascript">
function jumpField(elmnt,content)
{
if (content.length==elmnt.maxLength)
{
next=elmnt.tabIndex
if (next<document.forms[0].elements.length)
{
document.forms[0].elements[next].focus()
}
}
}
</script>
<script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script>
<script src="js/fade.js" type="text/javascript"></script>
<link href="js/ageverify.css" type="text/css" rel="stylesheet" />
</head>
<body id="body" OnLoad="document.ageVerifyForm.month.focus();">
<img src="images/logoVerify.png" alt="Superior Vaping" id="logoVerify" /><br />
<p id="welcome">Welcome! Please enter your date of birth.</p>
<form id="ageVerifyForm" name="ageVerifyForm" action="" method="POST" onsubmit="return formCheck(this);">
<input type="text" tabindex="1" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="month" name="month" maxlength="2" size="2" required="required" value="MM" onfocus="value=''" />
<input type="text" tabindex="2" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="day" name="day" maxlength="2" size="2" required="required" value="DD" onfocus="value=''" />
<input type="text" tabindex="3" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="year" name="year" maxlength="4" size="4" required="required" value="YYYY" onfocus="value=''" />
<br />
<input type="submit" value="Enter Superior Vaping" id="submit" name="submit" />
</form>
<script language="JavaScript">
<!--
function formCheck(formobj){
// Enter name of mandatory fields
var fieldRequired = Array("month", "day", "year");
// Enter field description to appear in the dialog box
var fieldDescription = Array("month", "day", "year");
// dialog message
var alertMsg = "Please complete the following fields:\n";
var l_Msg = alertMsg.length;
for (var i = 0; i < fieldRequired.length; i++){
var obj = formobj.elements[fieldRequired[i]];
if (obj){
switch(obj.type){
case "select-one":
if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "select-multiple":
if (obj.selectedIndex == -1){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "text":
case "textarea":
if (obj.value == "" || obj.value == null){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
default:
}
if (obj.type == undefined){
var blnchecked = false;
for (var j = 0; j < obj.length; j++){
if (obj[j].checked){
blnchecked = true;
}
}
}
}
}
if (alertMsg.length == l_Msg){
return true;
}else{
document.getElementById("error").innerHTML="All Fields Must be Filled out";
return false;
}
}
// -->
</script>
</body>
</html>
我在Joomla基金会中使用它。这是几个脚本拼凑在一起,至少可以像它一样工作。 如上所述,缺少最后一步 - 使用cookie进行正确的重定向,这样用户只能获得一次年龄验证,无论输入页面是什么,它都会出现。 这是一个vaping网站,他们要求年龄验证。
我在本地使用WAMP作为开发依据。
由于 托马斯
答案 0 :(得分:0)
尝试更改您的PHP代码:
if (!isset($_COOKIE['Visited'])) {
为:
if (!isset($_COOKIE['verified'])) {
或:
if($_SESSION['verified'] != "yes"){
答案 1 :(得分:0)
<?php
@session_start();
$showform = false;
//created my own date function
function age($dob){
$date1 = new DateTime(date("Y-m-d", strtotime($dob)));
$date2 = new DateTime(date("Y-m-d"));
$interval = $date1->diff($date2);
return $interval->y;
}
//if a form is submitted do the following
if(array_key_exists("submit", $_POST)){
$m = $_POST["month"];
$d = $_POST["day"];
$y = $_POST["year"];
$age = age($y."-".$m."-".$d);
//check age here
if($age > 17){
//set cookie here and redirect here if you want
setcookie('visitedherebefore', 'Cookies seems legit', time() + 3600);
die("Old enough... nuff said...");
}else{
//redirect here as well
die("Too Young Sorry! you will now be redirected");
}
}
//check if user has been here before, redirect here as well if you want
if (isset($_COOKIE['visitedherebefore'])) {
print "welcome back!";
die();
}
&GT;
<form action="index.php" method="post">
<input type="text" tabindex="1" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="month" name="month" maxlength="2" size="2" required="required" value="MM" onfocus="value=''" />
<input type="text" tabindex="2" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="day" name="day" maxlength="2" size="2" required="required" value="DD" onfocus="value=''" />
<input type="text" tabindex="3" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="year" name="year" maxlength="4" size="4" required="required" value="YYYY" onfocus="value=''" />
<br />
<input type="submit" value="Enter Superior Vaping" id="submit" name="submit" />
</form>
答案 2 :(得分:0)
令我惊讶的是,我做了以下工作。我不认为我在编码方面更好,只是更勤奋,不愿意放弃。 这是我的决心: 记住,我正在做一个Joomla!平台,因此index.php是站点中每个页面的基础页面。因此,要开始验证,无论访问者使用哪个页面进入,初始代码都必须进入模板/?template-name?/index.php
<?php
if(!isset($_COOKIE['legal'])) {
header("Location: verifyage.php");
}
if($_COOKIE['legal'] == "no")
{
header("Location: http://www.google.com/");
}
&GT;
然后,在verifyage.php中,我使用了以下内容:
<?php
/*if the cookie already exists from a previous remember me button click then skip this page*/
error_reporting(E_ALL ^ E_NOTICE); //I don't know if that's right, but it works to keep the 1 error off the page - not by fixing, but hiding the error of legal not defined
if($_COOKIE['legal'] == "yes")
{
header("Location: index.php");
}
if (isset($_POST['checkage']))
{
$day = '';
$month = '';
$year = '';
$minage = '18';
if(isset($_POST['day']))
{
$day = $_POST['day'];
}
if(isset($_POST['month']))
{
$month = $_POST['month'];
}
if(isset($_POST['year']))
{
$year = $_POST['year'];
}
$birthstamp = mktime(0, 0, 0, $month, $day, $year);
$diff = time() - $birthstamp;
$age_years = floor($diff / 31556926);
if($age_years >= $minage)
{
if($rembox=="yes")
{
setcookie('legal', 'yes', time() + 31556926);
}
else{
setcookie('legal', 'yes', 0);
}
$url = 'index.php';
}
else
{
setcookie('legal', 'no', 0);
$url = 'http://www.google.com/';
}
header('Location: '.$url.'');
}
&GT;
在同一页面中,我添加了以下HTML,它提供了灯箱效果,并为输入创建了字段:
<html>
<head>
<title>Age Verification</title>
<script language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
//-->
</script>
<script type="text/javascript">
function jumpField(elmnt,content)
{
if (content.length==elmnt.maxLength)
{
next=elmnt.tabIndex
if (next<document.forms[0].elements.length)
{
document.forms[0].elements[next].focus()
}
}
}
</script>
<script src="http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js"></script>
<script src="js/fade.js" type="text/javascript"></script>
<link href="js/ageverify.css" type="text/css" rel="stylesheet" />
</head>
<body id="body" OnLoad="document.ageVerifyForm.month.focus();">
<img src="images/logoVerify.png" alt="Superior Vaping" id="logoVerify" /><br />
<p id="welcome">Welcome! Please enter your date of birth.</p>
<form id="ageVerifyForm" name="ageVerifyForm" action="" method="POST" onsubmit="return formCheck(this);">
<input type="text" tabindex="1" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="month" name="month" maxlength="2" size="2" required="required" value="MM" onfocus="value=''" />
<input type="text" tabindex="2" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="day" name="day" maxlength="2" size="2" required="required" value="DD" onfocus="value=''" />
<input type="text" tabindex="3" onkeypress="return isNumberKey(event)" onkeyup="jumpField(this,this.value)" id="year" name="year" maxlength="4" size="4" required="required" value="YYYY" onfocus="value=''" />
<br />
<input type="submit" value="Verify Your Entry" id="submit" name="checkage" />
</form>
<script language="JavaScript">
<!--
function formCheck(formobj){
// Enter name of mandatory fields
var fieldRequired = Array("month", "day", "year");
// Enter field description to appear in the dialog box
var fieldDescription = Array("month", "day", "year");
// dialog message
var alertMsg = "Please complete the following fields:\n";
var l_Msg = alertMsg.length;
for (var i = 0; i < fieldRequired.length; i++){
var obj = formobj.elements[fieldRequired[i]];
if (obj){
switch(obj.type){
case "select-one":
if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "select-multiple":
if (obj.selectedIndex == -1){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "text":
case "textarea":
if (obj.value == "" || obj.value == null){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
default:
}
if (obj.type == undefined){
var blnchecked = false;
for (var j = 0; j < obj.length; j++){
if (obj[j].checked){
blnchecked = true;
}
}
}
}
}
if (alertMsg.length == l_Msg){
return true;
}else{
document.getElementById("error").innerHTML="All Fields Must be Filled out";
return false;
}
}
// -->
</script>
<p id="error"></p><br />
</body>
</html>
当我在这里发布代码时,我可以看到'可能'会有一些不必要的代码或行。但我可以说它工作得很好,我已经将代码实现到了实时网站。 如果有人认为有一些“不要那样”或“我不会......”,请随意加入,因为我并不是自称是专家。一个月前,我只对我所寻求的东西发表决心。我很确定可以删除Onload。 我感谢Relentless提供的所有帮助。我希望发布这个对他人有价值。如果您有疑问或想告诉我,我做了一些不可原谅的事情,我愿意提供所有信息。感谢。