1

セッションを使用する必要があるPHPでアプリケーションを開発しています。私は3層アーキテクチャでアプリケーションを開発しました。

私は1つのPHPページとダミーフォームのみを使用してユーザーアクションを送信し、すべての処理はエンティティ/関数固有のクラスを介して行われます。

ページを最初に開いたときに変数を確認します。以前にページを開いたことがない場合は、ログインフォームを表示します。

このフォームから投稿を受け取ったら、ユーザーを確認し、ユーザーに問題がなければセッションを開始します

    if(isset($_POST['login']))
{
    if($_POST['login']=='login')
    {
        //valida user
        $accoes=$du->login($_POST['username'],$_POST['password']);
        if($accoes===false)
        {
            echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">";
            echo "alert('Erro no Login');";
            echo "</SCRIPT>";
            unset($accoes);
        }
        else
        {
            //utilizador valido
            echo "<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">";
            echo "alert('Utilizador válido');";
            echo "</SCRIPT>";
            session_start();
            $user="teste";
            $screen="logged";
            $_SESSION['user']=$user;
        }
    }
}

このページをユーザーアクションで更新すると、セッションIDもセッション変数も表示されません。

session_commitやその他の命令のようなものがありませんか?

セッション変数をチェックする前に、session_start()も表示する必要がありますか?

PHP.iniファイルに何か欠けているものでしょうか?

私が最初に行うことは、セッション変数のチェックです。

if(session_id() != '') {
    $user=$_SESSION['user'];
}

これを解決する方法を知っておく必要があることはわかっていますが、これまでPHPでの経験はFlex / Flashをスローしていたため、セッション管理は実際には必要ありませんでした。

助けてくれてありがとう

4

1 に答える 1

1

私が確かに指摘できることの1つ..あなたのsession_start()はphptahgを開いた後の最初の行でなければなりません

<?php
   session_start();

また、呼び出されるすべてのページで呼び出す必要があり$_SESSIONます。そうしないと、セッションに適切にアクセスできなくなります。

于 2013-03-25T16:40:35.903 に答える