![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
さらに調べていたのですが、どうやら登録されているURLのデータに「=」が含まれていると
上手くいかないことが解りました。
以下のスクリプトで保存及び抽出データに「=」が含まれていても上手く処理する方法は無いでしょうか。
#*****************************************************************************
sub plink{
#パーソナルリンク
&error("現在、パーソ\ナルリンクは使用出来ません。") if !($personallink);
my ($a1,$a2,$a3,%temphash);
for $a1(split(/; */,$ENV{'HTTP_COOKIE'})){
($a2,$a3) = split(/=/,$a1);
$a3 =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
if ($a2 eq 'plink_list'){
foreach(split(/<>/,$a3)){
$temphash{$_}=1;
}
last;
}
}
&filelock("linkdata");
open (IN,"$linkdata");
while(<IN>){
if ($temphash{(split(/<>/,$_))[15]}){
$totalct++;
push(@site,$_) if ($totalct >= $startnum) && ($totalct <= $endnum);
}
}
close (IN);
&fileunlock("linkdata");
$endnum = $totalct if $totalct < $endnum;
$startnum = 0 if $totalct == 0;
$action = "パーソ\ナルリンク";
&searchbar("","<option value=\"\" selected>$searchtitle\n");
&databar();
if ($totalct != 0){
$resultmessage = "$totalct件のリンクが登録されています。<br /><br />";
&linkbar("act=$act&line=$line&indi=$indi");
&siteindicate("",@site);
}else{
$resultmessage = "登録が無いか、クッキーが有効になっていません。<br /><br />";
$linkbar = $siteindicate = "";
}
&html_output;
}
#*****************************************************************************
sub plink_add{
#パーソナルリンク追加
&error("現在、パーソ\ナルリンクは使用出来ません。") if !($personallink);
&get_cookie;
$plink_list.=$url."<>" if $plink_list !~ /\Q$url\E/;
&set_cookie;
&searchbar("","<option value=\"\" selected>$searchtitle\n");
$linkbar = $siteindicate = "";
$action = "パーソ\ナルリンク追加";
$resultmessage = "<b>".&sitename_get."</b> をパーソ\ナルリンクに追加しました。<br />";
&html_output;
}
#*****************************************************************************
sub get_cookie{
#クッキー取得
my ($a1,$a2,$a3);
for $a1(split(/; */,$ENV{'HTTP_COOKIE'})){
($a2,$a3) = split(/=/,$a1);
$a3 =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
if ($a2 eq 'plink_list'){
$plink_list = $a3;
last;
}
}
}
#******************************************************************************
sub set_cookie{
#クッキー設定
$plist_link =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
print "Set-Cookie:plink_list=$plink_list; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
}
#****************************************************************************
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
サイトを運営するってなら
自分で保守すべきだと思うのだが・・・
>以下のスクリプトで保存及び抽出データに「=」が含まれていても上手く処理する方法は無いでしょうか。
みてわかるように,セットしたCookieが項目の区切りとして
「=」を使ってて,それを解読するのに「=」でsplitしてるから
URLに「=」があれば誤動作するのは自然なこと.
#ついでにいうとexpireの日付が決めうちなのも個人的には・・・
だから区切りにURLでは使わないものを使って
それでsplitすればいいんでしょう.
セットするCookieのデータ構造を考え直すしかないんでは?
ご回答ありがとうございます。
その後、さらに調査していたのですが、登録URLデータに記号の「=」及び「&」が
含まれる場合に不具合が発生することが解りました。
取り敢えずの応急処置として、上記の場合にはパーソナルリンクを
使用できないようにして対応しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルをディレクトリ分配の...
-
openした後、closeしないでプロ...
-
perlのプログラミング 部分入れ...
-
Perlのエラーについてご教授く...
-
画像が表示でnull; this.src
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字...
-
ラズベリーパイ初心者です。 ラ...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字...
-
perlをバージョンアップしたら...
-
Wallpaper Engineでおすすめの...
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
Perlで時間の計算
-
このファイルを開く方法で困っ...
-
TeraPadエディターの操作方法に...
-
cgiでサーバーにファイルを追加...
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラ...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授く...
-
こんにちは ブラケッツでプログ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報