現在の日から何日後、と指定するとその日は何年何月
何日、と出てくるような cgi のサンプルはありま
せんでしょうか。
Cookie の有効期限用に使用したいのです。
ネットを検索して実際みつかったのですが、
肝心のソースが公開されていませんでした・・・
ご存知の方がいらっしゃいましたら、よろしく
お願いします。m(__)m

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>現在の日から何日後、と指定するとその日は何年何月


>何日、と出てくるような cgi のサンプルはありま
>せんでしょうか。

これはこれでいいんですが質問して良いですか?

>Cookie の有効期限用に使用したいのです。

普通Cookieの有効期限を設定する方法としては、
現在の日から何日後っていう感じで設定します。
ですので上のようなCGIは必要ないと思いますよ。
どんな使い方を想定してますか?
利用シーンがいまいち見えてこないのですが・・・。
    • good
    • 1
この回答へのお礼

お答えいただき、ありがとうございます。
上記の件、なんとか自己解決いたしました。
有効期限までの秒数の換算、という概念がいまいち
わからないで、先ほどまで色々しらべていました。
お手数おかけしました。

お礼日時:2002/02/25 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QLWPでのCookie取得

LWPでHTTPのクライアントを作成しています。
サーバ側で発行されたSet-Cookieヘッダを取得する方法ですが、
HTTP::Cookieでファイルに取得するのではなく、できれば変数に直接入れたい(ディスクI/Oを発生させたくない)のですが、
そのような手法はあるのでしょうか?

また、Cookieの再利用方法を教えて下さい。
たとえば、一度クライアントを一度起動し、セッションCookieを取得して、
そのCookieをまた別のクライアントに引数などで渡し、その値を利用してアクセスする、
といったようなことです。
毎度毎度ログインをしないで、Cookieだけ使いまわせれば、と思っております。

上記は全部SSL通信上での話です。
(Net::Ssleyを使用してSocketを作成してみたのですが、なぜか失敗してしまう・・・)

Aベストアンサー

responseを取得した後、

my $cookie = $response->header('set-cookie');

で取得できると思います。
(サイトによって'set-cookie'の大文字、小文字の別があるかもしれないので要確認)

逆にCookieをセットしてサーバに送るには、HTTP::Request::Commonオブジェクトを生成してから

$request->header(cookie => '任意の文字列');

でセットできます。

なお、現在のLWPでは、SSLに使うモジュールはCrypt::SSLeayです。
詳しい情報はこちらで。
http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FLWP#i3

Qサンプルの意味

お世話になります。
あるサイトで下記のようなサンプルをみつけました。

-------------------------------------------------------------
use SOAP::Lite;
use MIME::Entity;
my $soap = SOAP::Lite
->uri($NS)
->proxy($HOST);
my $som = $soap->foo();
★foreach my $part (${$som->parts}) {
★ print $part->stringify;
}
-------------------------------------------------------------

実際に動かしてみたのですが"Not a SCALAR reference"エラーで動きません。
実のところあまり意味がわかっていなかったので、どのような動きかを調べてみましたが、★のところがわかりませんでした。

★の部分などは、perlの一般的な書き方だと思っていたのですが、調べた限り意味がわかりません。
これはどういう意味なのでしょうか?ご教授いただけたらと思います。

$som->partsをprintすると、"ARRAY(0xxxxx)"が出力されます。
普通の配列を出力してもARRAY(0xxxx)とは出力されませんよね?これはどういう意味なんだろう・・・

お世話になります。
あるサイトで下記のようなサンプルをみつけました。

-------------------------------------------------------------
use SOAP::Lite;
use MIME::Entity;
my $soap = SOAP::Lite
->uri($NS)
->proxy($HOST);
my $som = $soap->foo();
★foreach my $part (${$som->parts}) {
★ print $part->stringify;
}
-------------------------------------------------------------

実際に動かしてみたのですが"Not a SCALAR reference"エラーで動きません。
実の...続きを読む

