
所々疑問があるので、よければご教授願います。
まずこのサイトを見てもらえればと思います。http://ash.jp/~hasimoto/zakki/new_jsck.htm
弄ってるコードはここのを参考にしていて、同じ状態なんですが、以下疑問点です。
(1)「ckary = document.cookie.split("; ");」と「ckary = ckstr.split("%00");」の違いはなんなんでしょうか?
前者が「配列の各要素に代入」とありますが、その後のループ処理を除いてunescape変換させたとき、
配列一つしか表示されない事・逆に("%00")の場合は三列表示される事に違和感を感じるのですが、どういう事なんでしょうか?。
(2)1から続きます。名前を抜くループ処理を除いたとき、配列1のしか名前が出ないのは何故なんでしょうか?
これだと各要素に対してする処理の必要性・「name=文字列」「name2=文字列2」のイメージが混乱するのですがどういう事なんでしょうか?
(3)「exp.setTime(exp.getTime()+1000*60*60*24*1);」の最後尾の1の必要性
(4)「if (ckary[i].substr(0,8)・・・break;」のbreak;の必要性
以上上から疑問度の高い順です。
どれかの点を教えてもらうだけでも嬉しいので、回答よろしくお願いします。
No.2ベストアンサー
- 回答日時:
(1)
「;」は通常クッキーで利用されている区切り文字、
「%00」は、このスクリプトの作者が独自に用いているサブの区切り文字
普通なら、 usr=○○○;eml=◇◇◇;url=△△△; とでもするところを、
ASH_jsc=○○○%00◇◇◇%00△△△;
みたいにして一つのデータとして保存している。
(なぜそうしているのかは不明)
(2)
>名前を抜くループ処理を除いたとき
というのが、何を意味しているのかわかりません。
(3)
この計算の場合は「1」はあってもなくても同じ。
1週間なら、1のところが7になって、 1000*60*60*24*7 となるので
1日ということを明示しているのだろう。
1000*60*60*24 も、86400000 と書いてもよいけれど乗算形式で
書いてある方がわかりやすかったりするのと同じ。
(4)
探しているデータが、「ASH_jsc=」に格納されているのだから、見つけたところでループを抜け出している。(抜けないと、違う値になってしまう)
全部を調べても見つからない場合も、最終的にはループを抜けるので、ループを抜けたところで、見つかったのか見つからなかったのかを判定する必要があるはずだが、サンプルのコードでは省略されている。
(何らかの理由でクッキーが破壊されたりしていた場合、予定するデータと違う値が混入したり、エラーになったりする可能性がある。)
(おまけ)
toGMTString() → toUTCString()
escape → encodeURI() 、 encodeURIComponent() とか
詳細にありがとうございます、とても参考になりました。
おまけの情報含めさっそく活用してみようと思います。
回答ありがとうございました。
No.1
- 回答日時:
(1) %00 は区切り記号に使わないほうがいいよ。
ついでに (un)escape は廃止されてる。∴参照先はあまり参考にしないほうがよいのでは?(3) 期限が 1日であることを強調するためでしょう。
ついでに expires=" + exp.toGMTString(); は非推奨とされ、Date#toUTCString(); が推奨されています。
(4) while を抜けるためのもの。
参考URL:http://www.studyinghttp.net/cookies
回答ありがとうございます、参考になります。
そう言われれば参照先の情報1999年と古いですね、他のも当たってみようかと思います。
参考URLもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UWSCの終了の仕方
-
excel2000のVBAでループ内で...
-
GIFアニメをループさせたくない
-
エクセル 数値の分解と展開
-
「人を傷つけることは悪いこと...
-
ループ結線の調査方法
-
ごめんなさい 応用てきだとおう...
-
Visual BasicのUserFormが閉じ...
-
配列にaaaからzzzまでの17576(2...
-
クッキーの処理
-
ループについて教えてください...
-
隣接交換法のアルゴリズムについて
-
ループを回すという意味は何で...
-
プログラミングについて int i,...
-
C言語でファクト関数を使わずに...
-
繰り返し処理の方法
-
データベースをEOFまでループさ...
-
ExcelVBA FindNextを使用して条...
-
VBAでln関数の計算
-
マジックテープ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
範囲指定したセルを1つずつ飛...
-
vb.netです。2次元配列の要素を...
-
VBAで3秒だけ時間を止めたい
-
エクセルの当番表を作っていま...
-
UWSCに制限時間を付けたいです
-
DOSコマンドのループ内のTIMEコ...
-
VBAでの一時停止と再開の方法
-
CSVファイルの特定の行だけを読...
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBA for i=1 to lastrow
-
Do whileでExitせず、ループの...
-
VBA Boxが空白の場合のメッセー...
-
vb.netからエクセル関数書き込み
-
イベントの発生を待つ
-
乱数の桁数指定、または範囲指定。
-
エクセル関数で1〜12の数字がル...
おすすめ情報