- ベストアンサー
簡単な投稿サイトを作る際の注意点
- 投稿サイトの作成にあたっては、Ajaxを使ったJavaScriptを使用して、inputに入力された情報をPHPの変数に入れることがおすすめです。
- また、データベースにデータを入力する際は、適切なエスケープ処理を行うことを忘れずに。
- さらに、Laravelを使用することで、より効率的に投稿サイトを開発することができます。
- みんなの回答 (14)
- 専門家の回答
質問者が選んだベストアンサー
> iinputに入力された情報をDBに登録するためにはhtmlのpostで可能なので、phpもajaxも必要ないのですね。 横から失礼しますが、 Webアプリの根本的な動作を理解されていないようです。 【投稿時】 (1)ブラウザから サーバーへFormデータを送る ↓ (2)サーバーでは、サーバーサイドのスクリプトで 受け取ったFormデータをDBに格納して、完了なりエラーなりのHTMLを生成する。 ↓ (3) (1)のブラウザに(2)のHTMLが送信されてブラウザ上に表示される 【閲覧時】 (1) 閲覧したい情報をブラウザ上で選択(リンクなりFormなり)してサーバーに送る ↓ (2) サーバーは、サーバーサイドのスクリプトで リクエストに合わせたHTMLを作る ↓ (3) (1)のブラウザに(2)のHTMLが送信されてブラウザ上に表示される です。 つまり用意するのは、 (1)のHTMLと、(2)のPHPです。 (1)でFormでなくAjaxを使ったとしても、(2)のPHPはいらなくなる訳ではなく、 (2)のPHPで生成するのがHTMLでなくて、XMLやJsonになるだけの違いです。
その他の回答 (13)
- t_ohta
- ベストアンサー率38% (5292/13827)
> inputに入力された情報をDBに登録するためにはhtmlのpostで可能なので、phpもajaxも必要ないのですね。 サーバサイドの事とブラウザサイドの事を混同して考えてはいけません。 inputに入力された内容をサーバへ送信するには、HTMLのformを使ってユーザーがsubmitする方法も有れば、formを使わずにJavaScript(Ajax)を使ってプログラムで制御しながら送信する方法もあると言う事です。 どちらがいいかはサイトの構造やUI設計などに依存します。 ブラウザからサーバへデータを送信するにはHTTPのGETメソッドかPOSTメソッドを使う必要がありますが、これはブラウザとサーバ間の通信方法の問題です。 formを使おうがAjaxを使おうが、何れの手段であっても通信プロトコルとしてはHTTPのGETメソッドかPOSTメソッドを使用します。 サーバへ送られたデータは何らかのプログラムで処理しないとDBに入れる事は出来ませんので、PHPでもPerlでもRubyでもJavaでも何でもいいのでプログラミング言語を使ってプログラムを用意しなければいけません。 PHPを使うのであれば、PHPには $_GET とか $_POST と言ったHTTPで送信されてきたデータを受け取る変数が用意されているので、これらを使って受信したデータを取り出して処理します。 ただ、セキュリティの事を考えたら何らかのフレームワークを使用して受信したデータのチェックをした方がいいんじゃないでしょうか。 自分でデータチェックのプログラムを書いてもいいですが、結構手間が掛かりますよ。 それにフレームワークを使えばデータチェックだけで無く、DBへのデータの出し入れなんかもゴチャゴチャとコードを書かなくて済むので簡単です。
お礼
inputに入力された情報をDBに登録するためにはhtmlのpostで可能なので、phpもajaxも必要ないのですね。 そのためにはhtmlのpostでphpの変数に代入してその変数をdbにインデックスさせれた良いという事でよいでしょうか? フレームワークのlaravelを使って作ろうかとも思ったのですが、あまりに癖が強く学習コストも大きすぎそうなので、簡易な投稿サイトくらいなら生のほうがずっと簡単だと思ったのですがそうではないのでしょうか? またレンサバがsshに対応していないようでLaravelを使えないといわれてしまいました。
- akauntook
- ベストアンサー率19% (295/1481)
色々と曖昧なので、まずは整理されたらいかがでしょうか。 まず、『簡単な投稿サイト』じゃ作れません。 具体的に何を誰が投稿し、投稿内容を誰に対してどのように表示し、投稿の管理は誰がどのように行うのか。 最低限の仕様でこれくらいは明確じゃないと、着手出来ないですね。 基本的に何らかのプログラミングは、目的のために問題を分解して、最も簡単に分解することで行います。 目的がわからなければ、やりようがないです。 次に、質問でよくわからなかったのは、DBデータです。 データベースなんで、データを扱うのは当たり前なんですが、どんなデータなのかデータベースのどのテーブルにどのような構成のデータがあるのか、明確じゃないですね。 データを表記と言うのもわからない。 データを表記したならデータが並ぶだけで、データベースは関係ない。 さらに、INPUTに入力。 INPUTって言うのは入力を英語にしただけなので、入力に入力と言っているのと同じ意味で、わからない。 食べ物の摂取方法に例えるなら、口に運び噛み砕いて飲み込むと言うところを、入力に運び噛み砕いて飲み込むみたいなことになってます。 どうやって入力したいのか。これを説明しましょう。 >これらの作業はすべてphpで行うよりサーバの負担を避けるためにinputに入力された文字列をphpの変数に入れるまではajaxを使ったjsで行うべきでしょうか? これが特に何を思って何をしたいのかわからないですね。 サーバー負担は、サーバーに何らかの処理をさせればかかるはかかりますけど、処理をさせたいのだから仕方ないですね。 無駄に処理をさせる必要はないと思いますが、簡単な投稿サイトなのだから、大した負荷がそもそもかかると思えないんですけど。 phpで値を変数に入れるには、わかっていると思うんですが、=を使うだけです。 =の右側の値が左側の変数に入りますね。 WebでLAMP環境のシステム開発するなら簡単な流れ 1.HTMLのフォームを使ってDBに挿入する情報を入力させる。 2.phpで入力された情報を受け取る。 3.phpで受け取った情報を使ってSQL文を発行する。 4.phpからDBにクエリを送る。 5.DBに問い合わせたならその結果をphpで受け取る。 6.受け取ったカラムのデータをphpでごにょごにょやって整形してhtml出力する。 さて、どれがわからないんだろう。
- t_ohta
- ベストアンサー率38% (5292/13827)
> これらの作業はすべてphpで行うよりサーバの負担を避けるためにinputに入力された文字列をphpの変数に入れるまではajaxを使ったjsで行うべきでしょうか? Ajaxを使おうがHTMLでPOSTしようがサーバーの負担はそんなに変わらないでしょう。 > その場合どうやってphpのこの変数に入れるとするのでしょうか? Ajaxを使ったとしてもブラウザからサーバへデータを渡す仕組みはHTMLのフォームと同じです。 GETメソッドかPOSTメソッドを使ってサーバへリクエストを送るだけです。
お礼
inputに入力された情報をDBに登録するためにはhtmlのpostで可能なので、phpもajaxも必要ないのですね。 そのためにはhtmlのpostでphpの変数に代入してその変数をdbにインデックスさせれた良いという事でよいでしょうか?
- 1
- 2
お礼
htmlのformで送ってそれを受け取ったphpファイルの変数に代入して、 その変数を指定してdbのカラムに入れればajaxを使わなくてもできるので、ajaxを使うと軽くなるというメリットはないのですね。 あるのはページ遷移しなくてよくなるだけですね。