2012-04-05 12 views
1

私はjQuery jouernyの初めですが、まだいくつかの基本的なトピックを理解するのは難しい時がありますので、いくつかの行を試すためにPHPの数行で簡単なスクリプトを作成することにしました。私はメインページを持っています: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の基礎を持つかなり単純な例です。少なくともそれは私のためです。しかし、私はあなたのコードをusgininをクリックすると、プロンプトボックスが表示されません:( – Leron

+0

申し訳ありません、私の悪い、前のセーシェルはまだ生きていた。助けを求めて!!!! – Leron

関連する問題