1

この件についてはあまりにも多くの質問がありましたが、私はまだ理解できていません。

場合:

  1. ハイパーリンクされた画像
  2. 画像のクリック時: セッションが存在するかどうかを確認します
  3. セッションが存在する場合、リンクを開く
  4. セッションが存在しない場合は、ログイン フォームを表示します

onclickJavaScript 関数を呼び出しています:

var my_global_link = '';
var check = '<?php echo $_SESSION["logged_in"]; ?>';

function show_login( link ) {

     if(check == 1)
     {
         window.location = link;
     }
     else
     {
         my_global_link = link;  
            // .. then show login modal that uses 'js/whitepaper-login.js'
            document.getElementById('light').style.display='block';
            document.getElementById('fade').style.display='block';
            document.getElementById('fade').scrollIntoView(true); 
     }

}

グローバル変数は別のphpファイルに次のように保存されています:

$_SESSION['logged_in'] = 1;

でセッション値を取得できませんvar check。アドバイスできますか?

4

5 に答える 5

2

$_SESSIONここでの jQuery の使用は、PHPを JavaScript に組み込む方法の簡単な例です。

session.php

<?php
    session_start();
    $_SESSION['foo'] = 'foo';
    echo $_SESSION['foo']; // this will be echoed when the AJAX request comes in
?>

get_session.html (jQuery が含まれていることを前提としています)

<script>
    $(function() {
        $('a').click(function(event){ // use instead of onclick()
            event.preventDefault(); // prevents the default click action

            // we don't need complex AJAX because we're just getting some data
            $.get('session.php', function(sessionData) {
                console.log( sessionData ); // session data will be 'foo'
            });
        });
    });
</script>

<a href="session.php">click</a>

これが成功すると、データが表示され、データを適切に渡すことで他の JavaScript 関数で使用できます。JavaScript で使用するために JSON を返してデータをセッションするのは便利だと思うことがよくありますjson_encode()が、このような単純な例ではその必要はありません。

于 2015-02-11T14:05:26.347 に答える
1

誰かにリクエストする file.php

$( document ).ready(function(){//run when DOM is loaded
  $.post("file.php",  //make request method POST to file.php
     function(data){  //callback of request is data
      var arr = jQuery.parseJSON(data); //make json decoding
      if(arr.logged == 1)   //arr.logged is value needs
       #do 
     })
 })

file.php

<?php
 session_start(); //start session for my dear friend Jay Blanchard
 $_SESSION['logged_id'] = 1; //init value for example
 $array = array('logged' => $_SESSION['logged_id']);//creat array for encoding
 echo json_encode($array); //make json encoding for call back
?>
于 2015-02-11T13:39:44.727 に答える
0

JavaScript は簡単にハッキングされる可能性があるため、あまり良い解決策ではありません。の値をcheck好きなように変更するだけで、ログインしなくても画像のリンクにアクセスできます。

より良い実装は、おそらく次のようになります。

<a href="checklogin.php"><img src="img.png" alt="" /></a>

その後、checklogin.php は$_SESSION変数を検証します。検証header("Location: something.html");された場合は、ユーザーを誘導したい場所にリダイレクトするために使用できます。ログインしていない場合は、代わりにログイン ページにリダイレクトできます。header("Location: login.php");

于 2015-02-11T13:36:25.000 に答える