簡単に言えばteratailのように質問すると新しいページができる、会員登録するとマイページができる。みたいな感じです。
まぁブログですね。
どうしたらいいですか?また、どのように調べたらいいですか?
回答ありがとうございます。
質問の書き方が悪かったです。ブログを作りたいのではなくユーザー登録するとマイページができる。とか掲示板に書き込むと新しいページができるみたいなのを作りたいのです。
CMSやフレームワークを使えば楽でしょうが自分で作るからこそ意味があるのでは?
アクセスされたURLに応じてデータベースから取得した情報をテンプレートに埋め込んでるだけです
GetMethodみたいななもんと考えていいのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
yahoo掲示板なんかを見ると各掲示板やスレッドごとに番号が振られたurlになってるんですよね
私も以前それを見てPHPでスレッドを作成と同時に対応するファイルを生成する驚愕の掲示板を作っては悦に浸っていました・・・。
でも実際には他の方が言われるようにurlを書き換えてるようですね
リンク内容
RewriteRuleのあたりから読み進めばいいかと
wordpressも恐らくはこの辺を複雑にやってるだけのような気が・・・
検索するときは「url書き換え」「.htaccess」「mod_rewrite」などで
追記
全く役には立ちませんが、実際にファイルを読み込んでそれをもとに書き換えて別ファイルを吐き出すPHPのサンプルです
ファイルの出力とか意味不明なところもありますが昔に作ったものなのでその辺りは大目に見てください
kakikae.php
php
1 2<?php 3//書き込みオリジナルファイル読み込み 4$files=file_get_contents('org.html'); 5 6//'a'+乱数を生成してファイル名に 7$fileName = "a".rand( 1000000, 9999999); 8 9//書き込みオリジナルファイルから変更点を置き換える 10$files=str_replace("たいとる",$fileName,$files); 11$files=str_replace("書き換え前のオリジナルファイルです","書き換え後の".$fileName."ファイルです",$files); 12 13//文字コードをUTFに変換 14$files = mb_convert_encoding($files, "UTF-8","AUTO"); 15 16//ファイル名に拡張子を付ける 17$fileName = $fileName. ".html"; 18 19//ファイル生成&書き込み 20$handle = fopen( $fileName, 'w'); 21 22fwrite( $handle, $files); 23fclose( $handle ); 24 25// メッセージ表示 26print $fileName. "を生成しました。<br/>\n"; 27 28?>
org.html
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<title>たいとる</title> 5</head> 6<body> 7<pre> 8これは書き換え前のオリジナルファイルです 9</pre> 10</body> 11</html>
投稿2015/08/12 05:48
編集2015/08/12 06:29総合スコア94
0
アクセスされたURLやポストされたデータに応じて、
DBからひっぱってくる内容を変更させるだけです。
よって、いろんなページが動的に生成されるということはなく、同じViewに別の情報を表示させているだけとなります。
teratailのように、ひとつひとつ質問によってアドレスが異なるというのは
コントローラの解釈の方法がそうなっているからです。
おそらくですが、questions/14413 というアドレスが呼ばれたら
questionsというコントローラファイルが動作して14413のIDを持つ質問情報をDBから取得してきます。
その情報をViewファイルに渡して表示しているだけだと思います。
投稿2015/08/12 04:16
総合スコア89
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
仕組みとしては新しいページを作るというより、アクセスされたURLに応じてデータベースから取得した情報をテンプレートに埋め込んでるだけです。
そのような場合、大抵どのURLにアクセスしても /path/to/DocumentRoot/index.php で処理されるようになっています。そうすることにより、index.phpでURLに応じてレスポンスの内容を変えているのです。
世に出回る多くのWebアプリケーションフレームワークやCMSに備わっている機能ですので、フレームワークやCMSを使うのがいいかと思います。
投稿2015/08/12 01:06
総合スコア1156
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/12 09:34
0
まず、MVCという概念はご存知ですか?
CMSを使わずに自前で実装されたい、という事ですので、基本的にはモデル、ビュー、コントローラという3要素を使って:
・蓄積されたデータを表示する
・新しく入力されたデータを蓄積する
・データを利用する
ということをやっていきます。
データ蓄積は何でもよいわけです。昔ならばバイナリーテキストだったでしょうし、今ならデータベースが一般的です。mySQLなどを使うのであれば、CMSなどを使わずとも、PHPで普通にデータの取得、書き込みができますよね?
後は、取得したデータをどのように利用するかの問題です。(データの活用)
例えば、ここの質問はDBには:
・id
・タイトル
・本文
・解決フラグ
などがデータとして存在すると思われます。
この質問は teratail.com/questions/14413となっていますから、
URLを見る限り、questionsコントローラに14413というidを投げると、idに対応したデータを拾ってきてくれる構造になっているのです。
ユーザーにしても同じです。
きっとuserテーブルがあり、user_idやusernameなどのフィールドがあり、そのデータを使っているのです。
通常のURLを使って作りたいなら、ベストアンサーのmod_rewriteなどを使うのが常套手段でしょう。
他にはJSONなどを使うリクエスト方式ですね。
いろいろ研究されるといいと思いますよ。
投稿2015/08/18 05:18
総合スコア289
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/18 06:52
0
cakePHPなどのフレームワークを使うのが手っ取り早いでしょう。
CMSやフレームワークを使えば楽でしょうが自分で作るからこそ意味があるのでは?
勉強のために自分で考えて作ってみるのは意味はあると思います。
しかしながら、サービスとして公開するのであれば、セキュリティホールのデパートになる可能性が高いのでオススメはできかねます。
なぜ、多く使われているフレームワークがあるのか。簡単にできるからというのもありますが、多くの人が開発し続けバグなどを取り除いているという信頼感があるからでしょう。
勉強のためにであってもまずは、これらのフレームワークのコードを読み理解していく または、一度フレームワークでサンプルサイトを作成してみて、どのような処理のステップがあるのかを理解していくところから始めるのが良いと思います。
作り方を自力で考えるのであれば、まずは思いつくステップに分けてどうすればゴールにたどり着けるかを考え、ステップから処理と細かくしていけば自ずと作り方のようなものが見えてくるのではないでしょうか? 一度フレームワークでサンプルサイトを作成してみればステップが思いつき易くなると思います。
例えば
- 表示するページのテンプレートを作る
- DBからコンテンツを取ってきてテンプレートに当てはめて表示する
- DBにコンテンツデータを登録するフォームを作る
- どういうURLのルールでアクセスすれば個々の生成されるページにアクセスできるようにするか考える
- アクセスにルールに基づいたデータを持たせて、ページを振り分ける機能を作る
- 登録されてないとDBに登録するフォームにアクセス出来ないようにする
- 初回登録のフォーム画面を作る
- ログイン画面を作る
- ログイン状態を維持する方法を実装する
などなど、これだけでは不十分ですから必要だと思われるステップを追加して、更に個々のステップを処理レベルまで細かくして、各実装していけば自分の考え方に基づいた、自動生成でページの出来るサイトが作れると思いますよ。
投稿2015/08/12 04:28
総合スコア596
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/12 09:33
0
質問者さんのレベルが全然わかりませんが、どうしたら良いですかって聞かれても・・(笑
とりあえずWordpressとかDrupalで出来る事を調べてみて、それでは足りないとかどうしてもカスタムしきれないようならPHPで1から組むような流れで良いかもしれませんね。
どちらでも投稿すれば新しいページが出来ますし、一応ユーザーのページ(投稿管理とか)も作られます。
まぁ最近は安めのどのレンタルサーバでもWordpressは対応してたりするので、Wordpressを調べてみるのが情報も多いのでおすすめかも。
投稿2015/08/12 00:30
総合スコア1615
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/12 09:34
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/12 09:33 編集
2015/08/23 13:22