Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[PHP + GD module] Dynamische plaatjes

Pagina: 1
Acties:
  • 519 views

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
Ik heb een probleem met het werkend krijgen van dynamische plaatjes in combinatie met PHP5. Ik maak gebruik van de GD module (http://nl3.php.net/gd).

Het probleem is het volgende:

stap 1: een snel probeerseltje in PHP(4) levert het gewenste resultaat. Omdat het eventueel nodig moet zijn op diverse fora moeten we even de wetten voor [img] tags omzeilen en via een .htaccess file laten weten onze image als php te lezen.

in de .htacces heb ik gezet:
code:
1
AddType application/x-httpd-php .png


In het php bestand heb ik wat nutteloze code voor het verkijgen van iemands ip (bijzonder orgineel :z ). Dit werkt prima zoals hier te zien is. Vervolgens werkt ook het sneaky omzetten naar een png bestand zodat ik hem bijvoorbeeld hier kan posten zoals hieronder te zien is.
Afbeeldingslocatie: http://www.bastijn.nl/zooi/sigs/php4/php4.png.

stap 2: Maar als ik nu hetzelfde geintje uithaal met PHP5 dan gaat er ergens iets mis. Helaas krijg ik geen duidelijke foutmeldingen die mij op weg helpen via google en zaken. De PHP5 linkjes:

Deze werkt prima, maar de image variant (png) doet dit:
Afbeeldingslocatie: http://www.bastijn.nl/zooi/sigs/php5/mysig.png

linkje:
http://www.bastijn.nl/zooi/sigs/php5/mysig.png

Ik heb hier wel de .htaccess aangepast naar:
code:
1
AddType application/x-httpd-php5 .png


De code van mijn php5 bestand verschilt niet veel van mijn andere (werkende) php4 bestand. Ik maak alleen gebruik van een inleesmethode die ingebakken zit.

$data = simplexml_load_file('bladiebloe');
$name = $data->name;

En dan print ik even de naam op dezelfde manier als de andere tekst.

Stap 3: stap 1 herhalen, exact dezelfde code maar nu in .php5 formaat saven. Dit werkt hetzelfde als stap 2. de php file werkt maar de .png niet :?.

http://www.bastijn.nl/zooi/sigs/php5/php5.php5
http://www.bastijn.nl/zooi/sigs/php5/php5.png


Iemand een idee :?.

//edit
Nog wat GD info:
http://www.bastijn.nl/zooi/gd.php
http://www.bastijn.nl/zooi/gd.php5
En de PHP info:
http://www.bastijn.nl/zooi/info.php
http://www.bastijn.nl/zooi/info.php5

[ Voor 9% gewijzigd door Flapmo op 21-08-2008 02:01 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Kan je misschien uitleggen waarom je niet gewoon iets als header('content-type: image/png'); doet? Want je script stuurt nu image/jpeg door en daarna doe je imagepng().

Verder zou ik het zoals Megamind zegt ook gewoon met de .php testen, dan kan je in ieder geval kijken of alles goed werkt.

[ Voor 48% gewijzigd door Wolfboy op 21-08-2008 01:31 ]

Blog [Stackoverflow] [LinkedIn]


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Wat nou als je eerst een test met een .php bestand? Dan kan je teminste gewoon lezen wat de errors zijn, of laat errors loggen naar een file.

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

NMe

Quia Ego Sic Dico.

Haal de header die aangeeft dat het een PNG-image is eens weg. Je kan dan zien of er een foutmelding wordt afgedrukt. ;) Lees vooral ook Programming FAQ - Image manipulation in PHP even door. ;)
Wolfboy schreef op donderdag 21 augustus 2008 @ 01:28:
Kan je misschien uitleggen waarom je niet gewoon iets als header('content-type: image/png'); doet?
Dat lijkt mij namelijk een eenvoudigere oplossing.
Daarmee kun je er op veel forumsoftware niet naar linken, die weigeren bestanden die eindigen op .php als image. :)

[ Voor 17% gewijzigd door NMe op 21-08-2008 01:34 ]

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


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

-NMe- schreef op donderdag 21 augustus 2008 @ 01:30:
Daarmee kun je er op veel forumsoftware niet naar linken, die weigeren bestanden die eindigen op .php als image. :)
Dat is waar ja, al zou ik in dat geval liever een alias of rewriterule gebruiken om fatsoenlijke links te genereren :)

[ Voor 13% gewijzigd door een moderator op 21-08-2008 01:35 ]

Blog [Stackoverflow] [LinkedIn]


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

NMe

Quia Ego Sic Dico.

