• ベストアンサー

サーバーに送られたデータを計算して返す場合

クライアントの方で「1+2」のデータをサーバー側に送信して、結果を返しなさいというプログラムを書くとします。 クライアント <html><body>ここにフォームと送信ボタン<br><br><center>XXX</center></body></html> サーバー側で計算した結果をクライアント側に書かれているXXXXという所に返したいとします。PHPで計算してサーバー側でクライアントと全く同じhtmlを書いてあげれば計算した結果を返すことができます。$iと$jはクライアントから <PHP? $z=$i+$j; print "<html>....<center>$z</center>..... というような(上は適当)PHPで計算した結果を所定の場所に埋め込んで、あとはPHPでhtmlを書き出せばユーザーからは計算された結果が返されたというようになります。 このコードは短いですが、商業用のページとかもの凄い量のhtmlのコードが書かれているわけですが、例えば1000行くらいのhtmlがあって、そのページの中で上記の簡単な計算のみ返すプログラムが欲しいとすると、サーバー側では同じ1000行文のhtmlとPHPによる計算が必要になりますが、わざわざ1000行もhtmlをサーバー側でやるのは面倒です。実際こういう場面ではどのように処理をするのが的確なんでしょうか?よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

まずはPHPがどんなスクリプトかを知りましょうか。 http://jp.php.net/manual/ja/introduction.php 次にテンプレートエンジンと呼ばれる、フレームワークと、 それが出来た理由を知りましょう。 http://www.gadgety.net/shin/tips/unix/php-tmpl.html

その他の回答 (1)

回答No.1

PHPはPHPにHTMLを埋め込む言語ではなくHTMLにPHPを埋め込む言語です。 <html><body>ここにフォームと送信ボタン<br><br><center> <?php echo $i+$j; ?> </center></body></html> のような感じでかけます。 あくまで<?phpから?>の間がプログラムとして実行されます。

