| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
■ MySQLにIPアドレスを記録する |
とかのSQLを投げるコードを書いてたら、ハナで笑われました(涙
「なにコレ? フツーロングIPでしょ(^^;)」
ロングIP…?? 初めて聞く言葉なので、とりあえず調べてみることに。
はぁ成る程。32ビットなIPアドレスの値を、そのまま10進数で書く書き方があるんですな。ということで、
というコードを書いたら、更に笑われることに(泣
「PHPならip2long使えば…?(^^;)」
どうやら自分で計算しなくても、PHPにはip2lomgとかlong2ipといった専用の関数が、ちゃんとビルトインで用意されてる模様(T_T)
結果>
3393393515
202.67.19.107
opt-202-67-19-107.client.pikara.ne.jp
値の桁数が多すぎるせいか、引き算とか挟まないとちゃんとした値が出ない→ちとめんどくさいけど、とりあえず動くことは確認しました。
ちなみにMySQLに格納するのであれば、MySQLにINET_ATONという関数が用意されてるので、
でいけるみたいです。確かにコレはラクチンだし、データが嵩張らなくて良い感じかも(^_^)
なお、こうしてロングIPを記録するカラムは32ビットなINT型で構わないんすが、
とかして符号なし整数(unsigned)にしとかないと、桁数溢れで値が化けました。要注意(^_^;)
| 関連IT用語 by e-Words |