Wolfboy schreef op donderdag 21 augustus 2008 @ 01:31:
[...]
Dat is waar ja, al zou ik in dat geval liever een alias of rewriterule gebruiken om fatsoenlijke links te genereren :)
Als je die .htaccess file alleen in de folder zet waar die imagefile staat en verder niets, dan maakt dat geen verschil. Sterker nog, dan vind ik de optie van de TS persoonlijk eleganter. :)

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


  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
Ik heb de info + gd info er maar even bijgezet. Het weghalen van de Header heeft geen effect of het eindresultaat. Hij blijft de standaard foutmelding geven. De fouten die genoemt werden in de gegeven link door -NMe- heb ik niet gemaakt (althans, zeg nooit nooit).

"The purpose of computing is insight, not numbers." -- Richard Hamming


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ik zie anders geen fouten ik zie namelijk dit:
PHP:
1
'None', 0 => 'Fighter', 1 => 'Barbarian', 2 => 'Rogue', 3 => 'Magician', 4 => 'Samurai', 5 => 'Paladin', 6 => 'Monk', 7 => 'Ninja', 8 => 'Warlock', 9 => 'Headhunter', 10=> 'Alchemist'); $data = simplexml_load_file('http://ladderslasher.d2jsp.org/xmlChar.php?i=70284'); $name = $data->name; $kills = $data->kills; $class = $class_name[(int)$data->classid]; $exp = $data->exp; $level = $data->level; $hpmax = $data->hpmax; $mqpasses = $data->mqpasses; $mqattempts = $data->mqattempts; ImageTTFText ($image, 8, 0, 10, 17, $black, $font, "and you name is".$name); // output and destroy imagepng($image); imagedestroy($image); ?>

edit: maar hij wordt natuurlijk nu niet meer geparsed :P

Wat voor errors krijg je nu precies want die noem je niet...

[ Voor 8% gewijzigd door Megamind op 21-08-2008 01:45 ]


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

NMe

Quia Ego Sic Dico.

Flapmo schreef op donderdag 21 augustus 2008 @ 01:42:
Het weghalen van de Header heeft geen effect of het eindresultaat. Hij blijft de standaard foutmelding geven.
Dat betekent dat hij nog steeds als image verstuurd wordt. Zorg dat hij niet als image verstuurd wordt en je alleen tekst als uitvoer krijgt.
De fouten die genoemt werden in de gegeven link door -NMe- heb ik niet gemaakt (althans, zeg nooit nooit).
Je klinkt niet erg zeker. Dubbelcheck dat even. ;)

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


  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
Hm in IE laat hij dat inderdaad zien, gebruik standaard firefox en die gaat neer. Maar ook dat is tekst en zeker niet het gewenste effect. Het zou een plaatje moeten worden die hetzelfde laat zien als:

http://www.bastijn.nl/zooi/sigs/php5/mysig.php5

@-NMe-
Wat bedoel je precies? Welk bestand zou je als "alleen tekst" willen krijgen? Nogmaals, met het php5 bestand gaat alles als gewenst. Maar de laatste stap, de .htaccess gebruiken om het forum+imgtag te laten denken dat hij daadwerkelijk een .png bestand gevoerd krijgt gaat mis. Ik denk dat ik niet precies snap wat jij mij probeert te laten doen.

//edit
Als ik alles van image creation weg laat in mijn .php5 bestand geeft hij gewoon een wit scherm, geen errors.

@Megamind
De fout is dat het geen plaatje wordt maar die tekst. Dit terwijl hij hem netjes zou moeten parsen naar een png bestand zoals dat in stap 1 wel gebeurd.

//edit
Even een 3e test gedaan:

Stap 3: stap 1 herhalen, exact dezelfde code maar nu in .php5 formaat saven. Dit werkt hetzelfde als stap 2. de php file werkt maar de .png niet :?.

http://www.bastijn.nl/zooi/sigs/php5/php5.php5
http://www.bastijn.nl/zooi/sigs/php5/php5.png

Het verschil wat ik in de 2 GD info files kan vinden is alleen deze regel:
code:
1
["XPM Support"]=>  bool(false)

Die er bij gekomen is in de gd.php5.

