PHP Include

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
Hoi,

Ik heb een scripts om met php een png image te maken.

In het deel van Code 1 zie je dat ik een include doe om dat kleuren in het php script toe te voegen. Ik krijg dan echter het probleem dat er in de afbeelding de php color codes gezet worden. Zie Code 2.

Ik heb even gezocht op Google maar kon niet echt vinden hoe ik dit kan oplossen. Heeft iemand een tip voor mij ? Ik heb zelf niet veel ervaring en ben sinds een paar weken bezig om meer van php te leren..

CODE 1 (header van img.php)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// Set the content-type
header('Content-type: image/png');

// Create a image; 235x235
$im = imagecreatetruecolor(235, 235);

// Colors
ínclude 'img-colors.php';


// Make background white
imagefilledrectangle($im, 0, 0, 235, 235, $creaml);

...
?>


CODE 2 (afbeelding.png)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Some colors

$white   = imagecolorallocate($im, 255, 255, 255); // White
$black   = imagecolorallocate($im, 0, 0, 0); // Black
$grey    = imagecolorallocate($im, 244, 244, 244); // Grey
$greyd   = imagecolorallocate($im, 192, 192, 192); // Dark grey color
$red     = imagecolorallocate($im, 255, 0, 0); // Red
$redl    = imagecolorallocate($im, 255, 153, 153); // Light Red
$green   = imagecolorallocate($im, 0, 204, 0); // Green
$orange  = imagecolorallocate($im, 255, 128, 0); // Orange 
$orangel = imagecolorallocate($im, 244, 164, 96); // LightOrange
$blue    = imagecolorallocate($im, 0, 191, 255); //DeepSkyBlue
$cream   = imagecolorallocate($im, 255,228,196); // Cream color 
$creaml  = imagecolorallocate($im, 255,248,220); // Light cream color
&#8240;PNG

   
IHDR   ë   ë   hö&#8218;   ·IDATxœíÁ1   Â*õOím*                                                                                                                                                                €7&#710;4 &#8221;œæZ    IEND®B`&#8218;

Beste antwoord (via tom.cx op 18-10-2016 14:39)


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

NMe

Quia Ego Sic Dico.

Laat me raden: je hebt geen <?php aan het begin van img-colors.php staan.

Overigens kun je als ik het me goed herinner ook gewoon 0xFFFFFF schrijven op elke plek waar je nou $white zet, dus als je al op deze manier in een aparte file je kleuren wil definiëren zou ik constantes kiezen. ;)

[ Voor 61% gewijzigd door NMe op 18-10-2016 14:06 ]

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

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Laat me raden: je hebt geen <?php aan het begin van img-colors.php staan.

Overigens kun je als ik het me goed herinner ook gewoon 0xFFFFFF schrijven op elke plek waar je nou $white zet, dus als je al op deze manier in een aparte file je kleuren wil definiëren zou ik constantes kiezen. ;)

[ Voor 61% gewijzigd door NMe op 18-10-2016 14:06 ]

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

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
NMe schreef op dinsdag 18 oktober 2016 @ 14:04:
Laat me raden: je hebt geen <?php aan het begin van img-colors.php staan.

Overigens kun je als ik het me goed herinner ook gewoon 0xFFFFFF schrijven op elke plek waar je nou $white zet, dus als je al op deze manier in een aparte file je kleuren wil definiëren zou ik constantes kiezen. ;)
Uhm, ja dat klopt. Dat heb ik niet. Maar dat hoeft toch niet op het moment dat ik een 'include' doe?

Ik ga het even testen.

Acties:
  • 0 Henk 'm!

  • Fusioxan
  • Registratie: November 2009
  • Laatst online: 13:09
tom.cx schreef op dinsdag 18 oktober 2016 @ 14:08:
[...]

Uhm, ja dat klopt. Dat heb ik niet. Maar dat hoeft toch niet op het moment dat ik een 'include' doe?

