[php] afbeelding afvangen door PHP bestand

Pagina: 1
Acties:
  • 480 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

wij zitten hier met een kleine vraag.
Is het mogelijk om een link bijvoorbeeld www.test.nl/plaatje1.jpg door te laten wijzen naar een php pagina waarbij de titel van het plaatje als een variabele of zo binnenkomt?
Het is namelijk de bedoeling dat alle afbeeldingen die op een dergelijke manier worden opgevraagd worden afgevangen door een PHP bestand waarin, wanneer de gebruiker de rechten bezit, de afbeelding wordt weergegeven of een melding wordt gegeven.

We zijn aan het zoeken geweest, maar hebben niets kunnen vinden, ook omdat we niet de juiste benaming kunnen bedenken.
Heeft iemand tips / tutorials?
Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
Eeuhm, ja, zo iets is mogelijk, ik zou als ik jou was php.net even doorlezen, en kijken bij fopen(), header() en dergelijke.

Copy.com


Acties:
  • 0 Henk 'm!

  • Pyrus
  • Registratie: November 2001
  • Laatst online: 21:57

Pyrus

Hardknock life

Ja, dit is mogelijk.
zie de php manual

Of idd wat sariel zegt, gewoon met fopen() en de juiste headers meesturen.

[ Voor 30% gewijzigd door Pyrus op 18-05-2006 13:05 ]

LinkedIn


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aah, kijk dat begint erop te lijken.
Maar we gaan er van uit dat er heel veel bestanden kunnen komen, misschien zelfs wel duizenden.
Is het dan ook mogelijk om elke aanroep van een afbeelding naar hetzelfde PHP bestand door te sturen? Want om nu voor elke afbeelding een apart bestand te maken gaat ons iets te ver.

Acties:
  • 0 Henk 'm!

  • sariel
  • Registratie: Mei 2004
  • Laatst online: 22-05-2024
ja, natuurlijk kan dat. gewoon een andere naam van het plaatje in de parameter naar het php script aangeven.
image.php?plaatje=1
image.php?plaatje=2
image.php?plaatje=3
image.php?plaatje=4
etc

Copy.com


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Dat vraagt hij toch niet :?

Je kunt 3 dingen doen;
• Bestandsnamen als afbeeldingnaam.php gebruiken
• Alle afbeelding extensies die je gebruikt (gif, jpg, png?) door de PHP-parser laten trekken
• Requests naar een afbeelding rewriten naar een php script met Apache's mod_rewrite

In het 1ste en 2de geval kun je in je phpscript uit $_SERVER['REQUEST_URI'] het opgevraagde pad uitlezen
In het 3de geval kun je met een regel als onderstaande in je .htaccess de afbeeldingnaam hij $_GEt['afbeelding'] lezen
code:
1
RewriteRule ^images/(/.*)$ /afbeelding.php?afbeelding=$1 [L]

[ Voor 4% gewijzigd door frickY op 18-05-2006 13:32 ]


Acties:
  • 0 Henk 'm!

  • Retonator
  • Registratie: Februari 2002
  • Laatst online: 05-08 12:07
fricky
Ik denk dat dat precies wel is wat hij vraagt.
Is het mogelijk om een link bijvoorbeeld www.test.nl/plaatje1.jpg door te laten wijzen naar een php pagina waarbij de titel van het plaatje als een variabele of zo binnenkomt?
Hier lees ik in dat hij de titel van het plaatje als variabelen wil meegeven aan een script.
Wat veel wordt gedaan is het volgende concept.

image.php?naamplaatje=$naam.

image.php dan het plaatje laten returnen met de header image/jpeg nu weet je browser dat het een plaatjes is.
wil je het plaatje gewoon in een webpagina weergeven dan is het volgende mogelijk
code:
1
[img]<?=$naamplaatje."jpg"?>[/img]