[ Voor 79% gewijzigd door Flapmo op 21-08-2008 02:07 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Die 2e (png) werkt niet omdat hij niet PHP geparsed wordt, je zal die htaccess weer moeten aanzetten

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
Die staat al aan.

De php4 en php5 files zitten in verschillende mappen. map php4 en php5. In de ene map zit een .htacces met:
code:
1
AddType application/x-httpd-php .png


en in de ander:
code:
1
AddType application/x-httpd-php5 .png


Let op het extra vijfje (5).

[ Voor 94% gewijzigd door Flapmo op 21-08-2008 02:19 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ja maar als ik op http://www.bastijn.nl/zooi/sigs/php5/php5.png klik zie ik gewoon broncode en geen output. Weet je zeker dat je htaccess goed staat.

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
code:
1
AddType application/x-httpd-php5 .png


maar ik weet niet honderd procent zeker of dit de nette opvolger is voor

code:
1
AddType application/x-httpd-php .png


De laastste werkt dus voor de php4 situatie maar de eerste niet in php5 situatie. Maar ik vermoed dat het wel hier aan ligt inderdaad, al geven meerdere sites aan dat dit moet werken. Dan wordt het misschien toch verdiepen in rewriter rule om dit grapje uit te halen. Hoop inlees werk voor zo iets kleins :(.

[ Voor 30% gewijzigd door Flapmo op 21-08-2008 02:30 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


Verwijderd

Als je Apache gebruikt kun je ook Multiviews activeren (kan simpel in een .htaccess) en dan de file .png.php noemen. Je kan dan de file gewoon opvragen via Apache als .png maar hij zal em parsen als een php file omdat de file fysiek een php bestand is.

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 15-11 21:39

Flapmo

and back is gigi!

Topicstarter
Deze laatste optie schijnt te werken, bedankt. Al snap ik nog steeds niet waarom de andere methode niet zou werken. Nuja, dat is een klusje voor morgen :).

//edit
iets te vroeg gejuigt. Deel doet het, dit wordt even klooien om te kijken of de rest werkende te krijgen is :). Ik post hier later nog wel.

//edit
Ik heb alles werkend, MultiViews was de oplossing. Bedankt voor alle reacties :).

[ Voor 45% gewijzigd door Flapmo op 21-08-2008 03:17 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


Verwijderd

Achjah, het lijkt mij dat je ook niet wil dat PNG files geparsed worden door PHP, hij doet dan namelijk alle PNG files parsen op die manier.

Vergeet je dan per ongeluk ergens waar gebruikers PNG files kunnen uploaden dat uit te schakelen heb je gelijk een probleem. Terwijl het uploaden van PNG files toch niet zo vreemd is.

Ik zou gewoon lekker alle PHP files .php laten heten, via multiviews of mod rewrite kun je het naar de buitenwereld presenteren zoals je maar wil.

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

-NMe- schreef op donderdag 21 augustus 2008 @ 01:36:
[...]

Als je die .htaccess file alleen in de folder zet waar die imagefile staat en verder niets, dan maakt dat geen verschil. Sterker nog, dan vind ik de optie van de TS persoonlijk eleganter. :)
Ben ik niet met je eens eigenlijk, je hebt dan png bestanden staan die eigenlijk php bestanden horen te zijn, als jij later met je editor in die map kijkt is het niet echt duidelijk meer dat het png bestand geen png is. Aangezien een alias in principe geen performance verlies geeft lijkt mij dat een nettere optie, als je meer wil dan is er natuurlijk nog altijd mod_rewrite maar dat is niet perse nodig :)

Blog [Stackoverflow] [LinkedIn]


Verwijderd

Hallo geachte gevorderden,
ik kom pas kijken, en ben Reuze benieuwd hoe ik zelf dit soort bewegende mini (st)rips bij mijn mailtjes
kan versturen zoals "wolfboy" b.v. ?
En ik zou er ook graag een paar ontvangen voor de leuk !
BEDANKT vast !
MVrG, Coen.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 28 september 2008 @ 14:18:
Hallo geachte gevorderden,
ik kom pas kijken, en ben Reuze benieuwd hoe ik zelf dit soort bewegende mini (st)rips bij mijn mailtjes
kan versturen zoals "wolfboy" b.v. ?
En ik zou er ook graag een paar ontvangen voor de leuk !
BEDANKT vast !
MVrG, Coen.
Beste zoencoen, neem even een kijkje in ons Algemeen beleid en ons Programming Beleid en dan zul je zien dat dit soort replies weinig nut hebben hier op het forum ;)

Open gerust een nieuw, eigen, topic maar zorg dan wel dat je je houdt aan het lokaal geldende beleid; dat vind je altijd bovenaan een forum en in PRG is dat dus het voorgenoemde beleid. Ook onze Quickstart kan je helpen met het opzetten van een nieuw topic en is dus zeer het lezen waard.

Desalniettemin van harte welkom op GoT :w

[ Voor 28% gewijzigd door RobIII op 28-09-2008 14:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.