Ik ga het even testen.
Ja dat moet wel. :+ Anders weet die andere niet dat het PHP code in dat bestand is.

[ Voor 10% gewijzigd door Fusioxan op 18-10-2016 14:11 ]


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 18:36

Ventieldopje

I'm not your pal, mate!

Bovendien is er in het tweede php bestand geen referentie naar $im..

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19:58

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ventieldopje schreef op dinsdag 18 oktober 2016 @ 14:23:
Bovendien is er in het tweede php bestand geen referentie naar $im..
Is dat nieuw? Bij mijn weten hebben individuele files geen eigen scope.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
Ventieldopje schreef op dinsdag 18 oktober 2016 @ 14:23:
Bovendien is er in het tweede php bestand geen referentie naar $im..
De tweede code is de broncode van youtube.png ;-). Du shet klopt dat hier verder geen php in staat.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Ventieldopje schreef op dinsdag 18 oktober 2016 @ 14:23:
Bovendien is er in het tweede php bestand geen referentie naar $im..
Die is er wél want $im staat in het bestand dat de include doet in de global namespace gedefinieerd.
tom.cx schreef op dinsdag 18 oktober 2016 @ 14:37:
[...]

De tweede code is de broncode van youtube.png ;-). Du shet klopt dat hier verder geen php in staat.
Dat is dan weer niet wat hij bedoelde. ;)

[ Voor 30% gewijzigd door NMe op 18-10-2016 14:38 ]

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

  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 01-09 08:19
tom.cx schreef op dinsdag 18 oktober 2016 @ 14:37:
[...]

De tweede code is de broncode van youtube.png ;-). Du shet klopt dat hier verder geen php in staat.
Heb je al
code:
1
<?php


Bovenaan img-colors.php gezet?

Acties:
  • 0 Henk 'm!

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
NMe schreef op dinsdag 18 oktober 2016 @ 14:04:
Laat me raden: je hebt geen <?php aan het begin van img-colors.php staan.

Overigens kun je als ik het me goed herinner ook gewoon 0xFFFFFF schrijven op elke plek waar je nou $white zet, dus als je al op deze manier in een aparte file je kleuren wil definiëren zou ik constantes kiezen. ;)
Super bedankt.Het is allemaal gelukt. Het werkt top!
Kreeg eerst wel een ERROR 500. Maar dat kwam omdat de í een gek puntje had.

Owja; Hier kan je mijn scripts vinden;

img-youtube.php: https://codepad.co/snippet/5vXs2DBf
img-colors: https://codepad.co/snippet/9drIIy4E

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 18:36

Ventieldopje

I'm not your pal, mate!

.oisyn schreef op dinsdag 18 oktober 2016 @ 14:36:
[...]


Is dat nieuw? Bij mijn weten hebben individuele files geen eigen scope.
spuit 11, iets met koffie |:(

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • +1 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
tom.cx schreef op dinsdag 18 oktober 2016 @ 14:08:
[...]

Uhm, ja dat klopt. Dat heb ik niet. Maar dat hoeft toch niet op het moment dat ik een 'include' doe?

Ik ga het even testen.
Kan me voorstellen dat dit misschien niet heel intuitief is, maar het is gewoon gedocumenteerd gedrag:
http://php.net/manual/en/function.include.php
When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags.
Verder zou ik je aanraden die PHP end-tags achterwege te laten. Nergens goed voor en geeft alleen maar risico op prematuur verzenden van headers.

Acties:
  • 0 Henk 'm!

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
mcDavid schreef op dinsdag 18 oktober 2016 @ 15:51:
[...]


Kan me voorstellen dat dit misschien niet heel intuitief is, maar het is gewoon gedocumenteerd gedrag:
http://php.net/manual/en/function.include.php

[...]


Verder zou ik je aanraden die PHP end-tags achterwege te laten. Nergens goed voor en geeft alleen maar risico op prematuur verzenden van headers.
Ik zal het document even bestuderen vanavond.
Voor de end-tags. Dit heb ik alleen in de online snipper gedaan. Op mijn test server staat hij gewoon zonder end tag.

Acties:
  • +1 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Overigens is het om een andere reden wel heel goed om te kijken naar wat daar met $im gebeurt. Het is niet heel handig om op die manier variabelen uit de global scope van een andere file te injecteren want op die manier raak je wel héél snel het overzicht kwijt.

Wat je beter kan doen is zoals ik eerder al zei defines gebruiken. Kleurconstanten hebben namelijk die hele imagecolorallocate-call niet nodig. Je kan dan spul doen als:

PHP:
1
2
3
$white = 0x00FFFFFF;
$black = 0x00000000;
//...

Of, beter nog, maak er echte constanten van:
PHP:
1
2
3
define('COLOR_WHITE', 0x00FFFFFF);
define('COLOR_BLACK', 0x00000000);
//...

En nóg beter dan dat:
PHP:
1
2
3
define('COLOR_BACKGROUND', 0x00FFFFFF);
define('COLOR_TEXT', 0x00000000);
//...

;)

