- PR -

perl でクッキー操作

1
投稿者投稿内容
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-09-11 14:26
(丸投げかも?)
perl を使わなければならなくなり、以下のことを悩んでいます。
1.クッキーが複数焼かれている。
2.http get メソッドでデータが渡される
3.get メソッドでは name=value1, data=value2(value2 は数字) のペアが渡される。
4.クッキーはvalue1 で管理され、3のvalue1 とクッキー上のデータがマッチしたら
  クッキーの第二データに3のvalue2 を加える。なければ、新しく3のvalue1,value2 の
  ペアでクッキーを焼く。

といったものですが、perl の経験がなく、どこから手をつけていいかわからないので
アイデアの元でもあればサンプル等が転がっていないでしょうか?

つまり既存クッキーが
("v1", 1),("v2",2), ("v3",1)
とあり、get の値が name="v2"&data=3 なら
("v1",1),("v2",5),("v3",1) をつくり
get の値が name="v4"&data=3 なら
("v1", 1),("v2",2), ("v3",1),("v4",3) を作るというものです。

丸投げというお恥ずかしい限りなのですが、perl未経験の上、明日納期という
情けない状況下であり、助けて頂けたらありがたいのです。
よろしくお願いできませんでしょうか?
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-09-11 14:36
Perlは経験無いので自分だったらの場合、

1. Perlの構文は分かるのか
2. クッキーを操作する関数、または取り出し方と書き出し方は
3. GETパラメータの値の取得方法は

となって、

1. Perl 初心者やPerl 勉強で検索してヒットしたページをひたすら読む
2. Perl クッキーで検索してヒットしたページを読む
3. Perl POST GETで検索してヒットしたページを読む

って流れですかね。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-09-11 14:52
Perlの構文がサッパリ・・というようだと難しいかもしれませんが、普通の掲示板の類でもcookieを使っていますので、apeboard+とかのソースを参考にした方が早いかもしれません。

#あるいは流用とも言う(おい

get_cookie()とかの関数が定義されてるハズです。

これだけではあんまりなので追記(汗

cookieの値は $ENV{'HTTP_COOKIE'}に入ってきます。セットする方は自前でhttpヘッダー(Set-Cookie: 〜)を出すことになります。当然他のHTTPヘッダー(Content-type:)より前に出力しないといけません。

[ メッセージ編集済み 編集者: shimix 編集日時 2006-09-11 14:57 ]
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-09-11 14:54
引用:

想馬さんの書き込み (2006-09-11 14:36) より:
Perlは経験無いので自分だったらの場合、

1. Perlの構文は分かるのか
2. クッキーを操作する関数、または取り出し方と書き出し方は
3. GETパラメータの値の取得方法は

となって、

1. Perl 初心者やPerl 勉強で検索してヒットしたページをひたすら読む
2. Perl クッキーで検索してヒットしたページを読む
3. Perl POST GETで検索してヒットしたページを読む

って流れですかね。



私でもそのように指示するでしょうね。しかし明日の納期には絶対間に合わないといけない
ということと、今朝問題が発覚し、私に振ってきたということで困り果てています。
PMでアドレス開示していただけたら、私のお小遣いの範囲で少しくらい払ってもいいです。
私自身別件の明日納期(取り説等)を抱えており、抜き差しならない状況なのです。
皆様はお気楽な立場でまったく問題はありませんし、掲示板でこのようなお願いはルール違反
に近いことも承知しています。
しかし、私はあせりまくりと言う状況をお察しください。
何とかお願いします。

[ メッセージ編集済み 編集者: うえだ 編集日時 2006-09-11 14:59 ]
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-09-11 15:06
#phpはダメですよね(苦笑

Perlは普段書きませんが、ソースをかき集めればご希望の動作程度が検証できるモノは作れると思います。今夜書いてみようかな・・って言ってると、すぐに先を越されそう(汗

書き込むcookieの有効期限は「ブラウザを閉じるまで」でいいんでしょうか?

[ メッセージ編集済み 編集者: shimix 編集日時 2006-09-11 15:09 ]
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-09-11 15:12
引用:

shimixさんの書き込み (2006-09-11 15:06) より:
#phpはダメですよね(苦笑

Perlは普段書きませんが、ソースをかき集めればご希望の動作程度が検証できるモノは作れると思います。今夜書いてみようかな・・って言ってると、すぐに先を越されそう(汗

書き込むcookieの有効期限は「ブラウザを閉じるまで」でいいんでしょうか?

[ メッセージ編集済み 編集者: shimix 編集日時 2006-09-11 15:09 ]


有効期限は20分を考えていました。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-09-11 15:16
引用:

うえださんの書き込み (2006-09-11 15:12) より:

有効期限は20分を考えていました。

明日納期なら、あまり「やり直し」の時間も取れませんね(書替え程度が出来るならOKですが・・)。
とりあえずPMでアドレスは送っているので「詳細仕様」があれば教えてください。

このあたりの書替え程度は出来ないとあとが困るとは言えるんですが・・
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-09-11 16:18
コード:
#!C:/Perl/bin/perl
use CGI;
$cgi = new CGI;
$pname = $cgi->param( 'name' );
$pdata = $cgi->param( 'data' );

$flag = 0;

foreach (split(/;/, $ENV{'HTTP_COOKIE'})) {

  ( $name, $value ) = split(/=/);
  
  if ( $name == $pname ) {
    $setCookie = "Set-Cookie: ". $name. "=". ($pdata + $value). ";\n\n";
    $flag = 1;
  }
}


if ( 0 == $flag ) {
  $setCookie = "Set-Cookie: ". $pname. "=". $pdata. ";\n\n";
}

print "Content-type: text/html\n";
print $setCookie;


見よう見まねで作ってみたんですがこういう感じでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)