Externe file includen in webpagina

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Ik heb een routertje thuis draaien, waar elke 5 minuten een klein bestandje gegenereerd wordt met wat data.
Verder draait mijn website op Apache bij een hoster.
In het verleden had ik een linkje naar dat bestandje thuis staan, zodat de content op te vragen was op mijn site.

Nu wilde ik dit gaan veranderen zodat het netter zou worden, en ik dacht slim te zijn en SSI te gebruiken.

<!--# include virtual="http://thuisweburl/bestandje.html" -->

En ja, dat werkt dus niet inderdaad, SSI werkt niet cross domain.

Nu wil ik dit toch wel op een nette manier oplossen, maar ik weet niet zo goed hoe. Frames zou misschien kunnen, maar dat vind ik niet echt netjes, en dan ziet de eindgebruiker in de broncode nog steeds mijn thuisurl, en daar wil ik het liefste vanaf.

Ik zou elke 5 minuten natuurlijk de file kunnen uploaden naar mijn domein, maar dat vind ik ook maar zozo, voor die 10 hits per dag.

In de toekomst wil ik misschien cgi gebruiken om een nette foutmelding te tonen als mijn ADSL thuis eruit ligt, maar dat is nog toekomstmuziek.

Hoe zou ik dus de content van een file kunnen opnemen in een andere file?

Ik heb ook al gedacht aan een cgi-script :

code:
1
2
#!/bin/sh
wget -P .. http://thuisURL/bestandje.html


En dan daarna een virtual include.

Maar hiermee komt de file niet binnen...wellicht een rechtenprobleempje of zo. De url is goed, die is getest.

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • EdwinB
  • Registratie: September 1999
  • Laatst online: 22-09 14:41
Ik zou elke 5 minuten een ftp script laten lopen die het bestandje bij je hoster neerzet :)

Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Ja dat is wel een optie, maar dat klinkt weer zo...ja ... simpel.

En om nou 288 keer per dag een file te uploaden die hooguit 10 keer per dag bekeken wordt...tja, het kan.

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
Sja, ik ben dan zelf weer zo van dat PHP gebeuren, vooral omdat het makkelijk is. Je kan natuurlijk altijd je eigen taaltje gebruiken, maar aangezien je Apache draait, kan ik er denk ik ook wel vanuitgaan dat je PHP draait? In ieder geval zou je een script brouwen en deze in een 5 min. crontab gooien. In PHP zou het er ongeveer zo uitzien
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

// Gegevens ophalen
$url  = "http://thuisURL/bestandje.html";
$data = file_get_contents($url);

$filename = "bestandje.html";

/* Eventueel de gegevens uit het oude bestand behouden (even uncommenten)

if(file_exists($filename))
{
  $data .= file_get_contents($filename);
}

*/

// Gegevens wegschrijven naar bestand
file_put_contents($filename,$data);

?>

Acties:
  • 0 Henk 'm!

Verwijderd

Als ie toch maar 10x op een dag bekeken gaat worden kun je em ook ophalen op het moment dat iemand em gaat bekijken. Net zo makkelijk.

Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Verwijderd schreef op zaterdag 11 april 2009 @ 01:32:
Als ie toch maar 10x op een dag bekeken gaat worden kun je em ook ophalen op het moment dat iemand em gaat bekijken. Net zo makkelijk.
Wat bedoel je hier mee? Dat wil ik dus in feite ook.

Ik genereer nu elke 5 minuten een beetje output, maar dan kan ook nog wel eens per 2 minuten worden.

De pagina waar de info te zien is, is vrij groot. Daarom wilde ik dat stukje tekst dus met een include erin stoppen.

Van PHP heb ik geen kaas gegeten helaas, en ik wil proberen om alles in voor mij enigszins begrijpelijke taal te houden. Alle pagina's zijn nu html met css.

een cgi script executen waarmee de inhoud in de html terecht komt zou natuurlijk ook een mooie optie zijn. Dan hoef ik ook die file niet over te halen.

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:48

Patriot

Fulltime #whatpulsert

Ik neem aan dat je de CGI-scriptjes in Perl schrijft? Wat let je de file met Perl op te halen en in een html template te stoppen? Of heb je van Perl verder ook geen kaas gegeten?

Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Patriot schreef op zaterdag 11 april 2009 @ 01:48:
Ik neem aan dat je de CGI-scriptjes in Perl schrijft? Wat let je de file met Perl op te halen en in een html template te stoppen? Of heb je van Perl verder ook geen kaas gegeten?
Ik heb een paar cgi scriptjes met shell script. Perl zat ik ook aan te denken, maar dan wordt het inderdaad googlen voor mij... :X

Ik krijg het gevoel dat ik iets wil waar ik de ballen verstand van heb... :|

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • r0b
  • Registratie: December 2002
  • Laatst online: 21-09 14:54

