- 【PHP】下らねぇ質問はここに書き込みやがれ 2©2ch.net
749 :デフォルトの名無しさん[sage]:2015/10/07(水) 22:10:07.06 ID:G4XQLQ5p - >>748
タイムスタンプって、ある事象が起きた時刻のことだよ。 ここで言えば回答を受け付けた時刻で、たとえば time() で取れる。 time の値は一見時刻に見えないただの数値で、この数値のまま記録して経過時間を判別することもできるけど、 処理系への依存性を減らしたりデータファイルの視認性を上げるためにおれなら日時形式にフォーマッティングして記録する。 2015-10-07 21:57:15 みたいな。 アンケートを受け付けた時、重複検索用に次のようなレコードを出力にしておき、 <タイムスタンプ>¥<IPアドレス>¥<UA> チェック時には 現在時刻-判定時間 の「判定時刻」を求め、その判定時刻より大きいタイムスタンプを持つ行を検索し、IPアドレスとかUAをチェックする。 重複検索用のファイルはたまに判定時間を過ぎた古いレコードを削除してやるといい。
|
- 【PHP】下らねぇ質問はここに書き込みやがれ 2©2ch.net
751 :デフォルトの名無しさん[sage]:2015/10/07(水) 22:18:22.91 ID:G4XQLQ5p - レコード形式書き直し
<タイムスタンプ>¥t<IPアドレス>¥t<UA> ¥t はタブね。 カンマでもいいけど UA に使われそうにない ¥t がいい。 が、どっちにしても UA に区切り文字が含まれることを想定して、文字列は置換かけて利用して。 フィールド区切りを ¥t、レコード区切り(改行)を ¥n にするなら、UA は必ず ¥t や ¥n、ついでに ¥r をスペースに置換したものを利用する。 これやらないとセキュリティホールになりえるから抜け目なく。
|
- 【PHP】下らねぇ質問はここに書き込みやがれ 2©2ch.net
755 :デフォルトの名無しさん[sage]:2015/10/07(水) 23:55:06.06 ID:G4XQLQ5p - >>754
大元がdb使う話じゃないからそれに合わせたまでだよ。 今時 db 使えない環境も無いだろうが、順を追って覚えていく上でもファイルベースの処理はやって損はないでしょう。 環境についても、別に既存データを別環境に引っ越すことを狙ってるわけじゃないからロケールは不要だし、そこら辺まで意識したいなら UTC にでもすればいい話。 環境依存性の話は、どちらかと言えば時刻の取り扱いが異なる言語やOSへ引っ越す場合についての話。 その処理系で返される値がintじゃなかったら?時刻の新旧と値の大小の対応が不連続な処理系だったら?という話だよ。 2038年問題にどう対処されるか、負のタイムスタンプが何を表すか、そこら辺に違いが出る可能性があるでしょ。 日付と時刻でフォーマッティングしとけば、そこら辺の違いを吸収しやすくなりポータビリティが上がるでしょ。
|