- ベストアンサー
投稿されたコンテンツをページの情報として表記する
このサイトや投稿サイトのように投稿されたコンテンツをページの情報として表記するためにはphpなどサーバサイドの言語でHTMLを生成するしかないのでしょうか? できればJSで行いたかったのですが、その場合Nodejsをサーバサイドの言語として選択してphpなどは使わないしかないでしょうか?
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
もともとからサーバー上で準備されているデータのみを閲覧するだけとか 自分が入力や選択した値を加工して自分のに表示したいだけ ということなら、サーバー側のスクリプトはなくても、やり方はあります。 (そういうJavaScriptを作っておくとか、 あらかじめデータを入れておいたXMLファイルを用意しておいてAjaxで表示するとか) しかし、言われているような、誰かが投稿したテキストやファイルを 別の人が閲覧したいということなら、 ブラウザとブラウザは、直接通信できないのですから インターネット上にそれを中継してくれる仕組み(Webサーバー上のスクリプト)が必要です。 これは AjaxのXMLHttpRequestで送信するにしても、formをsubmitで送信するにしても同じことで、 投稿時には、送信されてきたデータをサーバー上のファイルまたはDBに格納する仕組みが必要ですし、 それとは別に、投稿のリストや内容を閲覧するリクエストがくれば、 そのリクエストに合わせて、ファイルまたはDBの内容を送信する仕組みが必要になります。 これは、ブラウザ上のスクリプトだけでは 実現出来ません。 (サーバーへの送信部をは作ることは出来ても、 別にブラウザに送ることは、ブラウザ自身にはできないので) サーバー側の仕組みとして、それを Node.jsで作るのか PHPで作るのか それとも、perl、python、ruby、JSP、 JavaServlet、ASP、ASP.NET等々で作るのか それとも公開されているCGIを使うのか それとも 汎用パッケージやCMSやクラウド系の外部サービスを使うのか というのは、サイトの規模や機能や開発者のスキルによって違ってくるでしょう。 なお、ブラウザのJavaScriptがある程度、読み書きできるので Node.jsもすぐに使えるようになるというのは、幻想だと思いますよ。
その他の回答 (7)
- superside0
- ベストアンサー率64% (463/719)
> 教科書がphp5.5対応の教科書なので、xammpを7系にして学習に障害 その教科書がどの程度PHPのバージョンに依存した書き方をしてて PHP7の下位互換性に違反してのかは知りませんので、なんとも。 ただ、そういうのは、再インストールすればよいだけなので、 トライ&エラーしていけばよいかと。
お礼
5,5と7系は基礎はほとんど変わらないと聞いていますがやはり基礎でも違いによってエラーになる可能性はあるのですね。 7系の良いサイトがあればいいのですがなかなか見つかりません
補足
15:01:12 [main] Initializing Control Panel 15:01:12 [main] Windows Version: Home 64-bit 15:01:12 [main] XAMPP Version: 7.1.7 15:01:12 [main] Control Panel Version: 3.2.2 [ Compiled: Nov 12th 2015 ] にしました。これでララベルをインストールできるのですね。
- superside0
- ベストアンサー率64% (463/719)
> PHP工房などのプラグインのようにアドレスを変更するだけで実装できてしまうよう なものと思っていましたが違うのですね。 もちろん、よくある掲示板やカレンダーや会議室予約のCGIといった 出来合いのものが使えるだけでよいのあれば、それを設置すればよいだけです。 CMSに出来合いのプラグインを組み合わせる使う場合も同様です。 初期設定や多少のカスタマイズ程度なら、そのスクリプト言語を詳しく知らなくても可能ですし。 しかし、それだけでは、レトルト食品を温めて出しているようなもので 様々なオーダーに対応できるようにはなりません。 他にはないユニークなサービスを創ろうとしているなら、自分で開発する必要があります。 つまり、どこまで できるようになりたいのか次第です。 > 生のPHPをやらずにいきなり、ララベルでも良いという方もいますが、それではよく わからないが実装は出来たとはならないという事ですね。 サーバーサイドのプログラミングの経験や知識があるなら、 いきなりフレームワークで開発することも可能ですが、 Webのクライアント・サーバーモデルの仕組みや後ろで動くDBなどをなにも知らないなら、 ”いきなり”は、かなり無理があります。 まずは入門書レベルからでしょう。 基礎を理解してから、運用レベルのものを作る段階で、 フレームワークなどの採用を検討したほうがよいと。
お礼
プラグインのようによくわかっていなくても何となく導入して、投稿サイトをセキュアに作る事が出来るわけではないのですね。 >>> サーバーサイドのプログラミングの経験や知識があるなら、 いきなりフレームワークで開発することも可能ですが、 Webのクライアント・サーバーモデルの仕組みや後ろで動くDBなどをなにも知らないなら、 ”いきなり”は、かなり無理があります。 まずは入門書レベルからでしょう。 たにぐちまことの初級本をやっているのでこれを行ったら十分なので、これが終わったら、ララベルを始めて、投稿サイトを作ったら良いという事ですね。 https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BPHP%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%81%9F%E3%81%AB%E3%81%90%E3%81%A1-%E3%81%BE%E3%81%93%E3%81%A8/dp/4839933146
補足
教科書がphp5.5対応の教科書なので、xammpを7系にして学習に障害になるのであれば、新しいくせずに使いますが、障害にならずにララベルをインストールした後にxammpを最新にすると大変であればこの際先にxammpを最新にしてしまおうと思っています。 こちらはどうでしょうか? 問題なければ早速ザンプを新しくしたいと思います。
- superside0
- ベストアンサー率64% (463/719)
> ララベルも同じくらい難しいでしょうか? もちろん。 フレームワークを使うことで、開発は効率化されますが、 言語そのものを理解する以前に、 Webアプリがどういう仕組みで動作しているのかをわかっていない状態で、 それのブラックボックスを目の前にしても途方に暮れてしまうだけです。 まずは、基本を理解してからです。
お礼
生のPHPをやらずにいきなり、ララベルでも良いという方もいますが、それではよくわからないが実装は出来たとはならないという事ですね。 PHP工房などのプラグインのようにアドレスを変更するだけで実装できてしまうようなものと思っていましたが違うのですね。 それですと最低でも半年くらいの学習をしないと投稿サイトは作れないという事でしょうか?
補足
教科書がphp5.5対応の教科書なので、xammpを7系にして学習に障害になる可能は低いでしょうか? そうしないと最新のララベルは使えないようなので
- wek00
- ベストアンサー率61% (91/147)
私はサーバは1投稿1ファイルでデータを管理し(JSON形式などで) クライアント側でそれらをかき集めて整形して表示 というシンプルなものを想像してました。 domやajaxのことは考えていませんでした。 そういう気の利いたものを使ってスマートに実現するなら 既出の一般的な方法を選択すべきです。失礼しました。
お礼
このサイトのように投稿されたテキストや画像をページ上に追加できる投稿サイトを考えているのですが、やはり、フロントjsではセキュリティ面もあり、サーバサイドのHTMLを自動的に改変することは出来ないのでしょうか?
- wek00
- ベストアンサー率61% (91/147)
クライアントサイドで取得して表示するのは可能なようです。 頑張ればクライアントサイドでかなりのことをできそうです。 第三者に無制限に閲覧されても構わないデータばかりなら サーバサイドのコードにほとんど手をいれなくていいかも。 検索エンジンとの相性は悪そうですね。 Flashプラグイン内でごにょごにょする感じに似てるような。 参考:JavaScriptでHTTPを利用してWebのファイルを取得する - XMLHttpRequestの利用 - JavaScript プログラミング
お礼
>>> クライアントサイドで取得して表示するのは可能なようです。 頑張ればクライアントサイドでかなりのことをできそうです。 フロントjsでdomを生成する形でも、このサイトのように、閲覧者さんが投降しなテキストなどをhtmlファイルに追加して、サーバサイトHTMLを変更して、その後の閲覧者さんが見た時にはその情報が追加されたHTMLを見ることが出来るという事でしょうか? ajaxを使ってサーバ上のHTMLをいじれるという事ですか?
- Proof4
- ベストアンサー率78% (151/192)
No.1のお礼コメントに回答します >ajaxを使っても無理なのでしょうか? ajaxはJavascriptを用いた非同期通信のことなので、投稿されたコンテンツをページの情報として表記することとは直接の関係がありません。
- Proof4
- ベストアンサー率78% (151/192)
Node.js環境のもとであればデータベースやテキストファイルなどを読み込んで、ページに出力等といったことが可能ではあるようです。 ただ、そのようなことをしたい場合はサーバーサイドの言語のほうがコード量や開発のしやすさから優位になるのではないかと思います。
お礼
やはり、サーバサイドの言語にNodeを選ばないとJSでDOM生成して、ページを動的に変更することはできないのですね。 PHPを選択したらPHPの文法関数で生成するしかないのですね。 ajaxを使っても無理なのでしょうか?
お礼
なお、ブラウザのJavaScriptがある程度、読み書きできるので Node.jsもすぐに使えるようになるというのは、幻想だと思いますよ。 ララベルも同じくらい難しいでしょうか?