2011-11-18 15 views
10

何らかの理由でip2logn($_SERVER['REMOTE_ADDR'])の値をデータベースに保存します。

具体的には、わかるように、$_SERVER['REMOTE_ADDR']には常に値があります。誰でもそれはいつもどんなユーザにも設定されていることを確認でき、どんな理由でも設定できないのですか?

私が尋ねる理由は、DEFAULT NULLの代わりにNOT NULLをMySQLテーブルの列に選択することです。

したがって、ipaddress varchar(15) NOT NULL (yes, NOT null) or ip2longaddress int(11)NOT NULLを格納することができます.2番目のオプションは、わかっているとおり、最も好ましい方法です。

ありがとうございます。

+0

ip2longはIPv6アドレスでは機能しませんので、データベースで空の値を指定する方がよいでしょう。 –

答えて

14

ウェブサーバーからスクリプトを実行している場合にのみ設定されます。 CLI(コマンドライン)モードでPHPを実行している場合は、コマンドラインスクリプトのリモートアドレスがないため、REMOTE_ADDRは設定されません。

2

$ _SERVER ['REMOTE_ADDR']は、ローカルホストで作業していても、プログラムで削除する以外は設定解除できません。常に設定してください。 INTに保存した場合、ドットは保存されませんvarchar型

2

として誰もがそれは常に任意のユーザ

はいに設定されている確認できました。できます。

-1

$ _SERVER変数は常に設定されています。まあ、あなたはいくつかの奇妙なPHPのセットアップがない限り。

+0

すべてのvarsについて言わないでください。 -1もし可能ならば –

+0

Obi Wanを説明してください... – frustratedtech

+1

@David: 'REQUEST_URI'はCLIモードで実行されているときは設定されていません。 $ _SERVER自体は常に存在しますが、内容はオペレーティング環境に完全に依存します。 –

関連する問題