0

異なる条件で異なる内容の異なる div を表示したい。

お客様がログインしている場合はコンテンツ A を表示、お客様がログインしていない場合はコンテンツ B を表示、

これは私が持っているスクリプトですが、正しいかどうかはわかりません。

<?php if (!$logged) {


$disp_div=1;

} else { 

$disp_div=0;

} ?>

これはJクエリです

<script type="text/javascript" >
$(document).ready(function(){

var show=<?php echo $disp_div; ?>

 if(show==1)
 {
    $('#div_logged_in').show();
    $('#div_not_logged_in').hide();

 }
else if(show==0)
 {
    $('#div_logged_in').hide();
    $('#div_not_logged_in').show();
     }
 });

これはHTMLです

<div id="div_logged_in">
Content A
</div>

<div id="div_not_logged_in">
Content B
</div>
4

5 に答える 5

6

A:なぜ!$ loggedが間違っているのですか?

ローカル変数を使用します。次回ユーザーがページを更新すると、ユーザーはログインしなくなります。そのために、$_SESSIONという配列に変数を格納できます。この配列は、Webサーバー上のクライアントセッション用に保存されます。ユーザーがそこにいる限り、それは常に同じままです(あなたがそれを変更するまで)。そのためには、session_start();が必要です。メインのPHPスクリプトの最初の行にあります。

B:javascriptの部分がセキュリティリークである理由:

あなたのウェブサイトは、ユーザーに送信されるコンテンツをフィルタリングしないように設計されています。すべてのユーザーがコンテンツ全体を取得し、可視性だけが変更されます。このようにして、すべての上級ユーザーはコードを調べて、隠したいすべての秘密を確認できます。

C:正しい方法は何ですか?

これは、JavascriptなしでHTMLをエコーし​​、$_SESSIONを使用するPHPの一部です。

<?php
    if($_SESSION["loggedIn"] == "yes") { //You have to set that somewhere else just like $logged
    ?>
        <p> You ARE logged in. </p>
    <?php } else { ?>
        <p> You ARE NOT logged in. </p>
    <?php
    }
?>
于 2013-01-29T07:58:16.867 に答える
1

が何かわかりません$logged。ユーザーがログインしているかどうかを調べる変数である場合、条件は要件の正反対です。div_logged_inユーザーがこの状態からログインしていないときに表示されます。

if(show==1)
 {
    $('#div_logged_in').show();
    $('#div_not_logged_in').hide();

 }

$loggedが falseの場合、show の値は 1 になります。したがって、条件を変更すると、それを取得できます。このシナリオでは、 SESSIONSを使用することをお勧めします。どこでも使用して、ユーザーがログインしているかどうかを確認できます。

于 2013-01-29T07:52:12.270 に答える
0

まず、セッションと $_SESSION スーパーグローバルについて読み始める必要があります。

その後、そのスクリプトを捨てて、適切なチュートリアルを探してください。ここで非常に優れたチュートリアルを見つけました: http://net.tutsplus.com/tutorials/php/a-better-login-system/ ACL について説明しているため、少し高度ですが、これはおそらく必要ないでしょう。

ただし、チュートリアルの残りの部分を試して理解できれば、問題ありません。幸運を!

于 2013-01-29T07:51:03.707 に答える
0

使用する if($_SESSION["username"])

login.php ファイルで設定し、logout.php で session_destroy() を使用して破棄できます。

于 2013-01-29T15:55:23.107 に答える
0

アプリケーション内のセキュリティ フローであるため、クライアント側の検証に依存しないでください。顧客がページのソース コードを表示した場合はどうでしょうか。その後、隠しコンテンツが表示されます。

あなたのアプローチは正しいですが、 $_SESSION または $_COOKIE not if (!$logged) を使用する必要があり、私が言ったように、コンテンツを完全に出力しないでください。

于 2013-01-29T07:53:40.847 に答える