[PHP] .txt vanaf andere website oproepen
Het is al weer wat later en ben al een te lange tijd wakker.. Ik ben bezig met een CMS en ik zoek eigenlijk iets heel simpels, moet echt maar een paar lettertjes zijn volgens mij. Bij de administration area wil ik in de zijbalk de mogelijkheid geven om bijvoorbeeld updates, of "announcements" te laten zien.
Dit wil ik doen door op mijn eigen website (tevens de home voor de system : WebSys) een .txt bestandje neer te zetten, en dat te laten lezen zeg maar..
Ik hoop dat ik duidelijk ben met wat ik wil *shame*
Alvast bedankt voor degene die mij kan helpen!
GrZ,
Scripter
Je kunt gewoon file_get_contents() of fopen() gebruiken, mits je filewrappers het toelaten externe sites te openen.
Is er een veilige manier? waarop het dus nooit fout kan gaan, welke instelling er dan ook is op de server?
Bedankt voor je snelle reply PHPerik!
Voor zover ik weet hangen alle functies in php die dit kunnen echt af van die instelling.
Ok, Dan ga ik dit proberen, hartstikke bedankt voor je hulp PHPerik!
Ik heb het met get_file_contents('http://websys.scriptersdomein.nl/news.txt'); gedaan...
Weet iemand een oplossing?
Het is: file_get_contents(), niet get_file_contents()
Want wat is eigenlijk het voordeel van deze informatie door de webserver in te laten laden? Die doet er zelf niets mee, en verder is het eigenlijk alleen maar nadelig voor de snelheid.
is wat er staat bij mij.
Ja, een iframe kan ik inderdaad maken, is inderdaad minst omgevingsgevoelig..
Op zich is het maar een klein bestandje, en het bestand zelf is niet groot, dus de snelheid valt heel erg mee (gelukkig).
Bedankt voor de tip met Iframes, die ga ik doen :D
Code (php)
1
2
3
4
2
3
4
<?php
$content = file_get_contents('http://websys.scriptersdomein.nl/news.txt');
echo $content;
?>
$content = file_get_contents('http://websys.scriptersdomein.nl/news.txt');
echo $content;
?>
Ty very very much! Dit werkt wel :D
(en het verschil met laden , ik zie geen verschil :D )
Scripter_ schreef op 24.06.2007 12:54:
Op zich is het maar een klein bestandje, en het bestand zelf is niet groot, dus de snelheid valt heel erg mee (gelukkig).
Ik maak me ook niet zo'n zorgen over de grootte van het bestand, aangezien de netwerkverbindingen tussen server meestal wel ok is. Maar ik denk dat het opvragen van het bestand, en het wachten tot jouw server heeft geantwoord het langste duurt. En stel dat jouw server het druk heeft, dan duurt het antwoorden des te langer.
Het probleem bij het ophalen is dan dat de hele pagina moet wachten op jouw server. Als je gebruik maakt van een iframe, wordt het wachten door de browser gedaan. Een browser kan zonder problemen meerdere dingen tegelijk doen, dus terwijl hij wacht op jouw pagina, zal hij de rest van de admin inladen, zodat de gebruiker verder kan. :)
Jelmer schreef op 24.06.2007 13:14:
Ik maak me ook niet zo'n zorgen over de grootte van het bestand, aangezien de netwerkverbindingen tussen server meestal wel ok is. Maar ik denk dat het opvragen van het bestand, en het wachten tot jouw server heeft geantwoord het langste duurt. En stel dat jouw server het druk heeft, dan duurt het antwoorden des te langer.
Het probleem bij het ophalen is dan dat de hele pagina moet wachten op jouw server. Als je gebruik maakt van een iframe, wordt het wachten door de browser gedaan. Een browser kan zonder problemen meerdere dingen tegelijk doen, dus terwijl hij wacht op jouw pagina, zal hij de rest van de admin inladen, zodat de gebruiker verder kan. :)
Ik maak me ook niet zo'n zorgen over de grootte van het bestand, aangezien de netwerkverbindingen tussen server meestal wel ok is. Maar ik denk dat het opvragen van het bestand, en het wachten tot jouw server heeft geantwoord het langste duurt. En stel dat jouw server het druk heeft, dan duurt het antwoorden des te langer.
Het probleem bij het ophalen is dan dat de hele pagina moet wachten op jouw server. Als je gebruik maakt van een iframe, wordt het wachten door de browser gedaan. Een browser kan zonder problemen meerdere dingen tegelijk doen, dus terwijl hij wacht op jouw pagina, zal hij de rest van de admin inladen, zodat de gebruiker verder kan. :)
Ja, daar heb je inderdaad een punt.. Maar met een Iframe ziet het er minder netjes uit, met de file_get_contents() ziet het er veel netter uit.. (Zie het resultaat trouwens op WebSys.ScriptersDomein.nl/administration.php
Geen zorgen, je kan toch niets verkeerd doen, omdat er nog niets in staat =)
En zodra er wel wat in staat, is hij meerdere keren beveiligt (A)
Ik weet niet wat je doelgroep is, en wat je verwacht van je systeem, maar je huidige oplossing schaalt moeilijk denk ik. Je maakt daarbij ook nog eens de websites 'afhankelijk' van jouw server. Als jouw server stom doet, doen al deze adminpanelen het niet meer, omdat die moeten wachten op de timeout van file_get_contents (30 of 60 seconden?) en iedere pagina opvragen op deze website vervolgens dus 30 of 60 seconden gaat duren...
Hm, ja, heb je toch weer een punt.. En wat nog makkelijker is, is natuurlijk om een link neer te zetten.. Dan hoeft de gebruiker nooit te wachten.. Ga even kloten met de Iframe, bedankt jelmer =)
Ik zie iframe als iets in het verleden dat we snel moeten vergeten.
En als de gebruiker z'n fopen url uit heeft staan? En geen cURL? Dan moet je bijna wel aan het iframe... (of met javascript)
Denk dat ik dan voor de beta versie aan de linkerkant met file_get_content() doe en aan de rechterkant met een iframe ga werken. Wat ik wel vind is dat een iframe er lelijk uitziet, zeker als de gebruikers een andere layout ervoor maken (wat ongelooflijk simpel is om te doen) en met file_get_content() komt er gewoon de tekst te staan, en maakt het niet uit hoe de layout eruit ziet.
Gebruikt phpbb trouwens in hun administratie gedeelte niet ook file_get_content() voor updates, nieuws en dergelijke?
PHPerik schreef op 24.06.2007 14:16:
Ik zie iframe als iets in het verleden dat we snel moeten vergeten.
Maar is dat een argument waarmee jij mensen over wilt halen om het (ook) niet te gaan gebruiken? Een iframe heeft hier gewoon een voordeel boven file_get_contents. Het wordt nog steeds ondersteund, het werkt goed, het is belachelijk simpel. Google is geen argument, toegankelijkheid is in deze situatie (een adminpaneel!) geen argument... Ik zie niet waarom het gebruik hiervan kwaad zou kunnen.
... of is het puur een mening, een persoonlijke haat-relatie tussen Erik en zijn iframes ;)
Edit: een 3e alternatief is overigens Javascript. Daarmee kan je het bestand asynchroon laden (wat ook het voordeel van een iframe is) en hoeft de gebruiker er dus niet op te wachten, en je berichtjes worden direct in je html geladen. Eigenlijk is het vrijwel vergelijkbaar met file_get_contents, maar dan met de voordelen van een iframe :)
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Ik heb vrij weinig ervaring met Javascript... YPM had het er ook al over, (wat ik nu net zie).
JS-bestandje op jouw server:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
if(typeof printNewsCallback == 'Function') {
printNewsCallback([
{
title: 'Nieuwe versie',
body: 'Er is sinds 20-05-2009 een nieuwe versie. Dit maal maar 3 bugfixes.'
},
{
title: 'Month of Ducks',
body: 'Deze maand ga ik me belachelijk veel inzetten om alle bugs uit de code te krijgen.'
]);
// zie ook json_encode() of PEAR_JSON
}
printNewsCallback([
{
title: 'Nieuwe versie',
body: 'Er is sinds 20-05-2009 een nieuwe versie. Dit maal maar 3 bugfixes.'
},
{
title: 'Month of Ducks',
body: 'Deze maand ga ik me belachelijk veel inzetten om alle bugs uit de code te krijgen.'
]);
// zie ook json_encode() of PEAR_JSON
}
'Clientside'
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<script type="text/javascript">
window.onload = function() {
// pas bij onload, zodat de pagina niet gaat wachten met
// weergeven op het bestand
// nu weet ik niet meer of dit werkte in Internet Explorer,
// dat moet je misschien even nazoeken of afkijken van bijv
// dojo of scriptaculous.
var scripttag = document.createElement('script');
scripttag.setAttribute('type', 'text/javascript');
scripttag.src = 'http://pad.naar./jou.js';
document.body.appendChild(scripttag);
function printNewsCallback(nieuws)
{
var html = ['<ul>']; // arrays zijn sneller dan strings in Internet Explorer.
for(var i = 0; i < nieuws.length; i++) {
html.push('<li><h2>' + nieuws[i].title + '</h2>');
html.push('<p>' + nieuws[i].body + '</p></li>');
}
html.push('</ul>');
document.getElementById('nieuws').innerHTML = html.join('');
}
}
</script>
<div id="nieuws">
wordt geladen?
</div>
window.onload = function() {
// pas bij onload, zodat de pagina niet gaat wachten met
// weergeven op het bestand
// nu weet ik niet meer of dit werkte in Internet Explorer,
// dat moet je misschien even nazoeken of afkijken van bijv
// dojo of scriptaculous.
var scripttag = document.createElement('script');
scripttag.setAttribute('type', 'text/javascript');
scripttag.src = 'http://pad.naar./jou.js';
document.body.appendChild(scripttag);
function printNewsCallback(nieuws)
{
var html = ['<ul>']; // arrays zijn sneller dan strings in Internet Explorer.
for(var i = 0; i < nieuws.length; i++) {
html.push('<li><h2>' + nieuws[i].title + '</h2>');
html.push('<p>' + nieuws[i].body + '</p></li>');
}
html.push('</ul>');
document.getElementById('nieuws').innerHTML = html.join('');
}
}
</script>
<div id="nieuws">
wordt geladen?
</div>
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -