План запросов Informix

$_SERVER['REMOTE_ADDR'] может не на самом деле содержать реальные клиентские IP-адреса, поскольку это даст Вам адрес прокси для клиентов, соединенных через прокси, например. Это может быть тем, что Вы действительно хотите, тем не менее, зависящий что Ваше выполнение с дюйм/с. Чей-то частный адрес RFC1918 не может принести Вам пользы, если Вы, говорят, пытаясь видеть, где Ваш трафик порождает из или помнит, какой IP пользователь, в последний раз соединенный от, где общедоступный IP или шлюза NAT прокси мог бы быть более соответствующим хранилищу.

Существует несколько HTTP-заголовков как X-Forwarded-For который может или не может быть установлен различными прокси. Проблема состоит в том, что это - просто HTTP-заголовки, которые могут быть установлены любым. Нет никакой гарантии об их содержании. $_SERVER['REMOTE_ADDR'] фактический физический IP-адрес, из которого веб-сервер получил соединение и что ответ будет отправлен в. Что-либо еще - просто произвольная и добровольная информация. Существует только один сценарий, которому можно доверять этой информации: Вы управляете прокси, который устанавливает этот заголовок. Значение, только если Вы знаете 100%, где и как заголовок был установлен, должно Вы учитывать его для чего-либо важного.

Однако вот некоторый пример кода:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

Примечание редактора: Используя вышеупомянутый код имеет последствия безопасности. Клиент может установить всю Информацию заголовка HTTP (т.е. $_SERVER['HTTP_...) к любому произвольному значению это хочет. Как таковой это намного более надежно для использования $_SERVER['REMOTE_ADDR'], поскольку это не может быть установлено пользователем.

От: http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html

5
задан Diego Mijelshon 21 July 2009 в 00:27
поделиться

2 ответа

В вашем SQL вы можете:

  • выполнить SET EXPLAIN ON; Это будет действовать до тех пор, пока вы не отключите или не выполните эквивалентное OFF ] заявление. Работает, по крайней мере, до версии 7, может даже работать в версии 5.
  • добавить директиву оптимизатора (начиная с версии 9), например SELECT {+ EXPLAIN} foo, bar FROM ... . Вы также можете использовать SELECT - + EXPLAIN \ n foo bar ... в зависимости от точного синтаксиса вашего SQL (вы не можете закрыть комментарий - он длится до конца строки). Этот вариант действует только для этого оператора SELECT .

Где записывается файл объяснения, во многом зависит от ОС сервера базы данных. Это может быть домашний каталог вашего пользователя или каталог в $ INFORMIXDIR .

4
ответ дан 15 December 2019 в 01:08
поделиться

Какая версия Informix?

Для [ SET EXPLAIN ] есть некоторая информация, относящаяся к v10.

0
ответ дан 15 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: