Externe website laden met div
Momenteel zijn wij bezig met een linkuit script.
Vroeger hadden wij dit in Iframes, maar we willen het graag mooier, dus in div's.
Er zijn in totaal 2 div's.
1 geeft aan dat je de website verlaat, de ander eronder geeft de website weer.
Voorbeeld: http://webcache.googleusercontent.com/search?q=cache:2Q4BoHdIon0J:www.google.nl/ig+google&cd=2&hl=nl&ct=clnk&gl=nl
We vroegen ons af hoe we dit voor elkaar konden krijgen.
De functie file_get_contents en include hebben wij al geprobeerd, maar werkte helaas niet.
File_get_contents werkt wel, alleen worden plaatjes niet geladen en werkt het script van bijvoorbeeld Google op deze manier niet.
Wij hopen dat jullie ons kunnen helpen.
Alvast bedankt!
Gewijzigd op 27/05/2010 20:04:38 door Kilian S
De plaatjes werken waarschijnlijk niet omdat de paden niet meer kloppen. Als je de content met file_get_contents in een variabele laadt, zou je bij alle plaatjes (en css) de paden kunnen veranderen naar absolute paden die naar de betreffende website verwijzen. Dan wordt de pagina wel goed weergegeven.
Hoe moet ik de div/script opbouwen?
Gewijzigd op 27/05/2010 20:08:24 door Kilian S
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$content = file_get_contents('http://www.google.nl');
$content = preg_replace('_\ssrc=([^>\s]+?)\s_is', 'src=http://www.google.nl/$1', $content);
echo $content;
?>
$content = file_get_contents('http://www.google.nl');
$content = preg_replace('_\ssrc=([^>\s]+?)\s_is', 'src=http://www.google.nl/$1', $content);
echo $content;
?>
Dit werkt overigens nog niet helemaal, je zult nog moeten sleutelen aan de regex om de src attributen te matchen en te vervangen. Maar het maakt het idee wel duidelijk.
Verder is dat ook handiger als je die custom div vooraan de body wilt stoppen.
Er is alleen 1 heel groot probleem: hoe ga je om met relatieve links?
Pim:
Ik denk dat het een stuk bugvrijer is als je eerst de dom parsed en dat van alle links de src'es aanpast.
Idd, die kan je in principe zo 'opvragen'.
Is dit allemaal wel toegestaan?
Als je geen toestemming hebt: NIET DOEN!
deviantart.com. Enige reden daarvoor lijkt mij om phishing attacks tegen te gaan.
Of je toont de website wel in een iframe, maar dan is je waarschuwing net wat te laat (je laadt de externe pagina immers al in) en met een framebuster script kunnen sites je iframe-pagina overslaan.
Of je laadt de pagina in met file-get-contents, verandert alle verwijzingen naar scripts, plaatjes en links af, mist daarbij de verwijzingen vanuit de css en javascript waardoor het toch niet helemaal goed gaat. Grote kans dat de website die je op die manier inlaadt niet meer goed werkt. Daarnaast is het ook nog redelijk gevaarlijk, want je laadt hun website in, in jouw domein. Javascript op die pagina kan dus cookies van jouw site uitlezen, en andere leuke trucjes uithalen. En iemand kan voor de grap jouw file_get_contents pagina doorverwijzen naar een oneindig groot bestand, waardoor je script (hopelijk) voor 30 seconden vastloopt (of langer, als je je timeout niet hebt ingesteld)
De juiste oplossing hangt zoals altijd af van het doel. Waarom de link-uit pagina's?
Ik zou voor dit doel of de webpagina waar je naartoe gaat niet weergeven, en alleen een (grote) knop tonen om de website te verlaten en verder te gaan. Voorbeeld: Of je toont de website wel in een iframe, maar dan is je waarschuwing net wat te laat (je laadt de externe pagina immers al in) en met een framebuster script kunnen sites je iframe-pagina overslaan.
Of je laadt de pagina in met file-get-contents, verandert alle verwijzingen naar scripts, plaatjes en links af, mist daarbij de verwijzingen vanuit de css en javascript waardoor het toch niet helemaal goed gaat. Grote kans dat de website die je op die manier inlaadt niet meer goed werkt. Daarnaast is het ook nog redelijk gevaarlijk, want je laadt hun website in, in jouw domein. Javascript op die pagina kan dus cookies van jouw site uitlezen, en andere leuke trucjes uithalen. En iemand kan voor de grap jouw file_get_contents pagina doorverwijzen naar een oneindig groot bestand, waardoor je script (hopelijk) voor 30 seconden vastloopt (of langer, als je je timeout niet hebt ingesteld)
De juiste oplossing hangt zoals altijd af van het doel. Waarom de link-uit pagina's?