2010-04-20 6 views
1

Я хочу определить, вызывается ли PHP-скрипт внутри iframe другого хоста. Я мог бы прибегнуть к использованию Javascript для этого, но сначала хотел бы найти бесплатное решение JS.Зная, вызван ли сценарий из iframe на другом хосте в PHP (надеюсь, без Javascript)

Сейчас я использую эту логику:

Если $_SERVER['HTTP_HOST'] не совпадает с именем хоста $ _SERVER['HTTP_REFERER']
И $_SERVER['REDIRECT_STATUS'] определяется
Затем скрипт который вызывается из внутри фрейма на другой хост.

Я знаю, что это ни в коем случае не является точным, но до этого он прошел все испытания.
Знает ли кто-нибудь лучшее решение, дополнительное условие, которое я могу проверить, чтобы быть уверенным в этом? Спасибо.

РЕШЕНИЕ: Наконец, я решил пойти с JS. Теперь два альтернативных содержания находятся внутри <div>, а сценарий JS решает, какой из них показывать, а какой - скрывать.

+0

В настоящее время работает ваше решение? – hookedonwinter

+0

Да, но я боюсь, что это может не сработать при каких-то непредвиденных обстоятельствах. – Petruza

+0

Коррекция, я нашел случай, когда он не работает. Я думаю, мне придётся прибегнуть к JS – Petruza

ответ

1

Знает ли кто является лучшим решением

Насколько мне известно, не без JS, нет. Однако референт, отличный от HTTP_HOST, также означает, что страница была достигнута по ссылке, и, конечно, оба поля могут быть легко подделаны.

+0

Об обмане, вы совершенно правы, и Javascript также легко обойти. И хотя это не является официальным, но я заметил, что сценарий внутри iframe имеет параметр «REDIRECT_STATUS», тогда как когда он не находится внутри iframe, независимо от того, имеет ли он референт, не определено 'REDIRECT_STATUS'. Но опять же, это чистая проб и ошибок, здесь нет твердой науки. – Petruza

+0

Нет, не всегда работает. – Petruza

+0

@Petruza, для чего именно вам это нужно? Возможно, есть другие способы добиться того, чего вы хотите достичь. –