関連するQ&A

  • 別サーバーのデータの取得

    ●仕様環境:PHP5 常時起動しているサーバAからサーバBのHTML部分をHTTP リクエストで一定時間毎に取得したいのですが下記の事がわかりません。 ●質問 サーバA側のプログラミングはループなりで待たせて置き、 データ取得のタイミングがきたらBサーバにリクエストを 出すと言った処理を考えましたが、 サーバA側のプログラミングで、 (常時実行)無限ループで待たせて置く命令を書いたとしても、 そのサーバA側プログラミングへ、クライアント側からアク セスしないと最初の実行開始が出来ないと思うのですが、 PHPではこの様な処理をする事は不可能でしょうか? もし、不可能ならば、サーバ上で実現するにはどのような実 装のさせ方がありますでしょうか? ●補足 ※クライアントサイドでは無い前提で、教えていただけません でしょうか? リクエストを出す時点でクライアントプログラミングになるかも 知れませんがデスクトップアプリケーションの様な形では無く実 現させたいのです、表現が間違ってましたら申し訳ありません。

    • ベストアンサー
    • PHP
  • クライアントからサーバの関数を呼び出して実行させるには・・・?(2)

    こんにちわ。再び質問させていただきます。 前回の追加説明もさせていただきたいと思います。 クライアントサーバシステムでの関数呼び出しをしたいと言っていましたが、実際に行うのはサーバで処理をし、クライアントに結果を返すということをしたいと思ってます。クライアント側から関数ライブラリのある関数に対して、引数となる値をブラウザもしくは他の方法で、サーバに送信し、サーバは受け取った引数を関数ライブラリの関数に渡し実行させる。その結果をクライアントのブラウザ上などに表示させるといった感じです。 こういうことを可能にする手段のうち、最適なものはどういうものなのか教えていただきたいと思います。そしてその具体的なやり方についても知りたいので、よいサイトなどもありましたら、教えていただけないでしょうか。 よろしくお願いします。

  • レンタルサーバーであるプログラムを常に走らせておく

    PHPやperlなどが使えるレンタルサーバーで以下のような処理をさせたいのですができますか 1 指定のTwitterアカウントに新しいツィートが投稿されるのを察知 2 そのツィートに含まれる文字列を処理して結果を別のTwitterアカウントでツィートする 1を実現するにはツィートをモニターするプログラムをサーバー側で常に走らせている必要があると思います。htdocフォルダに1を実行するPHPファイルを入れてもクライエントがサーバーにアクセスして処理を頼まない限りサーバー側では何もしてくれませんよね? クライエントの要求なしで常にサーバー側であるプログラムを実行させておくにはどうしたらいいのでしょうか?

  • phpとhtml間のデータ送信時「テキスト改行」処理について

    自分で調べてみましたが、どうしてもわからず行き詰まりました。 どなたかお知恵を貸して頂ければ幸いです。 【使用ファイル】 a.php php処理 b.html db抽出データ表示とフォーム(編集画面) c.html フォーム入力内容表示(確認画面) データ送信はPOSTとSmarty併用 dbへはMySQLで格納 【変数】 $z テキストエリアの項目値 【流れ】 a.php→b.html→a.php→c.html→a.php→b.html/dbへ格納 1:a.phpでdbよりデータ(テキスト)を抽出し追加、変数$zに格納。 2:Smartyでb.htmlへ$zを送る。送り先はフォーム内のテキストエリア値。 3:$zにテキスト追加で改行発生 (\n発生と予測)。 4:b.htmlからPOSTでa.phpへ。 nl2br($z)処理をし、<br />挿入。 5:Smartyでc.htmlへ$zを送る。 $zには<br>と\nの両方が入っている状態。改行表示される。ブラウザのページソースでは<br />が入っている。 6-1:c.html(POST)→a.php(smarty)→b.html str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態 smartyでb.htmlへ 6-2:c.html(POST)→a.php→db格納  str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態でdbへ格納 6-1,2とも<br />を入れたままだと文字列に<br />が入ってしまう 7:a.php→b.htmlで再度$zを呼び出してみると(1:の処理)<br />を取り除いたはずなのに、ブラウザではきちんと改行表示されている。 ブラウザのページソースに<br />の表示はない 【疑問点】 3:\nは発生してPOSTでa.phpにきているのか? きている種類が\nまたは他の改行文字かどうかを調べる手段はあるのか?バイナリ関連で調べるのか? 6-1:<br />を削除してhtmlへ送っているのに改行表示されるのか? <br />が文字列扱いになるのはなぜか? 6-2:dbでは\nが改行として認識されるのか? 7:\nしか入っていない文字列をブラウザ表示して、なぜ改行表示されるのか? 以上です。考えれば考える程にわからなくなってきました。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • はじめまして。「拡張されたHTTPステータスコード」をWindows版

    はじめまして。「拡張されたHTTPステータスコード」をWindows版のApacheで 返却する方法をご教授下さい。 [経緯] 現在とあるWEBサービスを使用するためのPHPクライアントを作成しております。 PHPクライアントはHTTP経由のGETでパラメータを送り サーバ側もHTTPでクライアントへ結果を返却します。 その結果を元にクライアント側で処理を行います。 但し、サーバ側の結果は「拡張された」HTTPステータスコードで返却されます。 ※「拡張された」HTTPステータスコードは「0」「30」「-3000~-3012」など サーバ側の環境が無いため、現在モックを作成してクライアントの 挙動確認を行おうと考えております。が、モック作成が上手くいかないのです。 モック(PHPモジュール)からRFCに定義されていないHTTPステータスコードを 返却すると、Apacheが500のInternal Server Errorを返却してしまいます。 尚、Windows版のApacheでは上記のような動作となるのですが Linux版のApacheでは、指定したHTTPステータスコードが返却されます。 どなたかWindows版のApacheで、「拡張されたHTTPステータスコード」を 返却する方法をご存知では無いでしょうか? [環境]  サーバOS:Windows Vista Home Premium  WEBサーバ:Apache2.0(Windows版インストーラ使用)  CGI:PHP5.2.12(Windows版Zipを使用) [構図]   (WEBサービス)     ↑|   GET|| HTTPステータスコード     |↓  (PHPクライアント) [サーバ側モジュール例] <?php header('HTTP/1.1 3000 Precondition Failed'); ?> 以上、よろしくお願い致します。

    • 締切済み
    • PHP
  • HTTPサーバプログラム

    C言語でHTTPサーバを作ろうとしています。 大方動くのですが、Java Applet(Jarファイル)を埋め込んだWebページをクライアント側のブラウザに表示させようとすると、エラー(ClassNotFoundError)が発生してしまいます。 ※GIFファイルなどの表示はうまく動いています。 パケットキャプチャソフトなどを活用して色々調べてみると、サーバ側からクライアント側へJarデータを送信する処理が上手く動いていないようです。 今のHTTPサーバの制約で、データ送信関数で一度に送信できるサイズが32KB程度になっています。 Jarファイルがこの最大サイズ(32KB)以下であれば問題なくクライアント側でJava Appletが起動するのですが、このサイズを超えるJarファイルの場合に先のエラーが発生してしまいます。 ※例えばJarファイルサイズが50KBの場合は、データ送信関数を2度呼び出す処理になります(1回目は32KB送信、2回目は残りの18KBを送信します)。 パケットキャプチャソフトでデータの流れを確認すると、50KBのJarファイル・データはクライアント側へちゃんと送信されているように見えるのですが、Jarファイル・データがクライアント側へ送信された後、(恐らく、クライアント側でJarファイルが正しく受信されなかったと認識されているため)クライアント側はClassファイルをサーバ側へリクエストしに行っています。 ※<applet archive="test.jar" code="test.class">としている場合は、"test.jar"ファイルのデータ送信後、クライアント側から"test.class"をサーバ側へリクエストしに行っています。 50KB程度のGIFファイルなどは、分割送信処理を用いてちゃんとクライアント側のブラウザで表示できているのですが…Jarファイルはなぜ上手くいかないのか分かりません。 Jarファイル・データ送信時には何か特別な制約があるのでしょうか? どなたか詳しい方がおられましたらお教えいただきたく存じます。

  • smtpと、popについて、サーバーから見ると。。。

    サーバ間でメールのやり取りをしたり、クライアントがサーバにメールを送信する際に用いられるのがsmtpということになっていて、サーバからメールを受信するためのプロトコルがpopということになるとおもうのですが、では、サーバー側にとっては、メールを受信するのがsmtpで、クライアントにメールを送信するのがpopということであってますでしょうか?メールを送信がsmtpで、受信がpopと覚えていたので、サーバー(linuxです)からみると反対なのかなとおもいまして。

  • Webサーバとアプリサーバの違い

    Webシステム(サーバ-クライアントモデルではないほう)の 三階層モデルについて教えてください。 このモデルではWebサーバ、アプリサーバ、DBサーバの三階層構成をとられていますが PHP、perlといった動的言語の処理はWebサーバ、アプリサーバどちらで 行われるのでしょうか? はじめ、私はアプリサーバ側かと思っていたのですが、こっちは「Javaプラットフォームを 動かすためのサーバ」と書かれているソースが多く、PHP、Perlについては Webサーバ側と書かれてたりアプリサーバ側と書かれてたりしていて判断に悩んでいます。 単純に「動的な処理を行う」という基準で考えればPHP、Perlの処理はアプリサーバ側だと 思うのですが、いかがでしょうか ご回答よろしくお願いします。

    • 締切済み
    • PHP
  • javascriptとphpの連携で疑問

    javascriptの変数をphpに渡すプログラムを、ネットを参考にして次のようなものを作りました。 ●クライアント側 (index.html) <html> <head> </head> <body> <script type="text/javascript" src="j2p.php?parm=1"></script> </body> </html> ●サーバー側 (j2p.php) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); if ($parm == 1) { echo "document.write('1ですよ')"; } else { echo "document.write('1じゃないですよ')"; } ?> 上記は問題なく動作するのですが、サーバー側のプログラムを、次のように 変更し、直接$parmを出力しようとすると何も表示されません。 ●サーバー側 (NG1) <?php $parm = $_GET['parm']; header("Content-type: application/x-javascript"); echo "document.write('<?php echo $parm; ?>')"; ?> どこか、考え方が根本的に間違っているのかも知れませんが、この問題で ずっと悩んでおり、先に進めない状態です。 上記プログラムのおかしな点、改善点など、アドバイスよろしくお願い いたします。

  • クライアントとサーバという言葉の使い方

    「クライアントPC」とは、ユーザが操作している側のPCのことでブラウザ等を介して使用するPCというのが一般的です。 クライアントPC(ブラウザ) <-> サーバ(Webサーバ+CGI/PHP/JSP等) そこでクレジットカードの決済業者が提供しているAPI(代表的な例:WebPay)みたいに、 webサーバのプログラム(サービス利用者)にwebサーバのプログラム(サービス提供者)のサービスを提供するような場合、 クライアントPC???(Webサーバ+CGI/PHP/JSP等) <-> サーバ(Webサーバ+CGI/PHP/JSP等) この場合もサービス利用者側のことをクライアントPCと呼ぶのでしょうか?WebサーバなのにクライアントPCというのもなんか違和感があるのですが・・・適切な名称があったら教えてください。

専門家に質問してみよう