[PHP] Image met querystring

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb me helemaal suf gezocht in Google en GoT, maar kom er maar niet achter hoe dit werkt. 8)7

In veel mailinglistsoftware wordt afgevangen of een ontvanger de e-mail geopend heeft door middel van (bijvoorbeeld) een 1x1 pixel transparante afbeelding met een unieke code in een querystring, bijv.

HTML:
1
<img src="http://etc/afbeelding.gif?code=123">


Maar hoe vang je die querystring dan serverside af? :?

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

NMe

Quia Ego Sic Dico.

Multiviews, server logs, .gif files door PHP/ASP laten parsen in de map waar die file staat...enz. Er zijn aardig wat manieren te bedenken. ;)

'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.


  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
het hoeft zelfs geeneens een afbeelding te zijn volgens mij.. :p maar gewoon .gif laten parsen (kan in apache in httpd.conf of via htaccess) en dan via de GD library een lege gif aanmaken.

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 19-09 14:23
Je kan ook gewoon dit doen:

HTML:
1
<img src="http://etc/afbeelding.php?code=123">


Moet je er wel voor zorgen dat afbeelding.php de goede headers meestuurt :)

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
Bedenk je wel dat moderne mailclients om exact deze reden afbeeldingen in e-mails normaliter blokkeren.

[ Voor 8% gewijzigd door mcDavid op 19-02-2009 17:04 ]


  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
mcDavid schreef op donderdag 19 februari 2009 @ 17:03:
Bedenk je wel dat moderne mailclients om exact deze reden afbeeldingen in e-mails normaliter blokkeren.
Tja, spammers inderdaad. Daar is niets meer aan te doen. Wij doen het zelf ook op deze manier, je wilt niet tig duizend mailtjes versturen met de afbeeldingen embedded, dan worden ze nogal groot en dan valt er ook niets meer te lezen.
In plaats van een spacer-image kan je ook het of een van de plaatjes die bij de brief horen gebruiken als meetplaatje trouwens. Als je het dan toch op die manier gaat afvangen..

Saved by the buoyancy of citrus


Verwijderd

Topicstarter
Luqq schreef op donderdag 19 februari 2009 @ 16:49:
Je kan ook gewoon dit doen:

HTML:
1
<img src="http://etc/afbeelding.php?code=123">


Moet je er wel voor zorgen dat afbeelding.php de goede headers meestuurt :)
Zo heb ik het uiteindelijk ook gedaan. In het script eerst een counter laten updaten en dan een header met afbeelding sturen als output. Werkt prima.

Op de eerstgenoemde manier en dan met bijv. modrewrite zou idd ook kunnen, maar ik vind het zo wel goed eigenlijk.

Bedankt voor de tips!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 12:22
let wel op dat je daadwerkelijk (met GD) een plaatje van 1px ofzo maakt, anders loop je de kans dat sommige programma's zo'n gebroken-afbeelding plaatje weergeven...

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Hoeft niet eens met GD, kan ook gewoon de gif outputten
PHP:
1
2
Header('Content-Type: image/gif');
readfile('1px.gif');


of nog makkelijker, gewoon na de php?> tag (aannemend dat je niks naar output heb gestuurd) de gif file starten.
code:
1
2
3
4
//php gedoe
Header('Content-Type: image/gif');
php?>
GIF89a etc..

http://xyproblem.info/


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

De vraag is vooral of je wel wilt weten hoeveel mensen afbeeldingen tonen in hun mail, of dat je wilt weten hoeveel mensen de mail lezen.... ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20-09 17:02
Bespaar je de overhead van GD, je kunt gewoon de inhoud van een leeg gifje pakken in plaats van er dynamisch eentje aan te maken.

Ik zou voor deze check gebruik maken van mod rewrite om een url die er zo uit ziet: "http://host.tld/images/check/[unieke_id].jpeg". Dat heeft voordelen voor spamfilters.

Als een spamfilter een plaatje ziet met het formaat van 1pixel en als afbeeldingslocatie een duidelijke dynamische link, met een get parameter, dan is al snel duidelijk dat de aanroep geblokkeerd wordt. Een normaal plaatje met een ogenschijnlijk statische link heeft veel meer kans er door te komen.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
drm schreef op donderdag 19 februari 2009 @ 22:23:
De vraag is vooral of je wel wilt weten hoeveel mensen afbeeldingen tonen in hun mail, of dat je wilt weten hoeveel mensen de mail lezen.... ;)
Om het een beetje te forceren kan je de afbeeldingen in de html-code van je mail geen afmetingen meegeven, een Outlook bijvoorbeeld, maakt ze dan zo groot dat je echt de afbeeldingen wilt zien omdat je mail anders onleesbaar is, afhankelijk van hoeveel afbeeldingen je hebt en waar ze staan. :X

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

