#1
12 сентября 2011 в 16:36
Вопрос к разработчикам. На одном из хостингов неверно определяется IP пользователей. Подскажите каким скриптом обрабатывается определение IP, чтобы попробовать разобраться в чем дело.
#2
12 сентября 2011 в 16:45
Наверняка у того хостера стоит какая-нибудь глючно настроенная связка Nginx + Apache. А какие IPшки он выводит? У всех разные или какой-то один определенный?
/** * Обновляет данные пользователя * @return bool */ public function update() { $inCore = cmsCore::getInstance(); if (!$user_id){ $this->id = 0; $this->ip = $_SERVER['REMOTE_ADDR']; $this->is_admin = 0; $this->group_id = self::getGuestGroupId(); return true; } $info = $this->loadUser($user_id); if (!$info){ return false; } foreach($info as $key=>$value){ $this->{$key} = $value; } if (!file_exists(PATH.'/images/users/avatars/small/'.$this->imageurl) || !$this->imageurl){ $this->imageurl = 'nopic.jpg'; } $this->id = (int)$user_id; $this->checkBan(); return true; }
Строчка $this->ip = $_SERVER['REMOTE_ADDR'];
Я так понял тут IPшку берет. Проблема 100% не в скриптах, а в криво настроенном сервере.
Сегодня в 14:51
#4
12 сентября 2011 в 17:21
ок, спасибо.
#5
12 сентября 2011 в 17:27
Незачто, рад был помочь! :)
#6
12 сентября 2011 в 17:30
Если быть точнее — то было для Гостей, а для зарегистрированных пользователей вот эта функция:
тот же файл, строчка: $info['ip'] = $_SERVER['REMOTE_ADDR'];
public function loadUser($user_id) { $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); $sql = "SELECT u.*, g.is_admin is_admin, p.imageurl as imageurl FROM cms_users u INNER JOIN cms_user_groups g ON g.id = u.group_id INNER JOIN cms_user_profiles p ON p.user_id = u.id WHERE u.id='$user_id' AND u.is_deleted = 0 AND u.is_locked = 0 LIMIT 1"; $result = $inDB->query($sql); if($inDB->num_rows($result) !== 1) { return false; } $info = $inDB->fetch_assoc($result); $info['ip'] = $_SERVER['REMOTE_ADDR']; return $info; }
погуглите по запросу "nginx real ip"
Как выяснилось, ИНСТАНТ обрабатывает IP клиентов при условии, что на хостинге выделенный IP адрес. Может быть разработчикам, несложно что то добавить, чтобы определялось и без выделенного IP. :)
#9
12 сентября 2011 в 21:14
Кто вам такой бред сказал? Это у вашего хостинг-провайдера Nginx так криво настроен… Если интересует — могу предоставить место на своем сервере, у меня все хорошо работает и без выделенных айпишек. Если что — пиши в личку!
#10
12 сентября 2011 в 22:00
причем здесь инстант?????Как выяснилось, ИНСТАНТ обрабатывает IP клиентов при условии
единственный и правильный способ получить ip адрес клиента это $_SERVER['REMOTE_ADDR']. точка.
у вас там совсем неучи работают видимо, меняйте хостера.