Форум русской поддержки Joomla!® CMS
09.12.2016, 07:58:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

RSForm IP отправителя формы и хостинг на Digital Ocean - решено

 (Прочитано 47 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Abiladenda
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 187



« : 11.11.2016, 17:34:19 »

RSfrom предоставляет такую возможность, как получение IP отправителя формы, а также Геолокацию (Страна отправителя), это описано здесь

https://www.rsjoomla.com/support/documentation/rsform-pro/custom-scripting/display-the-country-from-which-the-form-is-being-submitted.html

Полезно это тем кто получает письма со всего Мира путем заполнения формы контакты.

Можно сделать что бы приходил только один IP отправителя формы а не страна, создаем скрытое поле назовем его senderip в поле default вставим код

Код:
//<code>
return $clientip = JFactory::getApplication()->input->server->get('HTTP_X_FORWARDED_FOR','');
//</code>

в сообщение администратору добавим

Код:
<p>==SENDER INFO==</p>
<p>IP Addr: {senderip:value}</p>

У меня хостинг на Diigtal Ocean поэтому стадартное решение от RSForm не работало вернее возращало IP моего сервера а не IP реалного отправителя формы поэтому из с ссылки вверху нужно заменить строку

Код:
$ip = JFactory::getApplication()->input->server->getString('REMOTE_ADDR');

на
  
Код:
$ip = JFactory::getApplication()->input->server->get('HTTP_X_FORWARDED_FOR','');

Проблема облачных хостингов и CloudFlare с определнием реального IP описана здесь

http://joomla.stackexchange.com/questions/16289/getting-wrong-ip-address-from-jfactorygetapplication-input-server-getre

Ну а тем кому нужен только IP отправителя а не страна, и кто не использует облачные хостинги на подобие  Digital Ocean,
код для скратого поля вот этот

Код:
//<code>
return $_SERVER['REMOTE_ADDR'];
//</code>

RSForm дает возможность получить IP отправителя формы, не создавая скрытые поля, вот внизу то что можно получать путем добавления глобалных переменных в емаил администратору, но в случае облачного хостинга это будет возвращать IP вашего хостинга, а не IP реалного отправителя, поэтому используйте код выше на странице, путем добавления скртых полей.

Код:
<p>IP Addr: {global:userip}</p>
<p>User: {global:username}</p>
<p>User ID: {global:userid}</p>
<p>User Email: {global:useremail}</p>
<p>Date: {global:date_added}</p>

« Последнее редактирование: 11.11.2016, 17:43:37 от Abiladenda » Записан
Abiladenda
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 187



« Ответ #1 : 12.11.2016, 21:18:06 »

Посмотрел как работает данный функионал и увидел что некотрых отправителей формы определяет с двойным IP, порывшись немного на просторах инета нашел такой код, поставил работает, и пока все коректно определяет.

Код:
//<code>
function getRealIpAddr()
{
    $server = JFactory::getApplication()->input->server;

    if (!empty($server->get('HTTP_CLIENT_IP')))    //check IP from share internet
    {
        $ip = $server->get('HTTP_CLIENT_IP');
    }
    elseif (!empty($server->get('HTTP_X_FORWARDED_FOR','')))  //to check IP is pass from proxy
    {
        $ip = $server->get('HTTP_X_FORWARDED_FOR','');
    }
    else
    {
        $ip = $server->get('REMOTE_ADDR');
    }

    return $ip;
}

return getRealIpAddr();

//</code>
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet