Perlコーディング

fromオブジェクトのpostとget

2007年12月10日
fromに入力した値や、URLに引数として付加した値(クエリ情報と言うようです)は、どのような形で受け取れるのでしょうか。

PHPの場合、変数に値が代入されて渡ってきます。PHP5ならば、$_POSTや$_GETに配列として代入されています。
例えば、
<form method="post">
<input type="text" name="hensuu" value="">
<input type="submit" value="OK">
</form>
の場合、テキストに入力された値は、$hensuu(または$_POST['hensuu'])で参照できます。
$_POSTと$_GETが扱いづらければ、
extract($_POST);
で$_POSTの添え字を変数名とした変数にその値を入れてくれます。
例えば、$_POST['mode']='edit' なら、$mode='edit' となります。便利~


ところが、Perlはこのような機能はなく、自分で何とかしなければいけません。
$ENV{'REQUEST_METHOD'}に【POST】で渡ってきたのか、【GET】で渡ってきたのか入っています。
POSTの場合、read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); で$bufへ、
GETの場合、$buf = $ENV{'QUERY_STRING'};
で値を受け取れます。

受け取った値は、
hensuu1=value1&hensuu2=value2&・・・
の形式です。この値は、エンコードされているので、デコードします。
$char =~ tr/+/ /;
$char =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
($char =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1) )/eg; の方が一般的だとか。理由はまだ理解にいたらず・・)

まずは【&】で分解します。
hensuu1=value1
hensuu2=value2
 ・
 ・
 ・

次に【=】で分解します。
これを配列などに入れてやれば利用しやすくなります。
$in{'hensuu1'} = value1
$in{'hensuu2'} = value2

これでやっと変数名とその値が得られます。めんどくさっ。


探せばライブラリがどこかにあると思うのですが、サンプルで貰ったコードを利用させてもらってます。
2007年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード
コメント
パトカーってハチワレ
2018-10-15 16:15:11
パトカーってハチワレ
2018-10-15 16:12:42
Tweet