|
|
|
| имеется страница сайта site1.ru с таким кодом
<html><head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
</head>
<frameset rows='70,*' frameborder=1 framespacing=0 cols='*'>
<frame src='http://www.site-banner.ru/banner.htm' name=n scrolling=no noresize marginwidth=0 marginheight=0>
<frame src='http://site2.ru' name=c>
</frameset>
</html>
|
когда открываешь страницу, сверху появляется баннер, а во фрейме открывается сайт site2.ru
на сайте site2.ru PHP кодом определяется $_SERVER['HTTP_REFERER'] рефер, при первой загрузке страницы рефер показывает сайта site1.ru, но как только начнёш переходить по ссылкам сайта site2.ru рефер меняется на сайт site2.ru, как сделать чтобы рефер продолжал быть сайта site1.ru
Вообщем нужно через первый сайт ходить по второму, второй сайт грузится через фрейм. Сейчас так и есть, но вот рефер при переходе по ссылкам меняется на принадлежащий второму сайту.
Смысл какой, нужно по реферу делать определение, и по нему уже на сайте2 ограничивать определелённые части дизайна или контента сайта.
На сайте site2.ru я прописал PHP код для ограничения разного контента
<?php
$url_refff_parse = parse_url($_SERVER['HTTP_REFERER']);
if($url_refff_parse['host'] == 'site1.ru'){
тут ограничиваем данные
}
?>
|
может силами javascript можно както передавать адрес сайта site1.ru что прописан в адресной строке браузера, ведь при переходе по страницам он не меняется | |
|
|
|
|
|
|
|
для: web777
(13.09.2012 в 01:56)
| | Для начала договоримся: страница != сайту. Сайт - это несколько (иногда сотни тысяч) страниц.
------
1. страница, загруженная во фрейм/ифрейм средствами JS может узнать, что она находится во фрейме/ифрейме
if (self != top) alert ('Я во фрейме/ифрейме!');
|
2. однако, узнать конкретный адрес чужой страницы, в котором этот самый фрейм/ифрейм прописан, страница НЕ СМОЖЕТ. Никакими средствами - ни JS, ни PHP, ни чем-либо ещё. | |
|
|
|
|
|
|
|
для: ЯСА
(13.09.2012 в 06:33)
| | да я тут тоже стал сомневаться в этой затеи, но отступать нельзя, есть заказ, нужно какими то путями реализовать. Сейчас мысль пришла такая, средствами ява скриптом сохранять в куки адрес что прописан в адресной строке браузера , определяем так window.location.href
и после через PHP получать значение для сайта site2.ru
Думаю так должно получиться. Не могли бы привести пример сохранения в куках через ява скрипт? | |
|
|
|
|
|
|
|
для: web777
(13.09.2012 в 13:55)
| | Странно... куки какие-то... зачем?
Я же вам ВСЁ уже показал-рассказал...
Не поняли?
Ладно, разъясняю подробнее.
1. Вариант первый.
Какой-то посторонний дядя сделал html-страницу, в коде которой написал:
<iframe src="адрес какой-то страницы вашего сайта"></iframe>
|
Вы этого чужого дядю не знаете и потому не любите.
И хотите показать ему не всё то, что у вас есть, а лишь какую-то малую часть.
Грубо говоря, посторонним - только классику, без анала :)
Для этого на каждой странице вашего сайта в самом начале страницы вам надо иметь малюсенький скриптик
<script>
var LH = document.location.href;
if (self != top && LH.indexOf ('?min') < 0)
document.location.href = LH + '?min';
</script>
|
В PHP-файлах вы не реферрер проверяйте, а $_SERVER['QUERY_STRING'] - если есть там конструкция ?min - значит, плохой чужой дядя хочет смотреть страницы ваши из фрейма/ифрейма. Наказывайте этого дядю и всего ему не показывайте...
А какой там хост у этого чужого дяди - site1.ru или site254.ru - какая вам, собственно, разница?
-----
2. Вариант второй, противоположный первому.
Любимый и единственный дядя специально создал страницу на хосте site1.ru, чтобы просматривать "клубничку" на вашем сайте site2.ru через фрейм или ифрейм, где в SRC прописан адрес одной какой-то странички вашего сайта.
Эту "клубничку" вы хотите показывать только и исключительно этому дяде, а всем остальным - ни-ни... пусть даже они, хитро-подлые, тоже фрейм/ифрейм себе сделают.
Здесь чуть-чуть иначе.
Здесь нужно одновременно знать и то, что страницы вызываются во фрейм/ифрейм, и то, что при вызове самой первой страницы она была помещена во фрейм/ифрейм именно с хоста site2.ru
На каждой странице сайта тоже махонький скриптик, но немного иной:
<script>
<?php
$refer = parse_url ($_SERVER['HTTP_REFERER']);
if ($refer ['host'] == 'site1.ru') $s = 'var uncle = true;\n';
else $s = 'var uncle = false;\n';
echo $s;
?>
var LH = document.location.href;
if (self != top && uncle)
{
document.location.href = LH + '?max';
window.name = 'yes';
}
else if (self != top && window.name == 'yes')
document.location.href = LH + '?max';
</script>
|
Здесь используется замечательное свойство window.name - его яваскриптом можно как читать, так и устанавливать. "Замечательность" этого свойства в том, что значение window.name, установленное одной страницей, у окна остаётся и может быть прочитано другой страницей, которая позже в это же окно загрузилась.
Таким образом, если в первый раз реферрер "дядин" и фрейм/ифрейм присутствует, то пишете окну window.name = 'yes' (т.е. это ваш дядя). При просмотре следующих страниц реферрер будет уже не "дядин", но окно будет каждый раз исправно возвращать window.name == 'yes', и страница будет знать - что она таки "в гостях у дяди", именно в его фрейме/ифрейме.
В PHP-файлах в этом случае вы также проверяете $_SERVER['QUERY_STRING'] - если есть там конструкция ?max - значит, это ваш любимый дядя хочет смотреть страницы ваши из фрейма/ифрейма. Показывайте этому дяде абсолютно всё... | |
|
|
|
|
|
|
|
для: ЯСА
(13.09.2012 в 16:32)
| | спасибо большое, но это не то. Сейчас покажу сайт аналогично тому что нужно сделать.
есть сайт
_technocar.ru/news.htm
и есть такой сайт
http://www.respect-company.ru/frame.htm
через который подгружается первый сайт (technocar) через фрэйм, при этом некоторая част подгружаемого сайта не выводится, например с левой части нет разделов "служба сервиса, скачать, обучение" и т.п.
Как это сделано я понял, при помощи JavaScript, на подгружаемом сайте скрываемая часть вставляется внутри document.write
<script language='JavaScript'>
<!--
if(self.parent.frames.length==0) {
document.write("тут скрываемая часть");
}
//-->
</script>
|
здесь основная фишка в проверке self.parent.frames.length, если страница подгружается через фрэйм или нет. Вот тут то и можно схитрить, при открывании через фрэйм, скрывать некоторую информацию. Вот собственно и всё.
Но тут столкнулся с одной проблемой, сайт работает на движке HostCMS при этом использует шаблон XML, хотелось бы каким нибудь способом, выше показанное условие, передать в PHP а тот в свою очередь генерировал контент или нет. Но боюсь это не возможно сделать, т.к. PHP загружается перед JavaScript. | |
|
|
|
|
|
|
|
для: web777
(23.09.2012 в 12:26)
| | Совсем у вас плохо с головой, уж извините.
Из того, что я здесь выше написал - вы абсолютно ничего не поняли.
if (self.parent.frames.length == 0) это пошловатое повторение того, что было написано у меня выше
if (self != top)
Две этих строки эти отличаются только "моим талантом" (ибо "краткость - сестра таланта"), а по своей сути и действию они равнозначны (за исключением "знака" условия).
-----
В общем, если, по вашему, моё краткое - "это не то", а вот эта пошлятина - это "основная фишка", то вам следует основательно полечить голову. Знаниями. | |
|
|
|
|
|
|
|
для: ЯСА
(23.09.2012 в 12:37)
| | я извиняюсь, но в javascript я не разбираюсь, если ваш пример лучше, то его тогда буду использовать, спасибо.
По пробую перечитать выше ваш пост и понять | |
|
|
|
|
|
|
|
для: ЯСА
(13.09.2012 в 06:33)
| | а возможно такое, в самом первом коде что приводил в первом сообщении, перед frameset прописать
<script type="text/javascript">
var SITE_ADRESS = 'site1.ru';
</script>
|
далее подключается во внутрь фрейма сайт
<frame src='http://site2.ru' name=c>
который содержит у себя такой код
<script type="text/javascript">
alert(SITE_ADRESS);
</script>
|
будет ли переменная SITE_ADRESS видна alert`у ?
по сути переменная SITE_ADRESS определяется в общей странице в которой загружается сайт site2.ru и этот сайт может получать значение этой переменной? | |
|
|
|
|
|
|
|
для: web777
(13.09.2012 в 15:42)
| | Как блокировать разрушение фрейма? Есть какой нибудь код?
Например , я показываю чужие сайты у себя во фрейме, но если юзер установит код себе на сайт , например:
Код HTML:
<script language="JavaScript">
var frameBusted = (top != self);
if (frameBusted) window.open ('http://userLink.ru', '_blank')
</script>
|
то фрейм разрушается и юзера смотрящего сайт во фрейме перебрасывает на его страничку, игнорируя мой сайт.
Есть какое то противоядие?
Которое можно установить себе и блокировать разрушение? | |
|
|
|
|
|
|
|
для: zatocnik
(07.11.2012 в 02:23)
| | какая у вас терминология-то воинственная - "противоядие", "разрушение фрейма" :)
нет, "противоядия" не существует - если хозяин страницы не хочет, чтобы его страницу смотрели через фрейм/ифрейм, то так оно и будет | |
|
|
|
|