0

私のプロジェクトは2つのhtmlページで構成されています:

  1. index.htmlログインと登録フォームが含まれています。
  2. user_logged.html、ログインしたユーザーのすべての機能が含まれています。

ここで、ユーザーが実際にログインしているかどうかを制御して、ユーザーがブラウザーに URL を貼り付けて別のユーザーのページを表示できるようにすることを回避します。ユーザーがこの URL をブラウザに貼り付けた場合:

 www.user_loggato.html?user=x#profile

ユーザー x としてログインしているかのようであり、これは適切ではありません。

私の html ページは両方とも、スクリプトを含む js ファイルを使用しています。私は、logged inizialized to false というグローバル変数を作成し、ログインが成功したときに変数を true に変更することにしました。

問題は、変数が false のままであることです。

コードは次のとおりです。

 var logged=false; (write in the file a.js)

私が持っているファイルb.jsの中に:

 function login() {

 //if succesfull
        logged=true;
       window.location.href = "user_loggato.html?user="+ JSON.parse(str).username + #profilo";

いくつかのアラートで、ログに記録された変数が常に false であることがわかりました。なんで?

4

2 に答える 2

2

Javascript はクライアント側で実行されるため、進むべき道ではありません。異なるリクエスト間で JavaScript 変数を共有する方法があったとしても、ユーザーはそれらを操作できました。

これにはサーバー側の手法を使用する必要があります (セッションを使用する PHP など)。

于 2012-12-09T11:09:43.727 に答える
0

JS 変数は、送信/更新のたびにリセットされます。この目的のために、sessionStorage または Cookie を使用できます。例えば:

これをログインフォームに入れます:

function login() {
    window.sessionStorage[logged] = true;
   window.location.href = "user_loggato.html?user="+ JSON.parse(str).username + #profilo";
}

user_loggato.html では、次のように取得できます。

function getLoginStatus() {
    return window.sessionStorage['logged'];
}

お役に立てれば。

于 2012-12-09T11:13:31.353 に答える