[ Voor 4% gewijzigd door Retonator op 18-05-2006 14:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
frickY schreef op donderdag 18 mei 2006 @ 13:32:
• Requests naar een afbeelding rewriten naar een php script met Apache's mod_rewrite
Dit is ongeveer wat we willen, alle verzoeken om een afbeelding moeten door 1 bepaalde PHP pagina worden afgehandeld, om er zo informatie onder te zetten.
De naam/link van de afbeelding moeten dus binnen dat php-bestand als variabele worden meegegeven, zodat we die afbeelding dan later kunnen laten zien als dat vanwege de rechten e.d. van de gebruiker mogelijk is.

Dus als we dit in de .htaccess zetten zou het goed gaan?
Bedankt voor de informatie en hulp!
We gaan het binnenkort testen.

Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 21:50
Verwijderd schreef op donderdag 18 mei 2006 @ 14:56:
Dus als we dit in de .htaccess zetten zou het goed gaan?
mits je mod_rewrite hebt draaien.

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Retonator schreef op donderdag 18 mei 2006 @ 14:11:
wil je het plaatje gewoon in een webpagina weergeven dan is het volgende mogelijk
code:
1
[img]<?=$naamplaatje."jpg"?>[/img]
Het nut van PHP daar ontgaat me. Bovendien ben je de quotes vergeten in de HTML-code.

Ik denk dat het voorbeeld met mod_rewrite het mooiste is. In het script kun je PHP's fpasshtru functie gebruiken.

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

Zowiezo is die code uber ranzig, niet alleen de html, maar ook de php.

PHP:
1
[img]"<?php[/img].jpg" alt="tekst" />


Verder kun je inderdaad met mod-rewrite de url van de request "ombuigen" naar een php script, en ik gok erop dat je dan alsnog de originele request url wel kunt uilezen. (en zo dus de naam van het plaatje kunt achterhalen.)

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou hiervoor ook htaccess gebruiken. Hier kan je vast je antwoord wel vinden:
http://corz.org/serv/tricks/htaccess2.php?page=1

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

killercow schreef op donderdag 18 mei 2006 @ 21:39:
Zowiezo is die code uber ranzig, niet alleen de html, maar ook de php.

PHP:
1
<img src="<?php echo $naamplaatje;?>.jpg" alt="tekst" />
offtopic:
Sinds wanneer zijn short tags ranzig? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Razr
  • Registratie: September 2005
  • Niet online
Ik heb gewoon zoiets in mijn .htaccess file staan:

Redirect /avatar/avatar.jpg http://localhost/avatar/avatar.php

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Localhost doet het goed bij anderen. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Razr
  • Registratie: September 2005
  • Niet online
-NMe- schreef op donderdag 18 mei 2006 @ 22:20:
Localhost doet het goed bij anderen. :+
Is toch ook maar een voorbeeld :P De TS snapt heus wel dat hij die regel moet aanpassen aan zijn situatie :+

Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

-NMe- schreef op donderdag 18 mei 2006 @ 22:17:
[...]

offtopic:
Sinds wanneer zijn short tags ranzig? :?
Sinds je dan short-tags aan moet hebben in je php.ini, en dat je dan dus geen XML meer buiten je php tags kunt hebben in php files, en je dus weer allerlei gezeur tegen komt, puur omdat je zo nodig short-tags nodig dacht te hebben.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

killercow schreef op donderdag 18 mei 2006 @ 22:25:
Sinds je dan short-tags aan moet hebben in je php.ini,
Dat is default zo.
en dat je dan dus geen XML meer buiten je php tags kunt hebben in php files,
Kan wel. XML-files zet je over het algemeen in een andere map dan HTML-files (als je dat niet doet ben je juist ranzig bezig ;)), dus dan kun je short tags ook uitzetten in een .htaccess bestand voor die map.
en je dus weer allerlei gezeur tegen komt, puur omdat je zo nodig short-tags nodig dacht te hebben.
Probeer jij maar eens templates te maken zonder.
PHP:
1
2
3
4
5
6
7
8
9
<html>
  <head>
    <title><?php echo $title; ?></title>
  </head>
  <body>
    <h1><?php echo $pageHeader; ?></h1>
    <p><?php echo $content; ?></p>
  </body>
</html>

vs
PHP:
1
2
3
4
5
6
7
8
9
<html>
  <head>
    <title><?=$title?></title>
  </head>
  <body>
    <h1><?=$pageHeader?></h1>
    <p><?=$content?></p>
  </body>
</html>

Ik weet wel wat ik prettiger vind als ik veel templates moet schrijven. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 18-09 12:47

killercow

eth0

en wat nou als je een xml file moet generaten via php? (wat nogal veel gebeurt in php, sinds de opkomts van ajax/php)

PHP:
1
2
3
4
5
6
7
8
9
10
<?xml version blabla >
<xmlobj>
  <head>
    <title><?=$title?></title>
  </head>
  <body>
    <h1><?=$pageHeader?></h1>
    <p><?=$content?></p>
  </body>
</xmlobj>


DIt gaat bij de 3e char al mis.

Of wil jij specifiek die ene dir, via een extra htaccess constructie dan weer de shorttags ontnemen?

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom niet? En anders echo je de <?xml-tag toch?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Er zijn in apache 2 mogelijkheden om dit af te vangen. Met een mod_rewrite of met mod_action

