
print "Content-type: text/html\n\n";
#クッキーがないときの動作。
#クッキーがない場合クッキーを期限1日で発行する。
if(!$ENV{'HTTP_COOKIE'}){
#クッキーが存在する場合の動作
print "クッキーないない<br>\n";
#1時間先のグリニッジ標準時を取得し、weeksとmonthsを定義
($gmSec, $gmMin, $gmHour, $gmMDay, $gmMon, $gmYear, $gmWDay, $gmYDay, $gmIsDst) = gmtime(time + (3600 * 24));
$gmYear += 1900;
@weeks = ('Sun', 'Mon', 'Tue', 'Web', 'Thu', 'Fri', 'Sat');
@months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
#クッキーの有効期限をその日の1日後までにする
$limitTime = sprintf("%s\n, %02d-%s-%04d %02d:%02d:%02d GMT",$weeks[$gmWDay], $gmMDay, $months[$gmMon], $gmYear, $gmHour, $gmMin, $gmSec);
#クッキー発行
print "Set-Cookie: myBool=1; expires=$limitTime\n";
print "\n";
} else {
#クッキーがあった場合の動作。クッキーありと表示するだけ。
print "クッキーあり。";
}
クッキーの発行を見ると
print "Set-Cookie: なんたらかんたら";
らしいのですが、printでこう書くだけでクッキーが発行できたことになるのですか?
実行しても、ただ単に例えば
Set-Cookie: myBool=1; expires=Mon , 08-Aug-2005 12:11:43 GMT
というようになるだけです。
初心者でまだ1度もクッキー作成成功してないのですが何がいけないのでしょうか。
No.1ベストアンサー
- 回答日時:
とりあえず気づいた問題は
print "Content-type: text/html\n\n";
の、後にcookieの発行をしていることです。
cookieはhttpヘッダに乗せてブラウザに送信する必要がありますが
print "Content-type: text/html\n\n";
この行の最後の\nでヘッダの終わりを示してしまっているのでprint Set-Cookie:・・・はヘッダの一部ではなく、内容と解釈されてしまいブラウザは表示してしまうのです。
以下のように書いたような状態になってしまっています。
print <<HTM
Set-Cookie: myBool=1; expires=Mon , 08-Aug-2005 12:11:43 GMT
<html>
<head>
~
対処としては
print "Content-type: text/html\n";
#cookie発行
print "\n";#ヘッダの終わり
#htmlのprint
とするか、
print "Content-type: text/html\n";
この行をcookie発行処理の後ろにまわす必要があります。
今まではhttpヘッダ(参考URL)を意識せずにまじないのように
print "Content-type: text/html\n";
を書いていたかもしれませんが、CGIを扱う以上はこれを意識したほうがベターです。
参考URLも読んでみてください。
参考URL:http://www.rfs.jp/sitebuilder/perl/03/03.html,ht …
まじないのように書いてました・・。
今までは
print "Content-type: text/html\n";
が
<meta http-equiv="Content-type" content="text/html">
に対応しているということも知りませんでした・・。
しかも
print "\n";(\nが2連続)でmeta記述を終わりHTML記述になることも知りませんでした。
Perlの入門サイトでここの説明省略してるところ多sg!!
おかげさまでこれからはきちんとした考え方でPerlスクリプト組めそうです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Excel(エクセル) Googleスプレッドシートで、あるセルの値に応じて行を自動挿入したい 急いでいます! くわしい方、 3 2023/03/06 19:05
- その他(料理・グルメ) お客さんからもらった手作り菓子を他の客に配ること 2 2022/12/03 00:36
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(料理・グルメ) クッキーを作る時、オーブンとトースターでは作り方が変わるんですか? 家にトースターしかないのですが、 6 2023/08/23 23:02
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- サーバー クッキーをサーバー側で管理することで攻撃に備える 1 2022/08/11 03:49
- お菓子・スイーツ <至急> ブラウニーの上にクッキーを載せるクッキーブラウニーを作ろうと考えています。 ですが、材料を 1 2023/02/27 15:58
- お菓子・スイーツ 薄力粉で作ったクッキーもち粉で作ったクッキーの違いはなんですか? 2 2022/05/31 22:59
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
携帯用のダウンロード配信
-
呼び出し元にデータを返す
-
クッキーの基礎的なことについて
-
セットされているCookieの内容...
-
PerlでHTTPヘッダの\\nを外すと...
-
VC++でCORBAを使用するには
-
VBAでExcelのヘッダーに文字列+...
-
サイト構築について
-
cgi-lib.plのオフラインでの使用
-
a.cgi → b.cgiへデータの受渡...
-
ファイルの転送。
-
月の第一週とは
-
エクセルで毎月第2週日の水曜日...
-
socket使用時の環境変数(REMOT...
-
自作のCGIの処理でお尋ねしたい...
-
BASE64でエンコードしてPOSTし...
-
cgiで拡張子.cgiと拡張子.pl...
-
週2回のペースって だいたい何...
-
エクセルで相対パスの書き方を...
-
毎○曜日って、使いますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストコントロールの列幅を固...
-
VBAでExcelのヘッダーに文字列+...
-
[C#]ListView一覧表示時の幅設...
-
AccessVBAで「このフィールドに...
-
ヘッダのinclude順
-
メールをPDF化する際に、ヘッダ...
-
IrDA準拠のTX/RXヘッダとは
-
ルータでのMTU、MSS設定値の検...
-
関数ヘッダ?
-
perlでHTTP Request Headersの...
-
フリーメールでヘッダ情報を読...
-
HTTPヘッダの大きさ
-
LinuxでRTPヘッダを作りたいの...
-
HTTPヘッダの取得方法
-
バイナリファイルのアップロー...
-
ftpでのネットワークバイトオー...
-
Cookieがクリアされない
-
ping送信時のヘッダについて
-
HTTPリクエストがネットワーク...
-
リダイレクト
おすすめ情報