drm schreef op donderdag 19 februari 2009 @ 22:23:
De vraag is vooral of je wel wilt weten hoeveel mensen afbeeldingen tonen in hun mail, of dat je wilt weten hoeveel mensen de mail lezen.... ;)
Of hoeveel mensen een client gebruiken die vindt dat een "blaat.gif?id=123" een script is en geen afbeelding en die "afbeelding" dus ook niet tonen......

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:39
maak er dan domein.tld/images/32/show.gif van (waar 32 het id is)...

Acties:
  • 0 Henk 'm!

  • TvdW
  • Registratie: Juli 2007
  • Laatst online: 30-08-2021
418O2 schreef op vrijdag 20 februari 2009 @ 09:17:
maak er dan domein.tld/images/32/show.gif van (waar 32 het id is)...
bijna geen enkel mailprogramma gaat dat accepteren, gewoon omdat ze geen enkele externe afbeelding laden.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

TvdW schreef op vrijdag 20 februari 2009 @ 21:01:
[...]

bijna geen enkel mailprogramma gaat dat accepteren, gewoon omdat ze geen enkele externe afbeelding laden.
Hoeveel mensen denk je dat er zijn die op de knop drukken "externe afbeeldingen binnenladen" als de afbeeldingen lijken te missen? Geloof me maar als ik zeg dat dat er best veel zijn mist er ook echte afbeeldingen in de mail extern staan ;) Nee, 100% waterdicht is het niet, een hele goede indicatie is het wel.

[ Voor 5% gewijzigd door Creepy op 20-02-2009 21:25 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
DanielG schreef op donderdag 19 februari 2009 @ 22:09:
Hoeft niet eens met GD, kan ook gewoon de gif outputten
PHP:
1
2
Header('Content-Type: image/gif');
readfile('1px.gif');


of nog makkelijker, gewoon na de php?> tag (aannemend dat je niks naar output heb gestuurd) de gif file starten.
code:
1
2
3
4
//php gedoe
Header('Content-Type: image/gif');
php?>
GIF89a etc..
Maar dan niet zo, nu heb je een enter voor je GIF, wat hem corrumpeert.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

ThomasB schreef op vrijdag 20 februari 2009 @ 22:07:
[...]

Maar dan niet zo, nu heb je een enter voor je GIF, wat hem corrumpeert.
Los ervan dat het, ondanks wat DanielG zegt, niet makkelijker is maar eerder lastiger: volgens mij valt die enter sowieso weg.
PHP:
1
2
3
4
5
test
<?php
echo "123";
?>
test

Dit wordt bij mij afgedrukt als:
test
123test

'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!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:39
test 123test

bij mij

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
En bekijk nu de bron eens ;)

Browsers negeren `0x13 0x10` (enter) bij het parsen van de HTML, 't heeft geen betekenis. Tenzij je ofcourse 'text/plain' als Content-Type meegeeft, want dan parst ie 't niet als HTML ;)
NMe schreef op zaterdag 21 februari 2009 @ 00:31:
[...]

Los ervan dat het, ondanks wat DanielG zegt, niet makkelijker is maar eerder lastiger: volgens mij valt die enter sowieso weg.
Je eigen [pre]-blokje geeft al aan dat die enter dus níet wegvalt :P

[ Voor 30% gewijzigd door Osiris op 21-02-2009 00:43 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Osiris schreef op zaterdag 21 februari 2009 @ 00:41:
[...]

Je eigen [pre]-blokje geeft al aan dat die enter dus níet wegvalt :P
Kijk nog eens goed. ;)

Die eerste enter vóór <?php valt niet weg, de laatste enter na ?> wél. ;)

'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!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
NMe schreef op zaterdag 21 februari 2009 @ 00:50:
[...]

Kijk nog eens goed. ;)

Die eerste enter vóór <?php valt niet weg, de laatste enter na ?> wél. ;)
Jeetje, d'r staat 2x 'test' 8)7
Pagina: 1