webpagina in img src?
Ik vraag me het volgende af. Als de src van een image naar een webpagina verwijst, wordt die webpagina dan ook daadwerkelijk aangeroepen?
<img src="http://www.mijnsite.nl">
Wordt mijnsite.nl nu aangeroepen? Op het scherm zie ik namelijk een rood kruisje.
Vanwaar deze vraag?
Ik ben bezig een framework te maken en alle aanroepen (via de browser) die niet naar een bestand verwijzen, worden naar het framework gestuurd. Echter, stel dat een afbeelding getoond wordt die van de server is verwijderd, dan bestaat het bestand niet en wordt er dus doorverwezen naar het framework. Er gebeurt dan eigenlijk dus dit:
<img src="http://www.mijnsite.nl/ganaarframework">
Nu ben ik dus benieuwd of 1) het framework daadwerkelijk wordt aangeroepen en 2) of ik in het framework kan detecteren dat het om een afbeelding gaat en dan een "niet gevonden" afbeelding kan laten renderen zodat je niet zo'n lelijk rood kruisje krijgt. Ik hoef niet te weten HOE ik dit zou moeten doen, maar ben alleen even nieuwsgierig of het uberhaupt mogelijk is.
<img src="http://www.mijnsite.nl">
Wordt mijnsite.nl nu aangeroepen? Op het scherm zie ik namelijk een rood kruisje.
Vanwaar deze vraag?
Ik ben bezig een framework te maken en alle aanroepen (via de browser) die niet naar een bestand verwijzen, worden naar het framework gestuurd. Echter, stel dat een afbeelding getoond wordt die van de server is verwijderd, dan bestaat het bestand niet en wordt er dus doorverwezen naar het framework. Er gebeurt dan eigenlijk dus dit:
<img src="http://www.mijnsite.nl/ganaarframework">
Nu ben ik dus benieuwd of 1) het framework daadwerkelijk wordt aangeroepen en 2) of ik in het framework kan detecteren dat het om een afbeelding gaat en dan een "niet gevonden" afbeelding kan laten renderen zodat je niet zo'n lelijk rood kruisje krijgt. Ik hoef niet te weten HOE ik dit zou moeten doen, maar ben alleen even nieuwsgierig of het uberhaupt mogelijk is.
De pagina wordt dan inderdaad aangeroepen. Als je er voor zorgt dat er 1 manier is om plaatjes aan te roepen kan je dat in je framework checken en eventueel een 404-afbeelding terug sturen.
Volgens mij kun je niet detecteren dat er om een afbeelding wordt gevraagd, punt 2 kan dus niet.
De aanroep wordt wel gedaan zoals Terence al zegt
De aanroep wordt wel gedaan zoals Terence al zegt
@TH: Oke, met die "1 manier" bedoel jij bijvoorbeeld: http://www.mijnsite.nl/toonplaatje/315 ?
@TJVB: betreffende punt 2...
Stel dat je www.mijnsite.nl/plaatje.jpg aanroept en die bestaat niet. Als het goed is (maar dit weet ik dus niet zeker!!!!) wordt (via htaccess) "plaatje.jpg" nu doorgestuurd naar mijn framework. In het framework zou ik dan kunnen controleren of het om een plaatje gaat. Zo ja, dan een 'niet gevonden' plaatje renderen. Of wordt "plaatje.jpg" niet doorgestuurd omdat het bestand niet bestaat?
@TJVB: betreffende punt 2...
Stel dat je www.mijnsite.nl/plaatje.jpg aanroept en die bestaat niet. Als het goed is (maar dit weet ik dus niet zeker!!!!) wordt (via htaccess) "plaatje.jpg" nu doorgestuurd naar mijn framework. In het framework zou ik dan kunnen controleren of het om een plaatje gaat. Zo ja, dan een 'niet gevonden' plaatje renderen. Of wordt "plaatje.jpg" niet doorgestuurd omdat het bestand niet bestaat?
Je kunt wel detecteren of een bestaand bestand wordt aangeroepen! In htaccess kun je een verzoek om een niet-bestaand plaatje zo doorzetten:
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} (\.png|\.jpg|\.gif)
RewriteRule ^(.*)$ /images/plaatje_niet_gevonden.png
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} (\.png|\.jpg|\.gif)
RewriteRule ^(.*)$ /images/plaatje_niet_gevonden.png
Dankjewel Bas. Kan dat alleen via htaccess of ook via framework zoals hierboven beschreven?
p.s. waarom gebruik je REQUEST_URI in plaats van REQUEST_FILENAME?
p.s. waarom gebruik je REQUEST_URI in plaats van REQUEST_FILENAME?
Ik test wel meer dingen dan alleen de bestandsnaam, en gebruik uit gewoonte de URI.
Zie ook http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
Kan *wat* alleen via htaccess? Wanneer je een verzoek naar een niet-bestaand bestand doorstuurt naar je 'framework', ik vermoed naar een of andere front controller, krijg je toch op zijn minst het verzochte pad door? Daar moet je dan aan beslissen of het een afbeelding betreft.
Wel een dure oplossing (performance-wise) als je direct een afbeelding kunt serveren.
Zie ook http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
Kan *wat* alleen via htaccess? Wanneer je een verzoek naar een niet-bestaand bestand doorstuurt naar je 'framework', ik vermoed naar een of andere front controller, krijg je toch op zijn minst het verzochte pad door? Daar moet je dan aan beslissen of het een afbeelding betreft.
Wel een dure oplossing (performance-wise) als je direct een afbeelding kunt serveren.
Dat laatste bedoel ik inderdaad... of het verzochte pad wordt doorgestuurd naar mijn framework. Ik snap dat het performance kost, maar via mijn framework ben ik wel flexibeler... bijvoorbeeld welk "niet gevonden" plaatje moet worden getoond, de default variant of een specifieke versie enz.
performance ben ik niet bang voor omdat ik niet verwacht dat het vaak zal vorkomen dat er een plaatje ontbreekt.
performance ben ik niet bang voor omdat ik niet verwacht dat het vaak zal vorkomen dat er een plaatje ontbreekt.
Gewijzigd op 12/01/2011 12:28:18 door Ozzie PHP
Je vraag is dus beantwoord? Je krijgt het request echt binnen. Op je ontwikkelomgeving kun je dat overigens snel vaststellen, en live is het nog altijd in het access_log te zien.
Ja mijn vraag is beantwoord :) Ik wilde inderdaad weten of de request echt binnenkomt, aangezien ik momenteel alleen maar een rood kruisje zie als ik handmatig naar m'n index.php verwijs via <img src="index.php">.




