質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2091閲覧

ログイン状態時に上部メニューへ情報を表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2016/09/17 01:36

編集2016/09/17 14:24

###前提・実現したいこと
こんにちは、現在PHPの勉強をしているものです。
この度某ゲームの公式サイトを作るにあたって、いくつか不明な点が出てきたので、質問をさせていただいております。

今現在会員登録・ログインシステムを以下のサイトを全て参考にさせていただき、作成できました。
http://noumenon-th.net/programming/2016/02/26/registration/
http://noumenon-th.net/programming/2016/03/03/login/
これをログインしている状態でのみ、ヘッダーメニューの右側にアカウント情報が出るようにしたいです。
少し例えるなら、BINGのサイトがわかりやすいのかなと思います。
参考
このようにログインしている時だけ右側に自分のアカウント情報(登録名)が表示されているという形にしたいです。

###上部メニューのコード

PHP

1<nav class="navbar navbar-default navbar-fixed-top"> 2 <div class="container"> 3 <div class="navbar-header"> 4 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-2"> 5 <span class="sr-only">Toggle navigation</span> 6 <span class="icon-bar"></span> 7 <span class="icon-bar"></span> 8 <span class="icon-bar"></span> 9 </button> 10 <a class="navbar-brand" href="/"></a> 11 </div> 12 13 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-2"> 14 <ul class="nav navbar-nav"> 15 <li><a href="/rules"><i class="fa fa-book" aria-hidden="true"></i>&nbsp;ルール<span class="sr-only">(current)</span></a></li> 16 <li><a href="/login"><i class="fa fa-user-plus" aria-hidden="true"></i>&nbsp;ログイン</a></li> 17 <li><a href="/staff"><i class="fa fa-users" aria-hidden="true"></i>&nbsp;スタッフ</a></li> 18 <li><a href="/commands"><i class="fa fa-th-list" aria-hidden="true"></i>&nbsp;コマンド</a></li> 19 <li><a href="/donation"><i class="fa fa-google-wallet" aria-hidden="true"></i>&nbsp;寄付</a></li> 20 </ul> 21 <ul class="nav navbar-nav navbar-right"> 22 //ここにアカウント情報が表示されるようにしたい 23 </ul> 24 </div> 25 </div> 26</nav>

###試したこと
以下のようにコードを書いてみましたが、閲覧できなくなりました。

PHP

1 <span class="icon-bar"></span> 2 </button> 3 <a class="navbar-brand" href="/"></a> 4 </div> 5 6 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-2"> 7 <ul class="nav navbar-nav"> 8 <li><a href="/rules"><i class="fa fa-book" aria-hidden="true"></i>&nbsp;ルール<span class="sr-only">(current)</span></a></li> 9 <li><a href="/login"><i class="fa fa-user-plus" aria-hidden="true"></i>&nbsp;ログイン</a></li> 10 <li><a href="/staff"><i class="fa fa-users" aria-hidden="true"></i>&nbsp;スタッフ</a></li> 11 <li><a href="/commands"><i class="fa fa-th-list" aria-hidden="true"></i>&nbsp;コマンド</a></li> 12 <li><a href="/donation"><i class="fa fa-google-wallet" aria-hidden="true"></i>&nbsp;寄付</a></li> 13 </ul> 14 <ul class="nav navbar-nav navbar-right"> 15 16<?php 17session_start(); 18 19header("Content-type: text/html; charset=utf-8"); 20 21// ログイン状態のチェック 22if (!isset($_SESSION["account"])) { 23 header("Location: login_form.php"); 24 exit(); 25} 26$account = $_SESSION['account']; 27print ' 28 <li class="dropdown"> 29 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" ari 30a-expanded="false">'.htmlspecialchars($account,ENT_QUOTES).'<span class="caret"></span></a> 31 <ul class="dropdown-menu" role="menu"> 32 <li><a href="#">マイアカウントを編集</a></li> 33 <li><a href="#">ログアウトする</a></li> 34 </ul> 35 </li> 36'; 37?> 38 </ul> 39 </div> 40 </div> 41</nav>

参考

###補足情報
PHP Version 5.6.25
Bootstrap 3

上記の「試したこと」に書かれている私のコードは参考にしないでください...。
アカウント情報をどのようにしたら上部へ表示できるのかが分かりません。
もしよければコードを教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

とりあえず header関数の前にHTMLが出力されているのは問題です。

【PHP: header - Manual】
http://php.net/manual/ja/function.header.php

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。


また、勉強のためならともかく、一般公開を前提とした会員システムを作成されるならフレームワークやCMSを利用されるほうが安全で問題が起こりにくいと思います。

投稿2016/09/17 02:41

kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/17 03:09

header() 関数はすべての実際の出力前にコールするのですね。ありがとうございます。 http://noumenon-th.net/programming/2016/03/03/login/ の「login_admin.php(ログイン状態)」というものを参考にしてあやふやな状態で作っていたので、理解ができていなかったです...。 PHPは普通にサイトを作る程なら不便なく使えるのですが、登録システムやMysqlが関与するとまだまだ勉強不足だなと感じます。申し訳ないです。
kei344

2016/09/17 18:14

質問文に書いてあるコードが「login_form.php」だとしたら、ログインが出来ない状態で無限ループになりますが、対策はされましたか?また、session_start()もheader関数より前に実行する必要があるものなので、書かれている場所に有るのは問題です。 また、回答の後半への反応で書いたとおり、登録システムを全て自分で作るのはハードルが高いのでお勧めしません。
guest

0

ログイン状態でなかった場合は、ログイン画面へのリンクを出すべきであって、リダイレクトしてはいけない気がします。

貼ってあるコード自体は、別に正常に動いたので、もしかしたらリダイレクト先のlogin_form.phpでエラーが起きているのかもしれません。

なお、以下のコードもいらないかも?

php

1header("Content-type: text/html; charset=utf-8");

投稿2016/09/17 02:37

編集2016/09/17 02:42
popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/17 02:47

なるほど。未ログイン時は「ログイン」と「新規登録」へのリンクを出すべきなのですね。 それを踏まえてコードを作成してみます。 作成したコードは追記にて載せさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問