現在書籍、何冊かで掲示板を作成しております。
【状況】
例えばhttp~~~/view.phpにDBから情報を取得して
id1 2 3...
の各フィールド情報を一覧に表示していくことはできるようになりました。
そして、その中から一つのIDを取り出して表示ということもできます。
【不明点】
それぞれのID情報を別の個別ページ(view.phpと別)で表示する方法がわかりません。
*ある書籍をみた限り、view.php?id=6などの中にそれぞれ個別に表示されていました!
HTMLを勉強した限りではあたらしいページをつくるには
view.php
view1.php
view2.php
とウェブサーバーにアップロードしなければあたらしいページをつくれないはずという認識なのですが、その書籍の手順ではあらたにアップロードしたということもありません。
どのようにしてその書籍では個別ページができるのでしょうか?隅々までみたのですがわかりませんでした涙
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文を構築するとしても,セキュリティ的に問題は何らありません。
質問の意味を取り違えてるかもしれませんが、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")とかになるんじゃないかと思います。セキュリティ的にこういうのは多分ダメなのでしょうが意味としてはそうです。
いま調べていたのですが、
http://www.objective-php.net/mvc/dispatcher
で記載されている
【みたいにして、index.phpでは$_GET['p']を参照し、それに応じた処理クラスを呼び出すという感じです。
とりあえずはこれでもMVCは実現できます。
しかしこれだとURLとして見栄えがあまり綺麗じゃありません。全部のページがindex.phpっていうのもなんか変な感じがします。
そこでapacheのリライト機能というのを利用する手があります。】
という考え方にもとづいていけばよろしいでしょうか。
追記
mod_write を使って解決するということでしょうか?
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
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文を構築するとしても,セキュリティ的に問題は何らありません。
大変くわしくありがとうございました。お二人のお力で見えてきました。
明日構築してみます!
大変くわしくありがとうございました。お二人のお力で見えてきました。
2013/11/11 21:21:52明日構築してみます!