Aベストアンサー

> $som->partsをprintすると、"ARRAY(0xxxxx)"が出力されます。
> 普通の配列を出力してもARRAY(0xxxx)とは出力されませんよね?これはどういう意味なんだろう・・・

これは、$som->parts が配列のリファレンスであることを示しています。
Cがわかるならポインタのようなもんだと思ってください。

最近のPerlプログラミングにおいてはリファレンスは
非常に重要な概念ですので、よく調べておくことをお奨めします。

とりあえず
perldoc perlref
で入門レベルの知識は得られます。
#探せば日本語訳もあるでしょう

んで、
>実際に動かしてみたのですが"Not a SCALAR reference"エラーで動きません。

このエラーは

> ★foreach my $part (${$som->parts}) {

ここで出てませんでしたか?
最初に書いたとおり、$som->parts は配列のリファレンスなのに、
スカラーのリファレンスとして解決しようとしているので、

> "Not a SCALAR reference"
「スカラーのリファレンスじゃないわ、ボケっ」
と文句たれてるわけです。
そもそも、for ループの処理対象なので、スカラーがここに置かれるのは
おかしいですね。
写し間違いとかありませんか?

たぶん、@{$som->parts} が正しいと思うんですが。

> ★ print $part->stringify;

こっちはたぶんSOAP使って呼び出したところの
仕様によるんで断言できませんけど、
名前からするとクラスを文字列化してるんじゃないですかね。
要はわかりやすいであろう形式にするメソッドだと思います。

あと、本なら初めてのPerlあたりを読んどくといいんじゃないでしょうか。
日本人の筆者が書いた書籍ではリファレンスを
きちんと説明した本はなかったと思います。

> $som->partsをprintすると、"ARRAY(0xxxxx)"が出力されます。
> 普通の配列を出力してもARRAY(0xxxx)とは出力されませんよね?これはどういう意味なんだろう・・・

これは、$som->parts が配列のリファレンスであることを示しています。
Cがわかるならポインタのようなもんだと思ってください。

最近のPerlプログラミングにおいてはリファレンスは
非常に重要な概念ですので、よく調べておくことをお奨めします。

とりあえず
perldoc perlref
で入門レベルの知識は得られます。
#探せば日本語訳...続きを読む

Qcookieの発行

perl初心者です。
入力フォームやセレクトボックスに入力された文字のcookieを発行して、次回からは入力しなくてもすむように、その入力フォームやセレクトボックスにもとからその文字が入ってる、というよくいろんなサイトでみかけるcookie処理をしたいです。
かなり調べたのですが、全く分からないので、分かりやすく教えてください。

Aベストアンサー

入力フォームをCOOKIEでコントロールするのはわざわざPerlでなくてもJavaScriptのほうが簡単でサーバへもやさしいかと思います。
CGIでなきゃヤダァということなら、
クッキーの設定 → HTTPヘッダ
クッキーの取得 → 環境変数
でCGIに関する文献や検索サイトを探せばすぐに見つかると思います。

Qファイルポインタを使ったサンプル

を紹介してください

< ファイルポインタ > = tell FILEHANDLE ;

ということですが
ファイルハンドルを使ったものは見つける事ができるのですがファイルポインタを使ったサンプルを見つける事ができません

Aベストアンサー

>ファイルポインタを使ってファイルの途中に読み書きするサンプルを紹介してください
だから、ファイルポインタじゃね~っていってんのに!まあ、いいけど。

次のサンプルは、テキストファイルで、CDのタイトルとそのあとトラック番号、曲名、時間が入っているものから、アルバム名を指定して、そのアルバムのデータを一覧するようなものと思って下さい。
data.txt
----------------------------------
title:album1
1:kyokumei1,1:55
2:kyokumei2,2:20

title:album2
1:セーブミー,3:33
2:リードミー,1:09

title:album3
1:フラッシュ,0:10
2:パールの指輪,2:22

------------------------------
sample.pl
-----------------------------
open(DATAFILE,"<data.txt");
while(<DATAFILE>){
if(/title:(.*)/){
$datapos{$1}=tell DATAFILE;
}
}
close(DATAFILE);
while(1){
print "アルバム名を入力して下さい>";
$name = <STDIN>;
chomp $name;
last unless($name); #入力無し(リターンのみの時終了)
open(DATAFILE,"<data.txt");
seek(DATAFILE,$datapos{$name},0);
while(<DATAFILE>){
last if /^\n$/;
print;
}
close(DATAFILE);
}
-----------------------------------------
実行結果
-----------------------------------------
E:\>sample.pl
アルバム名を入力して下さい>album2
1:セーブミー,3:33
2:リードミー,1:09
アルバム名を入力して下さい>album1
1:kyokumei1,1:55
2:kyokumei2,2:20
アルバム名を入力して下さい>album3
1:フラッシュ,0:10
2:パールの指輪,2:22
アルバム名を入力して下さい>album1
1:kyokumei1,1:55
2:kyokumei2,2:20
アルバム名を入力して下さい>

E:\>
-----------------------------------------
解説:
テキストファイルをDB的に使うために、それぞれのアルバム位置を最初に読み出しておいて、その位置を記憶しておきます。
指定されたアルバム名でその位置からデータ区切りである空行までをプリントします。
全部のデータをメモリに読み込んでおくこともできますが、
このようにすることで、メモリの消費を少なくでき
大きいデータファイルに対しても、少ないメモリで動かすことができるというメリットがあります。<この場合の話。
これは、あくまでこういう使い方もできるという一例に過ぎないことに注意。

>ファイルポインタを使ってファイルの途中に読み書きするサンプルを紹介してください
だから、ファイルポインタじゃね~っていってんのに!まあ、いいけど。

次のサンプルは、テキストファイルで、CDのタイトルとそのあとトラック番号、曲名、時間が入っているものから、アルバム名を指定して、そのアルバムのデータを一覧するようなものと思って下さい。
data.txt
----------------------------------
title:album1
1:kyokumei1,1:55
2:kyokumei2,2:20

title:album2
1:セーブミー,3:33
2:リード...続きを読む

Qcookieについて教えてください。

iswebのサーバーを借りています。
cookieの書きこみを下のような記述を試しています。

($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time + 60*60*3);
@mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');
$date = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec);
$mydata = "abc";

