Всем привет. Есть ли какие-либо подводные камни при использовании данной функции?
Может она не всегда верно срабатывает или еще чего-то?
Планирую её использовать для авторизации запросов на API. Т.е. проверять соответствует ли $_SERVER['REMOTE_ADDR'] полученному адресу с помощью gethostbyname() из переданного в риквесте домена от клиента. Ну т.е. что запрос был именно с этого домена, а не подменен в запросе. Все эти пляски нужны, т.к. я не нашел надежного способа получить хост, с которого пришел запрос. $_SERVER['HTTP_REFERER'] присутствует не всегда, а все остальные заголовки можно подсунуть какие угодно.
Запросы приходят не с браузера клиента, а с другого сервера. В запросе передается POST'ом домен и ключ, из заголовка я беру REMOTE_ADDR и через gethostbyname я хочу проверить соответствует ли адрес переданному домену. Т.е. я должен в итоге иметь 2 одинаковых IP, и только потом я проверяю, есть ли у меня в бд такой клиентский домен и совпадает ли ключ.
Павел, там вроде как внутри обычный nslookup. Если вы делает это ради экономии запроса к базе, то выигрыш сомнительный, запросы к DNS могут оказаться более медленными.
Stalker_RED, не для экономии запроса к БД. Я хочу знать, сделан ли запрос именно с того сервера, на котором находится домен. Т.е. что бы не было так, что клиент купит ключ и будет с 10 сайтов слать мне запросы подсовывая везде 1 домен.
Павел, если на пальцах, то после проверки gethostbyname можно записать где-то у себя дату успешной проверки, и в следующий раз смотреть - если прошло меньше часа, например (или меньше суток, или любой другой промежуток времени), то не вызывать gethostbyname, а довериться предыдущему результату.
Вариантов где именно хранить кеш - великое множество. Начиная от "записать в файлик" или в базу, и заканчивая встроенными решениями типа APCu или внешними штуками типа memcache или redis.