0

スプラッシュ(年齢確認)ページからホームページにリダイレクトしようとしていますが、同じ年齢確認ページが表示され続けます。

ルートフォルダにageVerify.phpスクリプトがあり、テンプレートファイルページの上部に他のスクリプトがあります。誰かが「yesi'm18」を押した後にリダイレクトするための正しいファイル構造形式を見つける必要があります

以下のコードは、column1.phtmlファイルの先頭に追加すると機能しません。単に戻って、verify.phpスクリプトを呼び出し続けます。どんなアイデアもとても役に立ちます!

<?php

function verified()
{
    $redirect_url='http://www.johnsoncreeksmokejuice.com.vhost.zerolag.com/verify.php';
    $expires=-1;
    session_start();

    $validated=false; 

    if (!empty($_COOKIE["verified"])) {
        $validated=true;
    }
    if (!$validated && isset($_SESSION['verified'])) {
        $validated=true;
    }
    if (is_numeric($expires) && $expires==-1 && !isset($_SESSION['verified'])) {
        $validated=false;
    }
    if ($validated) {
        return;
    }
    else {
        $redirect_url=$redirect_url."?return=index.php&x=".$expires;
        Header('Location: '.$redirect_url);
        exit(0);
    }
}

verified();
?>
4

2 に答える 2

1

$ _SESSIONが設定されていない場合、常にこれを評価します

  if (is_numeric($expires) && $expires==-1 && !isset($_SESSION['verified'])) {
        $validated=false;
    }

修正するだけで動作するはずです。他のすべてがうまくいくと仮定して、私は置き換えます

if (!empty($_COOKIE["verified"])) {
        $validated=true;
    }
    if (!$validated && isset($_SESSION['verified'])) {
        $validated=true;
    }
    if (is_numeric($expires) && $expires==-1 && !isset($_SESSION['verified'])) {
        $validated=false;
    }

に:

if ( (isset($_COOKIE["verified"] && !empty($_COOKIE["verified"])) OR isset($_SESSION['verified']) ) {
    $validated=true;
}

したがって、ユーザーが空でない「検証済み」Cookieまたは「検証済み」セッションセットを持っている場合、ユーザーは検証済みであると見なされます。

于 2012-10-01T19:26:03.160 に答える
0

javascriptの代替を使用することを選択しました。私にとってはるかに簡単に解決しました:

function writeCookie(key,value,days) {
    if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = key+"="+value+expires+"; path=/";
}

function readCookie(key) {
    var nameEQ = key + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}


function ageGate() {
    var monthDays = {
        1: 31,
        2: 29,
        3: 31,
        4: 30,
        5: 31,
        6: 30,
        7: 31,
        8: 31,
        9: 30,
        10: 31,
        11: 30,
        12: 31
    };

    var months = {
        1: 'January',
        2: 'February',
        3: 'March',
        4: 'April',
        5: 'May',
        6: 'June',
        7: 'July',
        8: 'August',
        9: 'September',
        10: 'October',
        11: 'November',
        12: 'December'
    };

    var monthOptions = [];
    var dayOptions = {};
    var yearOptions = [];

    for (var month in monthDays) {
        var days = monthDays[month];
        monthOptions.push('<option value="' + month + '">' + months[month] + '</option>');
        dayOptions[month] = [];
        for (var i=1; i <= days; i++) {
            var day = i;
            dayOptions[month].push('<option value="' + day + '">' + day + '</option>');
        }
    }

    var currentYear = new Date();
    currentYear = currentYear.getFullYear();

    var startYear = currentYear - 120;

    for (var y=currentYear; y > startYear; y--) {
        yearOptions.push('<option value="' + y + '">' + y + '</option>');
    }



    $s(document).ready(function(){
        var monthHtml = '';
        for (var j=0; j < monthOptions.length; j++) {
            var html = monthOptions[j];
            monthHtml += html;
        }

        $s('#ageMonth').html(monthHtml);

        var yearHtml = '';
        for (var i=0; i < yearOptions.length; i++) {
            yearHtml += yearOptions[i];
        }

        $s('#ageYear').html(yearHtml);

        $s('#ageMonth').bind('change', function(){
            var dayHtml = '';
            var month = $s(this).val();

            for (var i=0; i < dayOptions[month].length; i++) {
                dayHtml += dayOptions[month][i];
            }

            $s('#ageDay').html(dayHtml);
        });

        $s('#ageEnterSite').click(function(e){
            e.preventDefault();
            var date = new Date();
            date.setMonth($s('#ageMonth').val() - 1);
            date.setDate($s('#ageDay').val());
            date.setYear($s('#ageYear').val());

            var maxDate = new Date();
            // alert(maxDate.getFullYear());

            maxDate.setYear(maxDate.getFullYear() - 18);

            if (date <= maxDate) {
                writeCookie('jcsj_age_verified', '1', 30);
                $s('#age-gate').fadeOut(function(){
                    $s(this).remove();
                    $s('body').removeClass('age-gate-visible');
                });
            }
            else {
                window.location.href = 'http://google.com';
            }

        });

        $s('#ageMonth').change(); // load default month
        // $s('#ageDay').prop('disabled', true);
        setTimeout(function(){
            $s('body').addClass('age-gate-visible');
            $s('#age-gate').fadeIn();
        }, 200);
    });
}

if (readCookie('jcsj_age_verified')) {

} else {
    ageGate();
}

</script>
于 2012-11-21T15:20:08.150 に答える