За последние 24 часа нас посетили 33067 программистов и 1754 робота. Сейчас ищут 1220 программистов ...

$_SERVER['REMOTE_ADDR'];

Тема в разделе "PHP для новичков", создана пользователем Sasha55555, 27 июл 2018.

  1. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    PHP Notice: Undefined index: REMOTE_ADDR
    Открывок из файла
    Код (Text):
    1. final class Login extends ClubPenguin {
    2.  
    3.     public function __construct() {  
    4.         parent::__construct();
    5.        
    6.         Logger::Fine("Login server is online");
    7.     }
    8.  
    9.     protected function handleLogin($socket) {
    10.         $penguin = $this->penguins[$socket];
    11.  
    12.         if($penguin->handshakeStep !== "randomKey") {
    13.             return $this->removePenguin($penguin);
    14.         }
    15.  
    16.         $this->databaseManager->add($penguin);
    17.  
    18.         $username = Packet::$Data['body']['login']['nick'];
    19.         $password = Packet::$Data['body']['login']['pword'];
    20.         $ip = $_SERVER['REMOTE_ADDR'];
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Что-то не то в настройках сервера. Если это на шараде - пишите в поддержку
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Если запускать из консоли (например в тестах) то половина суперглобальных переменных не определена. Не твой случай?
     
  4. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Мой, запускаю скрипт он как раз этот файл и вызывает. Да мне нужна проверка на айпи бан, в базе данных уже есть айпи, которому запрещен вход, нужно узнать айпи пользователя и сравнить
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Sasha55555, если ты запускаешь из консоли, то о каком пользователе идёт речь?
     
  6. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    К серверу подключаются пользователи
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Sasha55555, ну когда они к серверу подключаются, php запускается не из консоли, а сервером. И надо очень криво настроить сервер, чтоб в REMOTE_ADDR вообще не было. А если ты запускаешь из консоли, то у тебя не может быть REMOTE_ADDR
     
    MouseZver нравится это.
  8. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А каким образом можно определить айпи? Есть же игровые сайты и там определяется айпи
     
  9. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну если тебе для тестов нужно
    PHP:
    1. $ip = $_SERVER['REMOTE_ADDR'] ?? "127.0.0.1";
     
  10. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    @nospiou нет для сайта, уже есть, там html страница загружается swf и подключение к php серверу, нужно чтобы сервер увидел айпи пользователя
    --- Добавлено ---
    чтобы бан проверять
    --- Добавлено ---
    Можно ли как-то получить айпи пользователя на html странице и передать php скрипту на сервере?
     
  11. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  12. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    ну так например
    Код (Javascript):
    1. <script>
    2. function getIP(json) {
    3.   alert("My public IP address is: " + json.ip);
    4. }
    5. </script>
    6. <script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
     
  14. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А как его потом принять на сервере?
     
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
     
  16. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Так а он вроде не отправляется
    Код (Text):
    1. <script>
    2. function getIP(json) {
    3.   alert("My public IP address is: " + json.ip);
    4. }
    5. </script>
    6. <script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
    А как можно принять правильно на сервере POST-ом?
    Там ведь получается из html отправка нужна формой
     
  17. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    это уже костыли. грузишь php страницу у тебя уже будет ip создаешь сессию и под эту сессию инициализируешь swf
     
  18. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Подождите, я просто не понимаю. У меня есть Html-страница, я на ней определил мой IP, затем PHP сервер должен получить айпи из HTML для проверки на IP-бан, как это по-проще сделать? Если сервер не может сам определить айпи пользователя
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Да все сервер может. Ну вот например всеми любимы jquery
    https://api.jquery.com/jquery.post/
     
  20. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Sasha55555, выводи html-страницу через PHP, и будет тебе IP. Ты только всех путаешь. У тебя @artoodetoo спросил не в консоли ли ты пытаешься php запускать, и получать IP пользователя. Ты ответил, что так и есть, и я тебе объяснил, что там никакого IP быть не может. А если у тебя всё-таки идёт из браузера запрос, тогда другой разговор. Но HTML просто выведи через php, он для того и придуман изначально, чтоб html формировать
     
  21. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Я сервер запускаю в консоли, а подключаюсь к нему через браузер, и при авторизации на сервере выдает PHP Notice: Undefined index: REMOTE_ADDR
     
  22. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    пробуй так
    PHP:
    1. function get_client_ip() {
    2.     $ipaddress = '';
    3.     if (isset($_SERVER['HTTP_CLIENT_IP']))
    4.         $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    5.     else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    6.         $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    7.     else if(isset($_SERVER['HTTP_X_FORWARDED']))
    8.         $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    9.     else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
    10.         $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    11.     else if(isset($_SERVER['HTTP_FORWARDED']))
    12.         $ipaddress = $_SERVER['HTTP_FORWARDED'];
    13.     else if(isset($_SERVER['REMOTE_ADDR']))
    14.         $ipaddress = $_SERVER['REMOTE_ADDR'];
    15.     else
    16.         $ipaddress = 'UNKNOWN';
    17.     return $ipaddress;
    18. }
    или так
    PHP:
    1. function get_client_ip() {
    2.     $ipaddress = '';
    3.     if (getenv('HTTP_CLIENT_IP'))
    4.         $ipaddress = getenv('HTTP_CLIENT_IP');
    5.     else if(getenv('HTTP_X_FORWARDED_FOR'))
    6.         $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    7.     else if(getenv('HTTP_X_FORWARDED'))
    8.         $ipaddress = getenv('HTTP_X_FORWARDED');
    9.     else if(getenv('HTTP_FORWARDED_FOR'))
    10.         $ipaddress = getenv('HTTP_FORWARDED_FOR');
    11.     else if(getenv('HTTP_FORWARDED'))
    12.        $ipaddress = getenv('HTTP_FORWARDED');
    13.     else if(getenv('REMOTE_ADDR'))
    14.         $ipaddress = getenv('REMOTE_ADDR');
    15.     else
    16.         $ipaddress = 'UNKNOWN';
    17.     return $ipaddress;
    18. }
     
  23. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    В смысле, встроенный в PHP что-ли?
     
  24. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    @Sasha55555 , возможно у вас Apache + Nginx на VPS'ке, то там нужны настройки конфига ngnix'а, что бы IP-шник нормально определялся.