r0b

Klein stukje PHP:
PHP:
1
<?php include_once("http://linkjenaarhuis.nl/bla.txt"); ?>


Onzichtbaar; enige vereiste is dat de pagina bij de hoster een .php extentie heeft. :) en fopen moet enabled zijn, maar dat is het standaard.

[ Voor 16% gewijzigd door r0b op 11-04-2009 02:06 ]


Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
r0b schreef op zaterdag 11 april 2009 @ 02:04:
Klein stukje PHP:
PHP:
1
<?php include_once("http://linkjenaarhuis.nl/bla.txt"); ?>


Onzichtbaar; enige vereiste is dat de pagina bij de hoster een .php extentie heeft. :) en fopen moet enabled zijn, maar dat is het standaard.
Hmmm maar dan moet ik toch de pagina herschrijven naar php?

Edit: Hmm, niet dus...het werkt!

Is dat nu wel netjes dan? De file begint met:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

[ Voor 34% gewijzigd door Mistraller op 11-04-2009 02:12 ]

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • r0b
  • Registratie: December 2002
  • Laatst online: 21-09 14:54

r0b

Mistraller schreef op zaterdag 11 april 2009 @ 02:09:
[...]

Hmmm maar dan moet ik toch de pagina herschrijven naar php?
Als je die betreffende pagina een .php extentie geeft en dat stukje code erin copy/paste zou het gewoon moeten werken :)
(Even aangenomen dat je hoster PHP ondersteund ... anno 2009, mag je dat wel verwachten :P)
Mistraller schreef op zaterdag 11 april 2009 @ 02:09:
[...]

Hmmm maar dan moet ik toch de pagina herschrijven naar php?
Nee, alles wat buiten de <?php ?> tags valt wordt als HTML geïnterpreteerd :)
Mistraller schreef op zaterdag 11 april 2009 @ 02:09:
[...]
Is dat nu wel netjes dan? De file begint met:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Jahoor; bekijk de source van de pagina maar eens in FF / IE; de PHP code die jij in het bron .php bestand had staan is nu geparsed als valide HTML in hetzelfde bestand.

Bijvoorbeeld:
PHP bestand, lokaal bekekeken:
HTML:
1
2
3
4
5
6
7
<html>
   <title>Waa?</title>
      <body>
       <h1>Hello world!</h1>
       <p><?php echo "meukee!"; ?></p>
       </body>
</html>


Hetzelfde PHP bestand, nadat hij door PHP geparsed is (en hoe jij hem uiteindelijk in de browser zou zien):
HTML:
1
2
3
4
5
6
7
<html>
   <title>Waa?</title>
      <body>
       <h1>Hello world!</h1>
       <p>meukee!<p>
       </body>
</html>

[ Voor 69% gewijzigd door r0b op 11-04-2009 02:19 ]


Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
r0b schreef op zaterdag 11 april 2009 @ 02:11:
[...]

Als je die betreffende pagina een .php extentie geeft en dat stukje code erin copy/paste zou het gewoon moeten werken :)
(Even aangenomen dat je hoster PHP ondersteund ... anno 2009, mag je dat wel verwachten :P)


[...]


Nee, alles wat buiten de <?php ?> tags valt wordt als HTML geïnterpreteerd :)
Sorry maar dan nog een vraagje, hoe kan ik dan in de toekomst een cgi script laten uitvoeren middels SSI? (exec cgi) Want daarvoor moet de file shtml meekrijgen.

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • r0b
  • Registratie: December 2002
  • Laatst online: 21-09 14:54

r0b

Dat is nu toch niet meer nodig? Of zie ik iets over het hoofd?
Wijzigingen worden nu realtime (dwz: zodra de .php pagina opgevraagd wordt) weergegeven. :)

Of bedoel je wat anders?

[ Voor 33% gewijzigd door r0b op 11-04-2009 02:24 ]


Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Nee ik dacht aan wat andere dingen. Als de ADSL lijn er uit ligt bijvoorbeeld, dat er dan een nette foutmelding wordt getoond of zo. Maar ik zat me net even in te lezen, mocht ik dat ooit gaan bouwen dan kan dat natuurlijk ook met PHP. Thanx!

Ik ben er wel uit zo :)

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:48

Patriot

Fulltime #whatpulsert

Mistraller schreef op zaterdag 11 april 2009 @ 02:16:
[...]

Sorry maar dan nog een vraagje, hoe kan ik dan in de toekomst een cgi script laten uitvoeren middels SSI? (exec cgi) Want daarvoor moet de file shtml meekrijgen.
Dat kan niet op deze manier. Dan zou je iets moeten maken dat de content download en deze in een .shtml file zet. Het is niet helemaal zoals het hoort, maar in dit geval ben ik toch geneigd je daarmee te helpen.