print "Set-Cookie: AAA=$mydata; expires=$date;";
print "Content-type: text/html\n";
print "\n";
print "<meta http-equiv="Set-Cookie" content="AAA=$mydata; expires=$date">";
以下いろいろつづく。

この時にSet-Cookie: AAA=$mydata; expires=$date;";を残すとエラーが出てmetaを残すと動きます。

自分のパソコンの中では、両方動きます。

そこで教えていただきたいのですが、
javascriptのdocument.cookie、perlのSet-Cookie、metaのSet-Cookieの違いを教えてください。

iswebのサーバーを借りています。
cookieの書きこみを下のような記述を試しています。

($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time + 60*60*3);
@mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut');
$date = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec);
$mydata = "abc";

print "Set-Cookie: AAA=$...続きを読む

Aベストアンサー

まず先にエラーの原因ですが、先頭の「Set-Cookie~」の行に改行が無いのが原因では?

> javascriptのdocument.cookie、perlのSet-Cookie、metaのSet-Cookieの違いを教えてください。

結果的な違いは特にありません。javascriptの場合はページ表示後に参照できることがありますが、ブラウザでjavascriptをオフにしていると使えないので、なるべくなら避けた方がいいです。

ちなみにperlをお使いなら CGI::Lite というモジュールを使うと便利です。
$cgi->print_data
などと書くだけで、面倒な書式だのをすべてやってくれます。


おすすめ情報