- ベストアンサー
簡単な投稿サイトを作る際の注意点
- 投稿サイトの作成にあたっては、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)
- amanojaku1
- ベストアンサー率54% (265/488)
(良く知りませんが)そう言えば かなり前から「Comet」と言う概念?(手法?)が登場しているようです。 第2回 Comet---プッシュ型のWebアプリケーションを作る http://itpro.nikkeibp.co.jp/article/COLUMN/20080220/294242/?rt=nocnt Tomcat 6で実現!Ajaxを超える通信技術Comet http://www.atmarkit.co.jp/ait/articles/0712/12/news128.html http://www.atmarkit.co.jp/ait/articles/0712/12/news128_2.html http://www.atmarkit.co.jp/ait/articles/0712/12/news128_3.html AjaxとCometで作るリアルタイムWeb https://thinkit.co.jp/story/2011/03/08/2040 https://thinkit.co.jp/story/2011/03/08/2040?page=0%2C1
- amanojaku1
- ベストアンサー率54% (265/488)
>ajaxで部分的に変更させればページ遷移しない分早くなったようにユーザーは感じると思ったのですが、そのためではないのですね。 なるほど、データの変更部分だけをサーバーから取得すれば、サーバの負担も下がり「ajaxの方が速度が速い」と言えます。 その場合、現在ブラウザ側が持ってるデータとサーバー側が持ってるデータの どこが変更されたか(データの追加、データの変更、データの削除など)をチェックして、その変更をブラウザ側に反映させれば良いでしょう。
- amanojaku1
- ベストアンサー率54% (265/488)
>ユーザーが投稿ボタンを押さなくても自動的に投稿されるチャットの場合は必要と言うことですね 自分がブラウザでチャット画面を見ているとします。 他のユーザーが記事を投稿すると、サーバーのデータが更新されます。 ブラウザは「0.5秒ごと」とか「1秒ごと」みたいな感じで、(「ユーザーの操作」に起因せずに)バックグラウンドで たえずサーバと通信しているので、サーバーのデータが更新されたら、そのデータをブラウザに読み込むと言う処理を繰り返している訳です。 >レンダリングの速度だけの理由で使う必要はないのですね。 >部分的にページ繊維しないでこうしんしたい時だけ使うのですね どうも話が噛み合ってないと思いましたが、「ajaxの方が速度が速い」と言うのは、「Google マップ」のような場合ですね。 「Google マップ」と掲示板ではカテゴリーが全く違います。 「Google マップ」を表示してマウスドラックで(画像表示が完了する前に)どんどん一方向に移動させたとします。 「Google マップ」は「ユーザーの操作」がトリガーですが、ajaxを使って"バックグラウンド"でサーバから地図データを読み込みます。 表示させなくて良い画像はサーバーから送らなくて良い事になり、サーバの負担も下がり「ajaxの方が速度が速い」と言えます。 サーバから地図データを(ajaxが)"バックグラウンド"で読み込みんでいるので、その間もユーザーはブラウザ操作できると言うメリットもあります。
お礼
ajaxで部分的に変更させればページ遷移しない分早くなったようにユーザーは感じると思ったのですが、そのためではないのですね。
- t_ohta
- ベストアンサー率38% (5238/13705)
> フレームワークのlaravelを使って作ろうかとも思ったのですが、あまりに癖が強く学習コストも大きすぎそうなので、簡易な投稿サイトくらいなら生のほうがずっと簡単だと思ったのですがそうではないのでしょうか? 投稿されたデータを適切に処理しないとSQLインジェクションとかクロスサイトスクリプティングとか色々サイトの脆弱性となる問題が発生します。 これらについて適切に処理する知識をお持ちであればPHPでフルスクラッチで書いても問題無いと思いますが、質問されている内容からすると適切に処理する知識をお持ちとは思えません。 攻撃手法はどんどん増えていて対策も簡単ではなくなってきているので、フレームワークに任せてしまった方が簡単です。 フレームワークの機能をちゃんと利用して、フレームワークを常に最新版に保っておけば、必要とされる対策は施された状態になります。
お礼
ただララベルを使って投稿サイトを作るだけでセキュリティまで大丈夫なのですね。 ただ下記を見ると習得に数年間かかりそうですね。 ://kore1server.com/370/Laravelを使うべきか、2017 また下記で基礎をやろうと思ったのですが、ララベル特有の用語説明などが飛ばされています。 http://laraweb.net/knowledge/2232/ ララ帳は古いようですし良い情報はないでしょうか? それとも今後伸びるもっと簡単なフレームワークでもありませんか?
補足
PHPixieが簡単と聞いたのですが将来性や需要などどうでしょうか?
- amanojaku1
- ベストアンサー率54% (265/488)
>回答No.9 amanojaku1 >ざっくりと「サーバのデータがブラウザに反映」されるトリガーが、「ユーザーの操作」に起因するか、「ユーザーの操作」に起因しないのか、の差と言えます。 例えばチャットだと「サーバのデータがブラウザに反映」されるトリガーが「0.5秒ごと」とか「1秒ごと」みたいな感じで、(「ユーザーの操作」に起因せずに)バックグラウンドで たえずサーバと通信しているので、当然サーバの負担は上がります。 ざっくりと言うとajaxはバックグラウンドでサーバと通信するためのライブラリーですので、バックグラウンドでサーバと通信する必要がないならajaxを使う必要はありません。
お礼
レンダリングの速度だけの理由で使う必要はないのですね。 部分的にページ繊維しないでこうしんしたい時だけ使うのですね
- amanojaku1
- ベストアンサー率54% (265/488)
>ajaxより速度は遅い そうではありません。 ざっくりと言うとajaxはバックグラウンドでサーバと通信するためのライブラリーです。 もしajaxを使ってバックグラウンドでサーバと通信するとサーバの負担は上がるでしょう、もしバックグラウンドでサーバと通信する必要がないならajaxを使う必要もないでしょう。 具体的に分かりやすい例として「バックグラウンドでサーバと通信」しているのはチャットです。 「バックグラウンドでサーバと通信」しているので、ユーザーの操作がなくても、サーバのデータがブラウザに反映します。 >ここでお礼をするときもページ遷移している そうです、通常は「ユーザーの操作」→「Submit(送信)」でページが更新されます。 ajaxを使ってバックグラウンドでサーバと通信すると「ユーザーの操作」がなくてもサーバのデータがブラウザに反映されます。 つまり、ざっくりと「サーバのデータがブラウザに反映」されるトリガーが、「ユーザーの操作」に起因するか、「ユーザーの操作」に起因しないのか、の差と言えます。 もしajaxを使ってバックグラウンドでサーバと通信すると、当然サーバの負担は上がります。 大抵チャットで人数の制限があるのはサーバの負担が上がり過ぎないように配慮しているためです。
お礼
チャットは以外にサーバ代がかかりそうですね。 ユーザーが投稿ボタンを押さなくても自動的に投稿されるチャットの場合は必要と言うことですね
- amanojaku1
- ベストアンサー率54% (265/488)
>リロードしないと更新できない 「Submit(送信)」でもページは更新します。 掲示板は使った事はありますか?、大抵の掲示板は「ページの移動、記事の投稿」などは「Submit(送信)」が使われています、大抵の掲示板は「Submit(送信)」で ちゃんとページは更新されます(それで不便はないと思いますが?)。 実際に どこかの掲示板に書き込んでみたらどうでしょうか?、って ここも掲示板でした(笑)
お礼
ここでお礼をするときもページ遷移しているのですね。 一見わからないですが。 ajaxより速度は遅いですが、気にするレベルではないという事ですね。
- superside0
- ベストアンサー率64% (461/711)
> リロードしないと更新できないのが唯一のデメリットなんですね Ajaxだけがそれの解ではありません。 投稿されたら記事のURLが変わるようにかするとか、 no-cache指定するとか、方法はいくらでもありますよ。
- superside0
- ベストアンサー率64% (461/711)
> ajaxを使うと軽くなるというメリットはないのですね。 そういうことです。 Ajaxというのは、ブラウザ上で動くJavaScriptだけのことではなく、 それに連動して動くサーバーサイドスクリプトを 合わせたセットのことです。 つまり、Ajaxを使えば サーバーサイドスクリプト(今例でいうとPHP)が 必要なくなるということではありません。 Form方式(ページ遷移)とAjax方式のどちらが、 サーバー側の負荷が小さくなるかというのはシステムの構成や更新データ量や頻度次第なので一概には言えませんが ソースを見る限りは、わざわざAjax化してシステムを複雑化する程の内容には見えません。 それに学習中ということであれば、なおさらで、 旧来のForm方式を充分に理解してからAjaxを学んだほうが、理解がスムーズです。
お礼
リロードしないと更新できないのが唯一のデメリットなんですね
- amanojaku1
- ベストアンサー率54% (265/488)
>これらの作業はすべてphpで行うよりサーバの負担を避けるためにinputに入力された文字列をphpの変数に入れるまではajaxを使ったjsで行うべきでしょうか? ajaxは良く知りませんが、ざっくりと言うとajaxはバックグラウンドでサーバと通信するためのライブラリーです。 ajaxを使ってバックグラウンドでサーバと通信するとサーバの負担は上がるでしょう、もしバックグラウンドでサーバと通信する必要がないならajaxを使う必要もないと思います。
- 1
- 2
お礼
htmlのformで送ってそれを受け取ったphpファイルの変数に代入して、 その変数を指定してdbのカラムに入れればajaxを使わなくてもできるので、ajaxを使うと軽くなるというメリットはないのですね。 あるのはページ遷移しなくてよくなるだけですね。