質問: よろしくお願いいたします。 ユーザー認証コードの位置について質問させてください。 先日、以下のような質問をこちらのサイトで行いました。 「認証確認のコードを置いたが、文字化けが生じるので、その原因と解決の助言をお願いします。」 認証コードは次のように設定しておりました。 ``` php session_start(); session_regenerate_id(true); if(isset($_SESSION['login']==false) { print 'ログインされていません。'; print''; exit(); } else { print$_SESSION['staff_name']; print'さんログイン中'; print''; } ?> ``` それに対する回答として、の前に「print」の出力コードがあるため、 文字化けが生じるとの助言をいただき、以下のように試しました。 まず、DOCTYPE以前に ``` ``` と置き、の直後に、以下のコードを置きました。 ``` '; print''; exit(); } else { print $staff_name; print'さんログイン中'; print''; } ?> ``` この理解で文字化けは解消しましたが、常に「ログインされていません」が 表示されるようになりました。こちらの原因と解決を教えていただきたい次第です。 以上、何卒よろしくお願いいたします。
回答: isset関数は、引数に指定された変数(配列変数の要素であれば、その配列の要素)自体が定義されており、かつ中身が NULL でない場合にTRUEを返すものです。$lognin変数が定義されていなければ、FALSEを返します。 ``` if(isset($_SESSION['login']) == false){ // ログインしていない場合 } else { // ログインされている場合 } ``` もしくは ``` $lognin = isset($_SESSION['login']); if($login == false) { // ログインしていない場合 } else { // ログインされている場合 } ``` と記述すれば、うまくいくでしょう。