今 もう勉強中 それは、PHPの中でも非常に奥深い関数である、file_get_contents()についてなのです 正直この関数は security領域の境界をさまよう関数であるからでしょうか、インターネットの世界にも情報が非常に少ないのです
これまで Ajaxを用いて画面の書き換えを画面遷移せずに行う方法は存在しない、そのように誤解していましたが、この関数を用いればそんな魔法のようなことが可能となるのです
通常ブラウザでインターネットのあるページを見ている時、我々はリンクとか、ボタンとか押して次の画面に移ります ところが、この次の画面に移る = 画面遷移 する時には、ほとんどの場合 当然のことながら画面全体が書き換わります これは慣れれば当然のこととやり過ごしますし、まあ本のページをめくる、と思えば至極当然のことでしょう
しかし、そのことに満足しなのであれば、「何でいちいち画面全体書き換えるんだよ? 必要部分のみ書き換えればよいだろう?」という疑問に目覚めます
疑問、というのは人間が進歩する重大な動機の一つです これにより人間は次のステップに進むことができるのです
例えば想像して下さい、Ajaxの存在を広く世に知らしめた Google Map これは皆とても日頃お世話になっていますよね、このサービースが公開されるまで、インターネット上の地図ソフトでは、画面から外れたすぐ隣りの場所に移動するためにも、画面全体を書き換えていました ところが、Google Mapではスムーズに地図が移動していくのです 不思議と思いませんか?
この技術は Ajax (Asynchronous Javascript And Xml)という深い技術を用いて成し遂げれているのです ちなみに、Ajaxを使いやすくするために これまた広く普及したのが、jQueryというメタ言語です 実は僕もこの Ajax/jQueryを用いて色々なプログラムを書いていますので、理解はしています しかし、正直プログラムのデバグが非常に困難なのです これはやったことが無い人には分からないと思います 何しろ異次元を行ったり来たりするような感覚なのです
前置きはさておき、この Ajaxを用いねばならない、と誤解していたことが、何と file_get_contents()という関数を用いて行うことができるのです そして、そのテスト・プログラムを書いていてはまったのです それは 以下の2つの文の違いになかなか気づかなかった、ということです 皆様方も挑戦して下さい
プログラム A
$context = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => implode( '\r\n', array( 'Content-Type: application/x-www-form-urlencoded' ) ), 'content' => http_build_query( array( 'name' => $name, 'msg' => $msg, ) ) ) ) );
プログラム B
$context = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => implode( '\r\n', array( 'Content-Type: application/x-www-f0rm-urlencoded' ) ), 'content' => http_build_query( array( 'name' => $name, 'msg' => $msg, ) ) ) ) );
Aでは動作するのに、Bでは動作しないのです 「え、一体何が違うの?」 新幹線新横浜駅まで移動中のタクシーの中、ずっと悩みました そして、あと1分で新横浜駅到着、パソコン閉じねば、という時点で 「それはね oと0が間違っている」というご指摘を頂きました そうなのです o (=小文字のアルファベット オー)と 0 (=数字のゼロ)を間違って typingしていたのです
これで解決しました 実際の本体テスト・プログラムの掲載は帰りの新幹線の中でも行います とても良く file_get_contents()関数を理解できるものを掲載しますよ 乞うご期待
ということで、今朝は直接自宅から新横浜経由 – 名古屋駅 そして、名鉄特急に乗り換えて 岐阜県の可児市に出かけ、可児スレンダー・ライブデモンストレーションに参加します ライブ治療の後、お薬の講演があり、その後そのまま鎌倉に戻ります というのも、明日はまたまた朝から久しぶりのモスクワ入りだからです それにしても、file_get_contents()関数を少し理解したのがとても嬉しいですね 新しいステージに登った気分なのです