Als je het php-bestand vervangt voor het volgende, zou hij het wel moeten doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

// Inhoud van het bestand ophalen
$content = file_get_contents('http://linkjenaarhuis.nl/bla.txt');

// Wegschrijven naar een .shtml bestand
file_put_contents('opdeserver.shtml', $content);

// De gebruiker doorsturen naar het .shtml bestand
header('Location: http://jouwwebsite.nl/opdeserver.shtml');

// Wat mumbojumbu om de boel een beetje te laten voldoen aan het HTTP protocol
if ($_SERVER['REQUEST_METHOD'] != 'HEAD') 
  echo "http://jouwwebsite.nl/opdeserver.shtml";

exit; // geen output meer na deze regel

?>


Dit script zal het bestand automatisch downloaden en de gebruiker doorsturen naar het gegenereerde bestand. Alles wat daar qua SSI instaat zal gewoon geparsed worden.

EDIT:
Als we file_get_contents() gebruiken kunnen we natuurlijk net zo goed ook file_put_contents() gebruiken.

EDIT:
Oeps }:O. Stiekem komt dit neer op wat Bitage in "Externe file includen in webpagina" al gaf :X

[ Voor 10% gewijzigd door Patriot op 11-04-2009 02:56 . Reden: loze regel uit de code ]


Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
Mistraller schreef op zaterdag 11 april 2009 @ 02:24:
Nee ik dacht aan wat andere dingen. Als de ADSL lijn er uit ligt bijvoorbeeld, dat er dan een nette foutmelding wordt getoond of zo.
include geeft false terug en je krijgt een E_WARNING te zien. Je zou in principe voor het kleine scriptje de error reporting uit moeten gooien en er een if statement in gooien. Zo dus
PHP:
1
2
3
4
5
6
7
8
9
10
<?php

error_reporting(0);

if(!include('http://thuisURL/bestandje.html'))
{
  echo "Vanwege een storing aan de kant van de thuis router kan de pagina niet geladen worden.";
}

?>

Dat is dus als je direct wilt includen. Mocht je de logs echt om de 5 min. willen overzetten, kun je het beste, zoals Patriot en ik al voordeden, het spul ophalen en opslaan, en dat dan met een crontab iedere 5 min. uit laten voeren.

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 22-09 10:56
file_put_contents werkt alleen in PHP5, nog niet elke host heeft dit.

Ik zou voor dit soort zaken het volgende gebruiken:

PHP:
1
2
3
4
5
6
7
8
<?php

    $content = @file_get_contents('eenbestand.html');
    
    if(!empty($content)) echo $content;
    else echo 'Geen content.';
    
?>

Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
rhodium schreef op zaterdag 11 april 2009 @ 04:58:
file_put_contents werkt alleen in PHP5, nog niet elke host heeft dit.
Aan de andere kant: PHP 5 is al een hele poos uit, je mag er denk ik wel vanuit gaan dat je hoster PHP 5 draait. Zo niet, kun je het natuurlijk altijd zelf fabriceren met fopen() e.d.

Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 20:48

Patriot

Fulltime #whatpulsert

rhodium schreef op zaterdag 11 april 2009 @ 04:58:
file_put_contents werkt alleen in PHP5, nog niet elke host heeft dit.

Ik zou voor dit soort zaken het volgende gebruiken:

PHP:
1
2
3
4
5
6
7
8
<?php

    $content = @file_get_contents('eenbestand.html');
    
    if(!empty($content)) echo $content;
    else echo 'Geen content.';
    
?>
Als je host nog geen PHP 5 ondersteunt, dan zou ik persoonlijk sowieso op zoek gaan naar een andere host. PHP 5 is nu al zo lang uit dat iedere goede host al is overgestapt. En anders moet je mijn script weer terug aanpassen en er fopen, fwrite en fclose van maken, dat werkt wel.

Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij is een van de eerste comments op de manual page van file_put_contents een stukje code om het in PHP4 ook beschikbaar te maken. Op zich moet dat dus geen probleem zijn.

Wel waar is dat iedere fatsoenlijke hoster al een tijdje op PHP5 zit, maar niet iedereen heeft behoefte aan een fatsoenlijke hoster, sommige mensen gaan voor de laagste prijs.

Acties:
  • 0 Henk 'm!

  • Mistraller
  • Registratie: Oktober 2002
  • Laatst online: 00:57
Ik zit bij CCChosting, php5 wordt ondersteund. In elk geval geweldig bedankt allen, ik kan vooruit de komende tijd :)

Ik heb al gezien dat PHP nog best aardig te volgen is voor mij. Dat gaat wel lukken dus.

[ Voor 28% gewijzigd door Mistraller op 11-04-2009 14:44 ]

My solar panels | Soladin loggen? | Strava
---------------
Gemak dient de mens, moeite dient de mensheid.

Pagina: 1