Не определяется IP пользователей

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

Как выяснилось, ИНСТАНТ обрабатывает IP клиентов при условии

Alex
причем здесь инстант?????
единственный и правильный способ получить ip адрес клиента это $_SERVER['REMOTE_ADDR']. точка.
у вас там совсем неучи работают видимо, меняйте хостера.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.