Скриване на URL-то от Iframe

webdeveloper

Registered
Здравейте, имам следният фрейм:

<iframe src='$url' scrolling='auto' width='100%' height='100%' frameborder='0'> </iframe>


Работи на 6, но бих искал да не може да се открие истинската стойност на $url по никакъв начин. В момента ако цъкна "Изходен код на страницата" мога да видя адреса на ифрейма. Как може да стане? С някакъв "encode" на URL-то, който фрейм тага да може да прочете? Блокиране по някакъв начин на изходният код?
 
Replace каза:
Няма как да стане, винаги ще се открие.

В момента ми се върти една идея в главата. Имам Zend Optimizer инсталиран на уеб сървъра, ако кодирам този ифрейм чрез Zend дали няма да се получи?
 
Не, нали браузъра трябва да го прочете от някъде. Скриеш ли ги за потребителите, криеш го и за браузъра.
Евентуално, можеш да си направиш проверки и защити на урл-то от ифрейма, т.к. да може да се зарежда единствено и само от даден хост (примерно).
 
Хрумна ми още една гениална идея (:D). Забранявам десният бутон в страницата и проверявам дали javascript-а на потребителя е включен и ако не е включен да го exit-не. Проблема е обаче, че не знам как да проверя java-та дали е включен...


Edit: Провал... :D Явно няма начин... :o
 
Проверка за включен javascript се сещам само за тази:

HTML:
<script type="text/javascript">
document.write("Включен");
</script>
<noscript>Изключен</noscript>

А дори да забраниш десния бутон , пак може да се гледа source кода.
На същото мнение съм че няма как да се скрие освен ако не проверяваш хоста както ти каза @Replace
 
Както каза Replace не може да скриеш нещо, което е нужно, за да интерпретира правилно браузъра дадена страница.

А относно показването и скриването на информация при включен и изключен JS. Може да се триква така :D :

<style type="text/css">
#content {
display: none;
}
</style>
<script type="text/javascript">
document.write('<style type="text/css">#content {display: block;}<\/style>');
</script>
 
Ив, малка грешчица... :D

HTML:
<style type="text/css">
#content {
display: none;
}
</style>
<script type="text/javascript">
document.write('<style type="text/css">#content {display: block;}</style>');
</script>
 
Не можеш да скриеш адреса, но можеш да го замаскираш. Виж тук:
http://web-tourist.net/forum/viewtopic.php?t=113460

И двата варианта, които съм описал ще работят. Ако ползваш javascript - фрейма изобщо няма да има адрес (е, не и различен от about:blank). Ако искаш да скриеш от някого, че фрейма сочи към определен домейн.. просто можеш да източиш съдържанието с php и да насочиш фрейма към това php. А дали си струва главобола - това е друг въпрос. :)

Но ако искаш да скриеш сорса във фрейма... невъзможно
 
Здр, значии слагаш едно ИД на aифреима и с js му даваш УРЛ така няма дасе забелязва ..


HTML:
<iframe id='IndexCont'></iframe>

а това го слагаш в някои js фаил ..

[js]$(function () {$("#IndexCont").src='УРЛ';});[/js]

.. 100 % READY :?: :?:
 
В js файл не мога да използвам php, а не мога ли да ползвам php как да извлека url-то от базата данни?
 
Е, не е съвсем така.

bla.php
PHP:
<?php
    header( "content-type: application/x-javascript" );
    print 'alert( 5 );';
?>
bla.html
HTML:
<script type="text/javascript" src="bla.php"></script>
Можеш да ползваш и embed-нат javascript без да го пазиш във външен файл.

Иначе защо просто не насочиш фрейма към bla.php, ако bla.php краде съдържанието от адреса, който те интересува и го принтва. Това няма ли да свърши работа?
 
fors24 каза:
Здр, значии слагаш едно ИД на aифреима и с js му даваш УРЛ така няма дасе забелязва ..


HTML:
<iframe id='IndexCont'></iframe>

а това го слагаш в някои js фаил ..

[js]$(function () {$("#IndexCont").src='УРЛ';});[/js]

.. 100 % READY :?: :?:

Да и всичко се вижда през firebug.

Има начин за правене на такова нещо.
Ето ти пример със сайта на jQuery (http://api.jquery.com/mouseout/), погледни iframe-а на демото.

Ето ти пример:

Код:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
    var frame = '<!DOCTYPE html><html><head><title>Some</title></head><body>Test</body></html>';
    jQuery(document).ready(function()
    {
        var $text = jQuery('div.text');
        var $frame = frame.replace('<', '<').replace('>', '>');
        var iframe = document.createElement('iframe');
        iframe.src = 'about:blank';
        iframe.width = '100%';
        iframe.height = '50%';
        $text.html(iframe);
        
        console.log(iframe);
        
        var doc = iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document) || iframe.document || null; 
        
        doc.open();
        doc.write(frame);
        doc.close();
    });
</script>
<title>Title</title>
</head>
<body>
  <div class="text"></div>
</body>
</html>

Ти можеш да ползваш ajax, load и etc.
 
sandh каза:
Иначе защо просто не насочиш фрейма към bla.php, ако bla.php краде съдържанието от адреса, който те интересува и го принтва. Това няма ли да свърши работа?


Много трафик ще минава през мен, не става въпрос само за 1 линк.
 
webdeveloper каза:
Къде по точно се вкарва линка, че нещо не му схващам замисъла на този код, който даде. :idea:

var frame = '<!DOCTYPE html><html><head><title>Some</title></head><body>Test</body></html>';

Има го в кода.
 
Щом не искаш да взимаш само съдържанието от адреса, явно ще трябва да посочиш този адрес някъде. Няма как да го скриеш.

Някакъв компромисен вариант е решението на fors24 да забиеш този адрес на колкото се може по-скришно място. И все пак... Всички ползваме FireBug, Developer Tools на Chrome, IE и т.н. Ако някой иска да види адреса - ще го види.
 
Пробвах и нещо от сорта на:

<iframe src='2.php?id=7233' scrolling='auto' width='100%' height='100%' frameborder='0'></iframe>

Като в 2.php?id=7233 се принтира само урл адреса и нищо друго:

print $url;

Надявах се src-то нa iframe-a да си GET-не url адреса изписан в 2.php?id=7233 ама уви не става..
 

Back
Горе