※ ChatGPTを利用し、要約された質問です(原文:safariで買い物かごに残らない)
Safariで買い物かごに残らない
このQ&Aのポイント
Safariを使用していると、日本語表記の商品が買い物かごに入っても残らない問題が発生しています。
英数表記の商品は問題なく買い物かごに残りますが、日本語表記の商品は次の買い物やかごの確認時に消えてしまいます。
CGIが古いため、問題が発生している可能性があります。ただし、一時的な対応策として、このCGIを使用し続ける必要があります。
ある買い物カゴCGIを使用していますがsafariだと日本語表記の商品だけ買い物カゴに入れても残りません。
次の買い物をしたり買い物カゴを確認した時に入っていません。英数表記の商品は大丈夫です。
CGIそのものが古いので替えるのがベストなんですが、諸事情により当面これを使用しなければいけないので何とか御教授お願い致します。
多分下記の部分が問題だと思うのですがCGIなどは全くの素人なので分かりやすくお願い致します。
***********************************************************
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# 記録するデータはsjisに統一する
&jcode'convert(*name,'sjis');
&jcode'convert(*value,'sjis');
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/://g;
$value =~ s/,//g;
$FORM{$name} = $value;
}
$soryo = $FORM{$soryo};
#--------#
$cookies = $ENV{'HTTP_COOKIE'};
@cookie_pairs = split(/;/,$cookies);
foreach $cookie_pair (@cookie_pairs) {
($name, $value) = split(/=/, $cookie_pair);
$name =~ s/ //g;
$DUMMY{$name} = $value;
}
$goods_next = 0;
foreach $goods_num (1 .. $#cookie_pairs + 1) {
$cookie_name = 'CARGO_'.$goods_num;
if ($DUMMY{$cookie_name} =~ /^goods:/ || $DUMMY{$cookie_name} =~ /^removed/) { $GOODS[$goods_num] = $DUMMY{$cookie_name}; $goods_next = $goods_num + 1; }
}
#--------#
***********************************************************
お礼
御回答頂きありがとうございます。 全く見当違いをしていたんですね。 一週間程考えていたんですけどうまく行かなかったので丸投げ的な質問をしてしまいました。やはり文章にそれが出ていたようです。 頂いた回答を参考にもう少し努力してみます。 ちなみに文字化けの件は以前に修正して大丈夫です。