Учитывая, что клиент (браузер пользователя) может отправлять вам все, что он хочет, я бы сказал, что нет никакого способа узнать, с какого веб-сайта вызывается ваш скрипт:
- Поскольку вы хотите знать URL-адрес веб-сайта, на котором встроен ваш виджет, а не адрес пользователя,
$_SERVER['REMOTE_HOST']
не поможет
$_SERVER['HTTP_REFERER']
может показаться нормальным, но на самом деле это не так:
- Клиент не должен отправлять его (и это не всегда)
- Поскольку он отправляется клиентом, его можно легко подделать / подделать
Итак, я бы сказал, что нет реального решения этой проблемы, по крайней мере, на стороне вашего сервера (Если я ошибаюсь, мне интересно знать!)
Но, может быть, вы можете что-то сделать на стороне клиента: когда я писал все это, я думал о картах Google и системе API Key:
- у вас есть (уникальный) ключ API четыре вашего домена
- Когда вы загружаете JS-скрипты из Google, вы отправляете этот ключ
- если ключ не зарегистрирован для домена, на котором вы пытаетесь отобразить карту, появляется сообщение
alert
, в котором говорится: * Сервер API Карт Google отклонил ваш запрос. Возможно, это связано с тем, что API ключ, использованный на этом сайте, был зарегистрирован для другого сайта."
- но карта все равно отображается - по крайней мере, на моем тестовом сервере
- это
alert
действительно действительно раздражает для конечного пользователя , и я не думаю, что кто-то хотел бы, чтобы оповещение отображалось на их сайте, потому что они используют ваш сервис без авторизации ...
Может быть, вы можете посмотреть, как это делается для карт Google: -)