2012-04-05 84 views
1

我在jQuery jouerny的开端,我仍然很难理解一些基本的主题,所以我决定用几行PH​​P来做一个简单的脚本来尝试一些事情。我有一个主页:终止jquery的进一步执行

<?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”的链接,如果他是。我有什么困难时期understan是如何管理我的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

你可以不喜欢这样。我认为这是你要做的事情:在允许用户进入被点击的链接之前检查正确的密码。

<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。

+0

谢谢,你的想法是对的。而且我明白这不适合公共目的,但它是一个相当简单的例子,它同时具有很多jquery基础知识。至少它是给我的。然而,当我点击某事你的代码时,提示框不会出现:( – Leron 2012-04-05 19:23:40

+0

)对不起,我的坏,以前的见证仍然活着。它完美无瑕,完全符合我的需要,仔细查看你的代码。寻求帮助! – Leron 2012-04-05 19:30:16