0

私は、ユーザーがWebサイトに問題を投稿でき、会社の管理者が問題を表示して解決策を提供できる人のためのサイトを開発しています。ログイン処理とmysqlデータベースを処理する1つのページを使用します。問題は、ログインできることです。別のパネル(userpanel)が表示されますが、他のボタンをクリックすると、ログインパネルに戻ります。以前は、データベースにデータを投稿できたので機能していました。しかし、私のWebサイトでいくつかの変更を行った後、突然機能しなくなりました(そして、問題を見つけることができなくなりました)。

ログインすると、$ _ SESSION ["LoggedIn"]は値を取得し、httppostと同じページの他のパネルに移動します。そこでボタンをクリックすると、ユーザーがログインしているかどうかをissetで確認し、そうでない場合はユーザーパネルが表示されるため、$ _SESSION["LoggedIn"]が再び削除されたようです。

//check user logged in
if (isset($_SESSION['LoggedIn'])) {

//Problem posted
if (isset($_POST["plaatsen"])) {
    //Processing - plaatsen
    postProblem();
    }
} else {
//do login thing

}

ここにコードを添付しました。誰かが私を助けてくれることを願っています。

Index.php: http: //pastebin.com/BZSirUTT

Functions.php: http: //pastebin.com/7Hknhm9r

ウェブサイト:http://php.olvgroeninge.be/~sac.26A-07/php/Oefeningen/Oefening3/index.php(オランダ語)

4

1 に答える 1

4

通常、セッションは自然に消えることはありません。session_start()実行した場合、最初に実行したと仮定すると、次のことが原因である可能性があります。

  1. セッションをサーバーに保存できませんでした。これは、ディスク容量または許可の問題が原因である可能性があります。また、ステートメントの前のページ出力が原因である可能性もあります。session_start()幸いなことに、これは、スクリプトの開始時にエラー報告を強化することで確認できます。

    ini_set('display_errors', 'On'); error_reporting(-1);

  2. セッションが見つかりませんでした。セッションを永続化するには、リクエストごとにセッション ID が必要です。設定に応じて、これは URL ( PHPSESSID=xxx) または Cookie から取得されます。後者の場合、ブラウザの開発者ツールを起動することで、ブラウザが Cookie を送信していることを確認できます。

  3. セッションを自分で破棄しました。session_unsetorを呼び出すsession_destroyと、それぞれセッションがクリアおよび削除されます。これが誤って起こらないようにしてください。

  4. セッションはガベージ コレクションされます。これは通常、関連する ini 設定を使用して構成された、非アクティブな状態がしばらく続いた後にのみ発生します。

  5. セッションを読み取れませんでした。#1と同じですが、読書用です。

これらのポイントの少なくとも 1 つが役立つことを願っています。


セッションのデバッグ

次のコードをすべてのページに追加して、問題を切り分けることができます。

echo '<pre>', htmlspecialchars(print_r($_COOKIE, true)), '</pre>';
session_start();
echo '<pre>Session = ', session_id(), '</pre>';

更新 問題は、index.phpが Cookie を設定しないことです。OPは、Cookieを設定する別の小さなテストページを作成しました. 問題は#2であることがわかりました:)

于 2012-06-10T15:41:42.030 に答える