PHPとMysqlで質問です。*初心者です。

現在書籍、何冊かで掲示板を作成しております。
【状況】
例えばhttp~~~/view.phpにDBから情報を取得して
id1 2 3...
の各フィールド情報を一覧に表示していくことはできるようになりました。
そして、その中から一つのIDを取り出して表示ということもできます。
【不明点】
それぞれのID情報を別の個別ページ(view.phpと別)で表示する方法がわかりません。
*ある書籍をみた限り、view.php?id=6などの中にそれぞれ個別に表示されていました!
HTMLを勉強した限りではあたらしいページをつくるには
view.php
view1.php
view2.php
とウェブサーバーにアップロードしなければあたらしいページをつくれないはずという認識なのですが、その書籍の手順ではあらたにアップロードしたということもありません。
どのようにしてその書籍では個別ページができるのでしょうか?隅々までみたのですがわかりませんでした涙

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2013/11/11 21:22:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:language_and_engineering No.2

回答回数170ベストアンサー獲得回数63

ポイント50pt

URLのアクセスの仕方に応じて,ページの表示内容も変化させたい。
という要望ですね。

前の回答にあるように,GETリクエストの内容をみれば,URLの「?」からあとの部分の文字列が分かります。
?id=1のようになっていたら,DBからはid = 1の情報を持ってきて表示する,といった具合です。

パズドラのサイトでは,URLに「?」が使われていません。
その場合でも,URLの文字列をみて,ページの表示内容を変えることができます。

PHPで現在アクセスされているページのURLを取得する - hoge256ブログ
http://www.hoge256.net/2010/06/519.html


>セキュリティ的にこういうのは多分ダメなのでしょうが

と仰っているのは,GETリクエストの内容をそのままSQLに埋め込んではいけない,と言っているのです。

例えば,GETの部分に(URLに)「DBを消去する」という意味のSQLを埋め込んでアクセスした場合,GETの内容を鵜呑みにしてしまうような作りだと,大変なことになってしまいます。
したがって,この場合は「SQLインジェクション」の対策をし,SQL文の構築時にエスケープをします。
そうすれば,GET内容をもとにSQL文を構築するとしても,セキュリティ的に問題は何らありません。

id:akakak

大変くわしくありがとうございました。お二人のお力で見えてきました。
明日構築してみます!

2013/11/11 21:21:52

その他の回答1件)

id:duck75 No.1

回答回数78ベストアンサー獲得回数15

ポイント50pt

質問の意味を取り違えてるかもしれませんが、view.php?id=6の意味がわからないということでしょうか??

これは、view.phpの中に$_GET("id")というのがあったらその中身が6になるということです。getとかpostについてはその書籍に書かれてなかったですか?

なのでたぶん、view.php?id=6とすることによってview.php内にidが6のDBの情報を引っ張ってきてるんだろうなと思うのです。

そのときのSQLはたぶん、select * from テーブル名 where id = $_GET("id")とかになるんじゃないかと思います。セキュリティ的にこういうのは多分ダメなのでしょうが意味としてはそうです。

他2件のコメントを見る
id:akakak

いま調べていたのですが、
http://www.objective-php.net/mvc/dispatcher
で記載されている
【みたいにして、index.phpでは$_GET['p']を参照し、それに応じた処理クラスを呼び出すという感じです。
とりあえずはこれでもMVCは実現できます。

しかしこれだとURLとして見栄えがあまり綺麗じゃありません。全部のページがindex.phpっていうのもなんか変な感じがします。

そこでapacheのリライト機能というのを利用する手があります。】
という考え方にもとづいていけばよろしいでしょうか。

2013/11/09 23:50:25
id:akakak

追記 
mod_write を使って解決するということでしょうか?
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

2013/11/10 00:07:49
id:language_and_engineering No.2

回答回数170ベストアンサー獲得回数63ここでベストアンサー

ポイント50pt

URLのアクセスの仕方に応じて,ページの表示内容も変化させたい。
という要望ですね。

前の回答にあるように,GETリクエストの内容をみれば,URLの「?」からあとの部分の文字列が分かります。
?id=1のようになっていたら,DBからはid = 1の情報を持ってきて表示する,といった具合です。

パズドラのサイトでは,URLに「?」が使われていません。
その場合でも,URLの文字列をみて,ページの表示内容を変えることができます。

PHPで現在アクセスされているページのURLを取得する - hoge256ブログ
http://www.hoge256.net/2010/06/519.html


>セキュリティ的にこういうのは多分ダメなのでしょうが

と仰っているのは,GETリクエストの内容をそのままSQLに埋め込んではいけない,と言っているのです。

例えば,GETの部分に(URLに)「DBを消去する」という意味のSQLを埋め込んでアクセスした場合,GETの内容を鵜呑みにしてしまうような作りだと,大変なことになってしまいます。
したがって,この場合は「SQLインジェクション」の対策をし,SQL文の構築時にエスケープをします。
そうすれば,GET内容をもとにSQL文を構築するとしても,セキュリティ的に問題は何らありません。

id:akakak

大変くわしくありがとうございました。お二人のお力で見えてきました。
明日構築してみます!

2013/11/11 21:21:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません