• 締切済み

未ログイン・ログイン済ページから次のページへ

商品Aのページから ログインしていたらBのページへ、 ログインしていなかったらCのページへ という風にしたいと思っています。 これは if を使ってやったら良いのでしょうか? それと、Bのページは商品Aの情報を表示して確認するページにしたいと思います。商品というのはこれからどんどん増えていくので、その商品ごとにページを作るのは大変なのでDBと連動させたいのですが、そういう方法があるでしょうか??

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

回答No.2

具体的な回答ではありませんが、参考URLを見ながらページの作り方を見直してみてはいかがですか? 参考URLにも書いていますが、「PHPでは、HTMLページ内に<?php ?>タグで括る事によって、 HTML(デザイン部分)とプログラム(ロジック部分)を同一ページに記述できます。しかし、同じファイル内にデザイン部分とロジック部分を記述するとメンテナンスが非常に困難となります。」とあります。 つまり、先にロジック部分で表示したい内容を確定し、その後、複数用意したデザイン部分へデータを渡せば実現できると思います。 テンプレートエンジンを導入するかどうかは開発規模などの要素が絡みますが、考え方自体は参考になると思います。

参考URL:
http://www.gadgety.net/shin/tips/unix/php-tmpl.html
s_used_c
質問者

補足

参考URLありがとうございます。しっかり読んでみます。 <先にロジック部分で表示したい内容を確定し、その後、複数用意したデザイン部分へデータを渡す というのはまずPHPで、「ログインしている場合」と「していない場合」のプログラムをかいて、 複数のHTMLページごとにそのプログラムを、ログインしていたらB、していなかったらC と呼び出すということでしょうか?

回答No.1

Q1:ログイン状態で表示ページは切替えられるか? A1: ログイン状態の管理・保持方法自体は理解されているとして、 遷移先を切替えるためには、大きく2通りの実現方法があると思います。 1.HTTPヘッダ「Location」で、別のページへリダイレクトさせるよう仕向ける。  http://www.studyinghttp.net/header#Location 2.HTML出力処理を切替えられるようにしておいて、ログイン状態で分岐させる。 Q2:商品ごとにページを作らず、DBを活用して共通化できないか? A2: 商品ごとに表示を変えないといけない部分をすべてDBへ入れておけば、 DBに問合せた内容を表示するページを作るだけってことにできますよ。

s_used_c
質問者

補足

早速のご回答ありがとうございます。 「Location」というのがいまいち理解できていないので、 2.HTML出力処理を切替えられるようにしておいて、ログイン状態で分岐させる。 こちらの方法でやりたいと思います。 すごく初歩的な質問だと思うのですが、「出力処理を切り替えられるように」とはどういうコードをかけばよいですか? そういうコードの載った参考になるURLがあれば教えてください。 DBの方は大体わかりました。ありがとうございます。

