Is $_SERVER['REMOTE_ADDR'] always isset()?

2019-01-27 17:20发布

问题:

I want to store ip2logn($_SERVER['REMOTE_ADDR']) values in the db for some reason.

Practically, as I see, $_SERVER['REMOTE_ADDR'] always has a value. Could anybody confirm it is always set for any user and can't be not set by any reason?

The reason I ask it is to be sure I should choose NOT NULL instead of DEFAULT NULL for the column in MySQL Table.

So, I can store ipaddressvarchar(15) NOT NULL (yes, NOT null) or ip2longaddress int(11) NOT NULL, and the second option is, as I understand, the most preferable.

Thank you.

回答1:

It will only be set if you're running the script through a webserver. If you're running PHP in CLI (command line) mode, REMOTE_ADDR will not be set, as there is no remote address for a command line script.



回答2:

$_SERVER['REMOTE_ADDR'] is always set even if you are working on localhost and can't be unset except you programmatically removed it And if you saved it in INT there would be no dots so you should save it as varchar



回答3:

Could anybody confirm it is always set for any user

yes. I can.



回答4:

$_SERVER vars are ALWAYS SET. Well, unless you have some odd php setup.