- TOP
- WEB(26)
- PHP&CGI(3)
- Getで値を渡したいがPHPが使えないサーバにて
Getで値を渡したいがPHPが使えないサーバにて
公開日 2010年11月30日
この記事の内容は備忘録のテイストが濃厚です。
先日、いわゆる色々な物件個別詳細ページがある既存サイトにて。
「この物件(A)について問い合わせる」ボタン をクリックすると
お問い合わせフォームへ飛び、「物件名」の欄には「物件(A)」がすでに入力済みになっている、
という値渡しもの?の制作にあたりまして、
「ああ、GETで値を渡せばOK、、、、 MTとPHPを組み合わせれば、すぐに出来るかな、、、。」
と考えていたところ、PHPが使えないサーバでした。(つД`)ガーン
Perl/CGIの方は使えるサーバだったのでMTと組み合わせ試行錯誤、
Perl超初心者でしたが、なんとかなりました。
ソースは下記(もちろん色々端折ってあります)。
先日、いわゆる色々な物件個別詳細ページがある既存サイトにて。
「この物件(A)について問い合わせる」ボタン をクリックすると
お問い合わせフォームへ飛び、「物件名」の欄には「物件(A)」がすでに入力済みになっている、
という値渡しもの?の制作にあたりまして、
「ああ、GETで値を渡せばOK、、、、 MTとPHPを組み合わせれば、すぐに出来るかな、、、。」
と考えていたところ、PHPが使えないサーバでした。(つД`)ガーン
Perl/CGIの方は使えるサーバだったのでMTと組み合わせ試行錯誤、
Perl超初心者でしたが、なんとかなりました。
ソースは下記(もちろん色々端折ってあります)。
お問い合わせページ(inquire.cgi)
#!/usr/bin/perl @data = split(/&/,$ENV{QUERY_STRING}); foreach $line(@data){ ($name,$value) = split(/=/,$line); $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } #// HTML 出力 print "Content-type: text/html\n\n"; print " #//主要部分を抜粋。ダブルクォーテーションは必ず\でエスケープ。"; #// 終了 exit(0);
物件個別詳細ページ(MTの個別ブログ記事テンプレート)
値をinquire.cgiページへ渡しますよ。
日本語入力だとどうやっても化けてしまったのですが、(サーバの問題?)
英語サイトだったので
まあ問題なしです。乱暴な結論でfinish。
参考にさせて頂いたページ
HTML出力の仕方から学びます。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/pe_kj01.htm
変数格納がわかったような、、、でもエンコードデコードのところで
ライブラリ使って下さい。
って千尋の谷へ落とされます。
http://www.futomi.com/lecture/form/cgilib.html#s3_1
獅子は這い上がらず、原点に戻り初心者のためのPerl的なサイトを探し...その後
完成した!
と思いきや半角空白文字がエンコードされて「%20」に。
http://chaichan.web.infoseek.co.jp/src/perlnote.htm
半角空白やらを置換える正規表現を流用し、(~ s/%([a-fA-F0-9][a-fA-F0-9]) の部分)
上記最後の問題を詰め、完成致しました。
Webプログラム言語の難しさ、理詰めの世界を垣間見た気がしました。 チラっとだけ。
※サムネ画像は自家製カルボ。 スパゲッティコードを示唆したつもり(つД`)?
コメント頂けると喜びます。
この記事を論及・引用、関連記事にして頂けたらありがたき幸せ。
- トラックバック用URL(承認制:nofollow無し)
【次の記事】MTでブログ記事を複製(コピー)するプラグインの比較
【前の記事】MTのページ分割プラグインの違い