http://httpd.apache.org/docs/2.0/mod/mod_actions.html
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
killercow schreef op donderdag 18 mei 2006 @ 21:39:
Verder kun je inderdaad met mod-rewrite de url van de request "ombuigen" naar een php script, en ik gok erop dat je dan alsnog de originele request url wel kunt uilezen. (en zo dus de naam van het plaatje kunt achterhalen.)
Met de rewrite rule die ik als voorbeeld gaf is dat niet het geval. De [L] geeft aan dat het een interne rewrite is, waarde browser niets van ziet

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben er even mee aan het klooien geweest.
En het werkt tot nu toe, kijk maar: http://vdberg-it.com/fotoboek/kwartcirkelOnder.bmp
Echter, wanneer ik deze foto op een forum of website wil posten, gaat het fout:
Dan krijg ik het welbekende kruisje.
De .htaccess is als volgt:
code:
1
2
3
4
5
6
7
8
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+).JPG /fotoboek/afbeelding.php?afbeelding=$1 [L]
RewriteRule ^(.+).jpg /fotoboek/afbeelding.php?afbeelding=$1 [L]
RewriteRule ^(.+).JPEG /fotoboek/afbeelding.php?afbeelding=$1 [L]
RewriteRule ^(.+).jpeg /fotoboek/afbeelding.php?afbeelding=$1 [L]
RewriteRule ^(.+).BMP /fotoboek/afbeelding.php?afbeelding=$1 [L]
RewriteRule ^(.+).bmp /fotoboek/afbeelding.php?afbeelding=$1 [L]

Hoe kan ik dit 'gedrag' voorkomen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Om te beginnen kan je .htaccess file een stuk beter. Blaat.Bmp werkt nou bijvoorbeeld niet, en zo wel:
code:
1
2
3
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)\.(bmp|png|gif|jpe?g) /fotoboek/afbeelding.php?afbeelding=$1 [NC,L]

Daarnaast geef je nu blijkbaar geen header content-type header mee. Als je een plaatje serveert, dan moet je ook tegen de browser vertellen dat het een plaatje is. Gebruik je imagepng() om een plaatje te maken, dan zul je dus bovenaan je script een "Content-type: image/png"-header moeten setten.

Ik zie momenteel trouwens sowieso een tekst en geen plaatje? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het klopt dat je geen plaatje ziet.
Ik heb namelijk de naam die hij binnen krijgt gewoon geechoëd.
Dit om te kijken of het werkt.

Maar ik denk dat ik al ongeveer weet waar de fout zit.
Is het mogelijk om na te gaan hoe de afbeelding wordt opgevraagd? Binnen een website / forum of gewoon via een url?
Want als het via een url is zou je er informatie omheen kunnen geven, en wanneer het een website / forum is zou je dus gewoon een foto kunnen generen (m.b.v. de bestandsnaam) met de daarbijbehorende header.
En dit alles zou dan binnen het php-bestand moeten gebeuren.
Maar hoe weet je wanneer het een website is of wanneer het een ingevoerde / aangeklikte url is?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom zou je dat willen? Het moet toch gewoon altijd een plaatje worden?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op maandag 22 mei 2006 @ 19:14:
Waarom zou je dat willen? Het moet toch gewoon altijd een plaatje worden?
In de gevallen van een aangeklikte link / ingetypte URL willen we er extra informatie e.d. weergeven bij de foto's, terwijl dat bij een website e.d. natuurlijk niet de bedoeling is en ook niet kan.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je kan geen teksten opnemen in hetzelfde bestand waar je ook het plaatje afdrukt. Je zal dus afhankelijk van de referer (die niet altijd gezet wordt en dus niet betrouwbaar is) moeten kijken naar welk script je redirect en dan al dan niet een plaatje genereren.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op maandag 22 mei 2006 @ 19:26:
Je kan geen teksten opnemen in hetzelfde bestand waar je ook het plaatje afdrukt. Je zal dus afhankelijk van de referer (die niet altijd gezet wordt en dus niet betrouwbaar is) moeten kijken naar welk script je redirect en dan al dan niet een plaatje genereren.
We zouden dus iets kunnen programmeren waarbij er eerst naar de referer wordt gekeken, en als die is zoals wij graag willen moet een afbeelding + tekst worden weergegeven, en anders gewoon de afbeelding, wat dus de standaard optie zal worden.
Hiermee ben je de onbetrouwbaarheid ook gepasseerd, of zie ik dat verkeerd?
Pagina: 1