2012-04-05 59 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