1

私は jQuery の旅を始めたばかりですが、いくつかの基本的なトピックを理解するのにまだ苦労しているため、いくつかのことを試すために、ほんの数行の PHP で簡単なスクリプトを作成することにしました。私はメインページを持っています:

<?php session_start(); ?>
<!DOCTYPE html>
<html>
    <head>
        <title> TEST </title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


    </head>
    <body>


        <a  href = "http://www.abv.bg/" class="isLogged">abv.bg</a>
        <br />
        <hr />
        <a  href = "http://www.yahoo.com/" class="isLogged">Yahoo!</a>
        <br />
        <hr />
        <a href = "http://www.southparkstudios.com/" class="isLogged">South Park</a>
        <br />
        <hr />
        <a  href = "http://www.youtube.com/" class="isLogged">Youtube</a>
        <br />
        <hr />
        <a  href = "http://www.vbox7.com/" class="isLogged">Vbox</a>
        <br />
        <hr />
        <a  href = "http://www.sa.dir.bg/" class="isLogged">Dir.BG</a>
        <br />

        <div class="isLogged"> hi<div>

                <script type="text/javascript">
                    $(document).ready(function(){
                        var Status = <?php echo $_SESSION['isLogged'] ?>
                        $('.isLogged').click(function(){
                            if(Status!=true){
                                var Check = prompt('Enter Password', '');
                                $.post('check.php', {Check:Check}, function(data) {  var result = data;
                                    alert(result); exit;
                                });

                            }


                        });


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

重要な部分はタグにあります。ご覧のとおり、ユーザーがパスワードを入力したかどうかを非常に簡単に確認し、入力した場合は class="isLogged" のリンクを開かせるようにしたいと思います。私が理解するのに苦労しているのは、私のphpサイドスクリプトを管理する方法です.これが私が今持っているものです:

<?php session_start();
$data = $_POST['Check'];
$yes = "[{data}]";
$no = 'N';
if ($data != 'Ivan')
{

echo json_encode($yes);
}
else
{

$_SESSION['isLogged'] = true;
}
?>

しかし、PHP 側でデータをフォーマットする方法がわからないので、スクリプトで適切なチェックを行うことができます。ただし、少なくともそこまで到達したecho json_encode($yes);ので、それを使用してチェックを行いますが、リンクが読み込まれないようにする方法がわかりません。そのため、多くの質問が出されますが、正しい答えを得るのがそれほど難しくないことを願っています.

ありがとう

レロン

4

1 に答える 1

1

このようにできます。これがあなたがやろうとしていることだと思います.ユーザーがクリックされたリンクに進むことを許可する前に、正しいパスワードを確認してください.

<script type="text/javascript">
    $(document).ready(function(){

        var Status = <?php echo (bool)$_SESSION['isLogged']; ?>

        $('.isLogged').click(function(){

            if(!Status)
            {
                var Check = prompt('Enter Password', '');
                var Success = false;

                $.post('check.php', {Check:Check}, function(data) {

                    var response = $.parseJSON(data);

                    if(response.result)
                    {
                        Success = true;
                    }
                });

                /*
                    If you return false in a .click() it stops the link being visited. The browser won't follow the href.
                    So here, if the password was wrong, Success will be false and thus the link won't be visited
                */
                return Success;
            }

        });

    }); 
</script>

PHP側:

<?php
    session_start();

    $out = array('result' => false);

    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        $password = 'Ivan';
        $input = $_POST['Check'];

        if(strcmp($input, $password) === 0) // case sensitive string comparison,  0 = strings are same
        {
            $_SESSION['isLogged'] = true;
            $out['result'] = true;
        }
    }

    echo json_encode($out);

?>

免責事項: これは実際のシステムではなく学習課題であることに感謝します。これは明らかにコンテンツを保護する安全な方法ではありません。ユーザーがリンクを閲覧したり、javascript を無効にしたりするのを止めることはできないからです。

于 2012-04-05T19:09:52.803 に答える