Algemeen forum ontrent de ontwikkelng, design en hosting van weergerelateerde websites (dit laatste om een beetje on topic te blijven)
#72038
Vraag?
Hoe kan ik de pluim afbeeldingen (.png en .svg) van het knmi (ftp://ftp.knmi.nl/pub_weerberichten/) in een .php bestand invoegen, zodat ik dit php-bestand via een iframe in de website kan laten zien?
Het lukt mij niet, het enige wat ik steeds te zien krijg is het wel bekende kleine kruisje.

Iemand die me op weg kan helpen?

gr. Arie
#72039
Arie,

Staat de provider van je website toe dat je een png-file embed in iframe?
Reden van de vraag;
in het verleden [?] was deze constructie blijkbaar een sluiproute om malicious software te injecteren.
Zie https://blog.sucuri.net/2014/02/new-ifr ... adata.html
#72041
Dat werkt volgens mij wel, de txt bestanden van KNMI werken wel, alleen de plaatjes niet.
Het gaat er om hoe ik deze plaatjes moet oproepen in een php script, dat zal denk ik op een andere manier moeten??
Waarschijnlijk iets met dit commando: echo file_get_contents, daar kom ik nu juist niet uit.
Hoop dat iemand me op weg kan helpen om dit toch via php voor elkaar te krijgen en misschien wel een voorbeeld script heeft.

Bedankt nog voor je reactie.

Gr. Arie
#72042
amvih schreef: 25 mar 2020, 08:54 Vraag?
Hoe kan ik de pluim afbeeldingen (.png en .svg) van het knmi (ftp://ftp.knmi.nl/pub_weerberichten/) in een .php bestand invoegen, zodat ik dit php-bestand via een iframe in de website kan laten zien?
Het lukt mij niet, het enige wat ik steeds te zien krijg is het wel bekende kleine kruisje.
Iemand die me op weg kan helpen?
gr. Arie
Volgens mij maakt het niets uit of je om het plaatje ook nog eens een volmaakt overbodig iFrame zet.
Helaas verbieden browsers al een tijdje om ftp links te gebruiken voor images.
Subresource requests using legacy protocols (like `ftp:`) are blocked. Please deliver web-accessible resources over modern protocols like HTTPS. See https://www.chromestatus.com/feature/5709390967472128 for details.
Oplossing is daarom de plaatjes zelf op te halen via CURL en daarna op te slaan op je eigen website.
Code: Selecteer alles
<?php
$img_url= 'ftp://ftp.knmi.nl/pub_weerberichten/KNMI_expertpluim_Basel_3luik.png';
include 'pluim.php';
echo '<img src="'.$filename.'"  />';
echo PHP_EOL.$echo;
?>

Eerst geef je de url van het op te halen plaatje.
Dan doe je een include van het script wat het plaatje ophaalt en bewaart op je eigen webserver.
De naam van het bewaarde plaatje is opgeslagen in $filename en die komt dus in de < img > beschrijving.
De regel met echo geeft als html commentaar de stappen die het script heeft doorlopen. Altijd handig als er een probleem is.
===
Je kan het script meerdere keren aanroepen. Voor ieder verschillend plaatje wordt een apart cache bestand gemaakt met de naam van het plaatje.
De cache-tijd staat op 2 uur, kan aangepast worden in het begin van het script.
===
Demo op https://sluispark.be/_2.php
Het script om een plaatje op te halen heb ik even 'pluim.php' genoemd en is bijgevoegd.
===
Succes,
wim
Bijlagen
(1.83 KiB) 201 keer gedownload
#72043
Hoi Wim, dank voor het meedenken en de info.

Even resumeren of ik het goed begrijp, ik zit zelf niet zo in deze materie.
Als ik het goed begrijp moet het eerste php scriptje (de regels in het bovenste blokje) op de website geplaatst worden en laat dan het plaatje zien.
In dit scriptje wordt verwezen (included) naar een tweede script pluim.php wat dan op de server draait en waarin wordt gekeken of het opgevraagde plaatje twee uur oud is, zo ja dan wordt een nieuw plaatje gedownload, zo nee dan wordt het plaatje uit de cache gebruikt.
Denk ik juist zo?

Hoe dan om te gaan met meerdere plaatjes/pluimen?
Moet ik dan beide php scriptjes aanpassen (inhoud wijzigen naar de juiste instellingen qua plaatjesnaam "KNMI_expertpluim_Basel_3luik.png") en van naam wijzigen?
Of denk ik hier verkeerd en hoeft alleen het scriptje wat in het blok staat te worden gewijzigd, dus de regel aanpassen "ftp://ftp.knmi.nl/pub_weerberichten/KNM ... _3luik.png" en dan de naam van dat php script hernoemen?

Ik hoor het graag.

Alvast bedankt!

gr. Arie
#72044
amvih schreef: 25 mar 2020, 15:38 Hoi Wim, dank voor het meedenken en de info.

Even resumeren of ik het goed begrijp, ik zit zelf niet zo in deze materie.
Als ik het goed begrijp moet het eerste php scriptje (de regels in het bovenste blokje) op de website geplaatst worden en laat dan het plaatje zien.
In dit scriptje wordt verwezen (included) naar een tweede script pluim.php wat dan op de server draait en waarin wordt gekeken of het opgevraagde plaatje twee uur oud is, zo ja dan wordt een nieuw plaatje gedownload, zo nee dan wordt het plaatje uit de cache gebruikt.
Denk ik juist zo?

Hoe dan om te gaan met meerdere plaatjes/pluimen?
Moet ik dan beide php scriptjes aanpassen (inhoud wijzigen naar de juiste instellingen qua plaatjesnaam "KNMI_expertpluim_Basel_3luik.png") en van naam wijzigen?
Of denk ik hier verkeerd en hoeft alleen het scriptje wat in het blok staat te worden gewijzigd, dus de regel aanpassen "ftp://ftp.knmi.nl/pub_weerberichten/KNM ... _3luik.png" en dan de naam van dat php script hernoemen?

Ik hoor het graag.

Alvast bedankt!

gr. Arie
In pluim.php moet je niets aanpassen.

Op elke plaats waar je een afbeelding wil in je PHP script voeg je de 4 regels toe
Als dat midden in een stuk html is moet er voor nog <?php komen en erna ?>
Code: Selecteer alles
$img_url= 'ftp://ftp.knmi.nl/pub_weerberichten/KNMI_expertpluim_Basel_3luik.png';
include 'pluim.php';
echo '<img src="'.$filename.'"  />';
echo PHP_EOL.$echo;
De eerste regel MOET altijd worden aangepast. Naar het plaatje wat je wilt afbeelden van de knmi-ftp site.
De tweede regel laadt het script wat het plaatje ophaalt en bewaart in de cache.
De PHP-variabele $filename is dan gevuld met de link naar het plaatje op je eigen webserver.
De derde regel moet je aanpassen als dat nodig is naar hoogte en breedte en andere zaken.
Nu staat er blijkbaar in je pagina
Code: Selecteer alles
<img src="_wp_generated/wp365ff300_06.png" alt="" width="250" height="27" style="position:absolute;left:136px;top:259px;width:250px;height:27px;">
      <iframe id="ifrm_28" name="ifrm_28" src="ftp://ftp.knmi.nl/pub_weerberichten/KNMI_weer_en_klimaatpluim_DeBilt_temperatuur.svg" scrolling="no" allowtransparency="true" frameborder="0" class="OBJ-1" style="position:absolute;left:136px;top:287px;width:800px;height:400px;overflow:hidden;"></iframe>
Het lijkt me makkelijker om van de iframe gewoon een <img te maken, net zoals het plaatje daarboven.

Wim