- ベストアンサー
PHPでhome以外のページのアクセス制限
- PHPを使用して、ユーザーがhome以外のページにアクセスできないようにする方法について教えてください。
- index.phpファイルにはheader.phpとfooter.phpがあり、ユーザーがログインしていない場合には、ユーザーがhome以外のページにアクセスできないようにしたいです。
- しかし、この設計では「unexpected $end」というエラーが発生してしまいます。index.phpを直接開くと、header.phpとfooter.phpが正しくまとめられないためです。どのように解決すればいいでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
if ( ログインしていない ) { header( 'location index.php?error' ); } 自分の場合はこうしています。
その他の回答 (4)
- kosukejlampnet
- ベストアンサー率44% (126/282)
ですからー 中略になっている部分に文法エラーがあると、エラーになるって言うことでしょう?
お礼
いつもお返事いただいてありがとうございます。 header.phpをコメントにすれば、エラーがなくなるから、その中略の部分がエラーの原因ではないそうです。ですが、単独でheader.phpを使う訳でもないのに、どうしてheader.phpファイル自体でその括弧を閉じなければエラーになるのは、本当にミステリー...
補足
追加: header.php / index.php /footer.php の内容をすべてコピーして単一のファイルに入れるとエラーがなくなるので、問題の原因は文法エラーではなくて、他にあるんじゃないかと思います。もしこのようにindex.php(中略の部分)を括弧に入れられないのなら、どうやってアクセスを制限できるのか別の方法を教えていただいたら助かります。
- kosukejlampnet
- ベストアンサー率44% (126/282)
それなら書かれている部分以外の部分でしょう? 単純な文法エラーなのですから。
お礼
header.phpの終りに }} ?>のように記述すればエラーがなくなりますが、その //....(中略) という部分はif文の対象にはなりません。その部分をif文の括弧の間に入れたいのです。異なる3つだからそういうエラーになるかな?
- kosukejlampnet
- ベストアンサー率44% (126/282)
footerにある’}’がひとつ多い。
お礼
回答狩りが問うございます。’}’を一つ抜いても動作しません。 けど二つで合ってるんじゃない? ひとつめはelse{を閉じて、二つ目は親ifであるif(!isset($_SESSION['app']['username']) || $_SESSION['app']['username']==''){を閉じます。 何が問題なのかな
- kosukejlampnet
- ベストアンサー率44% (126/282)
ただの文法エラーです。 else 以降の括弧が閉じられていません。
お礼
ご回答ありがとうございます。 header.phpファイルの終わりに括弧を閉じればエラーを表示しませんが コード(index.php) require('header.php'); //....(中略) require('footer.php); の「中略」の部分を括弧に入れたいのでheader.phpで閉じたくなくて、footer.phpで、header.phpが開いた括弧を閉じたいのです。つもり、if文の条件が満たされるなら、「中略」の部分を表示します。そうでなければ表示しません。 ほかに方法がないでしょうか?
お礼
ありがとうございます。参考になりました。今後とも宜しくお願いします。