2

試行錯誤しながら何度も検索したところ、困惑しました。リダイレクトによって実際のサイトにアクセスできないというコードの何が問題になっていますか?メインサイトまたは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を使用して正しいリダイレクトを取得することで、ユーザーは年齢確認を1回だけ取得し、エントリのページに関係なく表示されます。これはvapingサイト用であり、年齢確認が義務付けられています。

私はこれを開発の場としてWAMPを使用してローカルで行っています。

ありがとうトーマス

4

3 に答える 3

0

KIは問題を発見しました。$_COOKIE ["Visited"]は使用できないようです。これは何かのシステム標準のようである必要があるため、別の何かに変更する必要があります。これが私がそれを機能させる方法です:

<?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();
}

?>

<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>
于 2012-11-27T21:42:36.203 に答える
0

驚いたことに、次のような作品を作ることができました。私はコーディングが上手だったとは思いません。もっと勤勉で諦めたくないだけです。これが私の決意です:覚えておいてください、私はJoomlaに取り組んでいます!プラットフォームであるため、index.phpはサイト内のすべてのページの基盤ページです。したがって、訪問者がエントリに使用するページに関係なく検証を開始するには、最初のコードをtemplates /?template-name?/index.phpに入力する必要があります。

<?php   
    if(!isset($_COOKIE['legal'])) {         
    header("Location: verifyage.php");   
    }

    if($_COOKIE['legal'] == "no")
                    {
                    header("Location: http://www.google.com/");  
                    }  

?>

次に、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.'');
    }

?>

同じページに、ライトボックス効果を提供し、入力用のフィールドを作成する次の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>

ここにコードを投稿すると、不要なコードや行があることがわかりました。しかし、それは非常にうまく機能したので、私はすでにコードをライブサイトに実装していると言えます。誰かが「そうしないでください」または「私はそうしないでしょう...」があると思うなら、私は専門家であると主張していないので、遠慮なくチャイムを鳴らしてください。私が求めていたものに対する決議を投稿しているだけです-1か月前。オンロードを削除できると確信しています。Relentlessが提供してくれたすべての助けに感謝します。これを投稿することが他の人にとって価値があることを願っています。ご不明な点がある場合や、許されないことをしたことをお伝えしたい場合は、すべての情報を提供させていただきます。ありがとう。

于 2012-11-28T00:54:04.697 に答える
0

PHPコードを次から変更してみてください:

if (!isset($_COOKIE['Visited'])) {

に:

if (!isset($_COOKIE['verified'])) {

また:

if($_SESSION['verified'] != "yes"){
于 2012-11-05T19:44:19.443 に答える