関連するQ&A

  • phpとmysqlでログインページの作成

    phpとmysqlを使いMAMPでログインページの作成をしようと考えています。 idやpasswordなどはもうsqlに格納されている状態を想定しています。 そこで手順を知りたいのですがこれであっているでしょうか? dbに接続してidやpasswordなどをdbから引っ張ってきて取得する。 if文でsql上のidなどとログインページに入力した情報があっているかで条件わけをする。 合っていなければエラーメッセージを返す。合っていれば次のメイン画面に飛ばす。 初歩的な質問で恥ずかしいのですがdbの情報を取得するときは「mysql_fetch_assoc」関数でいいのでしょうか。 また、ログインページのサンプルを調べているとCookie版とSession版がありますがこの違いはCookieが一定時間情報を保持するのに対してSessionはブラウザなどを閉じるとリセットという解釈で間違いないでしょうか。 文がぐちゃぐちゃで申し訳ないのですが、お暇な時にでも回答お願い致します。

    • 締切済み
    • PHP
  • 緊急 webのログイン処理の作り方

    ログインするただそれだけなら作れます。 DBも準備しましたし、確認はif文などでできるのですが、 ログインを維持しておく方法がわかりません。 どのように維持すればいいのでしょうか? クッキー処理を使いたいのですがpythonでの使用ほほうがまったく分からない状態です。 ブラウザを終了するまでで良いので情報を維持する方法を教えてください。

  • 管理者以外のユーアカウントでログインするとトップページが変更されてしまいます

    先ず、現在の状況です。 管理者のアカウントでログインした状態で、管理者以外のアカウントでログインします。 管理者以外のログイン画面上でブラウザ(IE7)を開くと、トップページのURLが変更されてしまいます。 わかりづらいかもしれません。平たく言います。 管理者=Aさん 管理者以外=Bさん とした場合、 Bさんはブラウザを立ち上げるときはGOOGLEがトップページに表示されるように、インターネットのプロパティの全般タグのホームページにGOOGLEのURLを指定しています。 Aさんのアカウントでログイン後、AさんはログインしたままでBさんがログインしてブラウザを立ち上げると、MSNのトップページが表示されるといった状態です。 設定通りにGOOGLEのトップページを表示したいのですが、対応方法がわかりません。対応方法を御教授願えないでしょうか? 試しに、逆のことをしても(PCを立ち上げ~Bさんのアカウントでログイン~Aさんのアカウントでログイン~Aさんのログイン画面上でブラウザ(IE7)を開く)、問題なく設定通りのURLが表示されます。

  • ログイン認証のページの流れ

    こんばんは。お世話になっております。 初歩的な質問かとは思いますが、これまでlocal上、およびあるレンタルサーバ上では問題のなかったものが、今回別のサーバーをお借りしたら、以下のような不具合が出てきてしまいまいました。 タイトルのようにログインに関するもので、ロープに陥ってると・・。 メインページ(ログイン済みのみ閲覧可能) index.php <?php session_start(); if(!isset($_SESSION["id"]){ header("Location: http://***.com/login/"); }   ・   ・ /login/index.php <?php session_start(); require_once("./auth.php"); //以下、ログインが必要なページは全てここのファイルを経過させ、元のページに戻るソースを記述。 if(isset($_GET["url"])){   ・   ・ /login/auth.php <?php //ログイン入力フォームおよびDB問合せスクリプト 以上のようなファイル構成なのですが、最上位のindex.phpを訪問した際、ログインしていなかったら http://***.com/login/ に移動し、ログイン画面を表示する・・という流れを想定しておしましたが、あるサーバでは以上のようなものだとループに陥ってしまうとの障害が確認出来ました。 ローカル上、別サーバでは問題ない(目視で確認出来る障害が無いという意味)ことだったので、流れを見直そうにも的が見えてきません。 相応しくない点、可笑しな点、どんな些細な事でも結構です。お忙しい中恐縮ですが、アドバイスいただけたら幸いです。宜しくお願い申し上げます。

    • 締切済み
    • PHP
  • 複数ページのセッションの送り方

    登録画面の作成にて a.php(基本情報入力ページ)→ b.php(基本情報の確認、次に進む)→ c.php(詳細情報入力ページ)→ d.php(a.phpの基本情報とc.phpの詳細情報の確認) としたいのですが、 d.phpにa.phpの情報を持っていくにはどうしたらいいでしょうか? //d.php <?php if (!isset($_SESSION['join'])){ die('stop'); header('Location: a.php); exit(); } if (!isset($_SESSION['join'])){ die('stop'); header('Location: c.php); exit(); } ?> c.phpの情報はきちんと送られてきていますが、a.phpの情報は送られてきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 変数を次のページに渡すCGI

    携帯サイトを作成しているのですが、 リンクのファイル名を変数にいれ次のページに渡すにはどうすればよいでしょうか? リンクA(a.html) リンクB(b.html) リンクC(c.html) ↓$h = a 変数にaを入れます。 次のページ(http://~~~~~/$h.html) 次のページを1つ作るだけで、その前のリンクを表示させたいんです。 説明がへたですいません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • teratermで多段ログインのコマンド

    質問者は質問内容をどう表現していいのかよくわかっていません。 社内のサーバAとBがあり、外部のwebサーバCがあるとします。teratermを用いてCのDBへファイルをアップロードしたり、BのCVSからファイルの更新を行いたいと思っています。しかし、それをAへログインして行うような感じなのです。どのようにしてAからCへアクセスして、またCVSがBにあることをCに教えて、ファイルの更新をしたらよいのでしょうか。 コマンドを覚えればいいのか、なんらかの環境変数の設定など、他にもやることがあるのか、さっぱりわかりません。 ローカルのPCはwindows2000でサーバはlinuxです。Aへのログインはできていて、Cのアカウントも作ってもらっているはずですが、どうやってアクセスしていいかわからないので確認できていません。 だれか助けてください。よろしくお願いします。

  • セッションを使ったログインページでのエラー

    前にもセッションを使ったログインページについて質問したものです。 上記の通りセッションを使ったログインページを作っております。 前回このソースを載せたときセキュリティー的にとても危険だというご意見をいただきました。何分まだ初心者ですのでどうかご了承ください。 ソース /*ログインのページは省略しました。ログイン後ID・パスワードが正しいか、そして訪問者がログインせずにこのページに直接アクセスした際にログインページにジャンプするようにするようにするプログラムです*/ <?PHP if (!isset($user) || !isset($pass)) { header( "Location: loginPage.php" ); } elseif (empty($user) || empty($pass)) { header( "Location: loginPage.php" ); } else { $user = addslashes($_POST['username']); $pass = md5($_POST['password']); $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "*****"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); if($rowCheck > 0){ while($row = mysql_fetch_array($result)){ session_start(); session_register('username'); echo 'Success!'; header( "Location: checkLogin.php" ); } } else { echo 'Incorrect login name or password. Please try again.'; } } ?> このようなプログラムを作ったのですが、ちゃんとパスワードをいれても、ちゃんと認証されずに、ログインのページ戻されてしまいます。 おそらく if (!isset($user) || !isset($pass)) { header( "Location: loginPage.php" ); } elseif (empty($user) || empty($pass)) { header( "Location: loginPage.php" ); } の部分がおかしいのかと思いますがどう変えたら良いのかよく分かりません。また、おかしいと思った部分を削除したら普通にログインはできるのですが、今度は一度ログインしても他のページに移動した後もう一度このページに行くと、もう一度ログインしないとアクセスできなくなりました。 まとめると、お聞きしたいことは、2つです。 (1)紹介したのプログラムでログインしてもちゃんとログインが認証されない。これを解消するにはどうすればいいのか? (2)ユーザーがログインした後もう一度このページにアクセスした場合もう一度ログインさせなくてもいいようにすればどうすればよいのか。 もし可能でしたら、解決するためのプログラムを(さらに可能でしたら紹介したプログラムを生かした形で)添えてアドバイスしていただけないでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ログイン用の専用ページを用意する理由

    ログイン手続きを伴うウェブサイトでは、よくあるデザインとして ページの左右にログイン者情報(アカウント名とか)を表示するものがありますが、 ログイン前の段階では、下記の2種類のデザインを見かけます。  (1)ログイン専用ページへのリンクだけがある  (2)ログインフォームが設置されていて、その場でログインできる 利便性だけを見れば(2)の方が良いように思いますが、(1)を採用するサイトも多いです。 これには技術面、セキュリティ面での理由があるのでしょうか。 ほんのいくつかのサイトを見ただけですが、ログイン専用ページのみhttpsにしているのも確認できました。 これは関係あるのでしょうか。

  • ログインすると『ページが表示されません』になってしまいます

    2台pcを持っているんだが、その1台がログインが必要なサイトにアクセスしてもトップページは表示されるけど、ログインするとページが表示されません・・・。 ちゃんと、詳細設定で『SSL2.0を使用する』『SSL3.0を使用する』『TLS1.0を使用する』などの欄にもチェックが入ってます。それでも表示されません。誰か解決方法お願いします。

専門家に質問してみよう