终止进一步执行jquery

时间:2012-04-05 18:24:46

标签: php jquery ajax

我正处于jQuery jouerny的开头,我仍然很难理解一些基本主题,因此我决定使用几行PH​​P编写一个简单的脚本来尝试一些事情。我有一个主页:

<?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);那么远,所以我用它来进行检查,但是,我仍然无法找到如何防止链接加载。   所以它提出了很多问题,但希望得到正确答案并不难。

感谢

Leron

1 个答案:

答案 0 :(得分: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