Of zelfs als je verder niks met deze class doet zou zelfs dit een optie kunnen zijn:
PHP:
1
2
3
4
5
class Color {
    const WHITE = 0x00FFFFFF;
    const BLACK = 0x00000000;
    //...
}

....zodat je in je code Color::WHITE en Color::BLACK kan gebruiken.

[ Voor 12% gewijzigd door NMe op 18-10-2016 16:48 ]

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

  • tom.cx
  • Registratie: December 2014
  • Laatst online: 25-07 15:06
NMe schreef op dinsdag 18 oktober 2016 @ 16:46:
[...]

Overigens is het om een andere reden wel heel goed om te kijken naar wat daar met $im gebeurt. Het is niet heel handig om op die manier variabelen uit de global scope van een andere file te injecteren want op die manier raak je wel héél snel het overzicht kwijt.

Wat je beter kan doen is zoals ik eerder al zei defines gebruiken. Kleurconstanten hebben namelijk die hele imagecolorallocate-call niet nodig. Je kan dan spul doen als:

PHP:
1
2
3
$white = 0x00FFFFFF;
$black = 0x00000000;
//...

Of, beter nog, maak er echte constanten van:
PHP:
1
2
3
define('COLOR_WHITE', 0x00FFFFFF);
define('COLOR_BLACK', 0x00000000);
//...

En nóg beter dan dat:
PHP:
1
2
3
define('COLOR_BACKGROUND', 0x00FFFFFF);
define('COLOR_TEXT', 0x00000000);
//...

;)

Of zelfs als je verder niks met deze class doet zou zelfs dit een optie kunnen zijn:
PHP:
1
2
3
4
5
class Color {
    const WHITE = 0x00FFFFFF;
    const BLACK = 0x00000000;
    //...
}

....zodat je in je code Color::WHITE en Color::BLACK kan gebruiken.
Dus ik zou dit ook kunnen doen
PHP:
1
2
3
4
5
6
class Color {
    const WHITE = 0x00FFFFFF;
    const BLACK = 0x00000000;
}

imagettftext($im, 25, 5, 33, 83, Color:WHITEl, $font, Test843);

[ Voor 0% gewijzigd door tom.cx op 18-10-2016 21:19 . Reden: 13% ]


Acties:
  • +1 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Even afgezien van de missende tweede :, de vergeten quotes om de string en de extra "l" achter WHITE: ja. :P

Ik zou echter wel eerder voor omschrijvende namen kiezen. Niet zeggen welke kleur het is, maar wat de kleur voorstelt. Dan heb je niet over twee jaar na een redesign een constante/variabele die RED heet terwijl er op dat moment een blauwtint in staat. ;)

[ Voor 3% gewijzigd door NMe op 18-10-2016 21:56 ]

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

Pagina: 1