login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Upload systemen > Image Upload Class + Thumbnail


Reacties op het script Image Upload Class + Thumbnail

Offline  Joost
Gepost op: 19 juni 2009 - 21:06
PHP expert



Iets wat helemaal tegen het OOP principe ingaat zijn global variabeles, omdat er anders afhankelijkheden in je applicatie ontstaan. Jij gebruikt deze toch in je klasse, in de methode upload(), namelijk in de vorm van $_FILES. Het is beter $_FILES mee te geven als parameter.

Je chmod het geuploade bestand naar 777, dit is helemaal niet nodig. 644 is al ruim voldoende, omdat PHP de eigenaar van het bestand wordt.

Er wordt ook niet gecontroleerd op mime-types. Ik weet dat ermee gerommeld kan worden, maar het is over het algemeen toch wel een sterke, extra maatregel. Deze zou ik, als ik jou was, wel toevoegen.

Ik zou je methode thumbnail ook willen verdelen in 2 functies, namelijk ook nog eentje die de GD bewerkingen uitvoert en een eventuele array met meldingen teruggeeft. Dit is beter voor de modulariteit van je klasse, evenals voor de herbruikbaarheid en aanpasbaarheid.

Je hebt nu een paar attributen public, deze kan je beter protected/private maken
met een setter (__set()). Waarom dit beter is staat wel beschreven in deze tutorial: http://www.site...t_OOP#kop5

Verder vind ik je codeerstijl niet zo fijn om te lezen, maar dat is natuurlijk persoonlijk. Ik hou persoonlijk meer van codeerstijl in een soortgelijke vorm als deze: http://www.site...deer_stijl

Offline  Richard
Gepost op: 20 juni 2009 - 17:05
Crew algemeen



Citaat:
Er wordt ook niet gecontroleerd op mime-types. Ik weet dat ermee gerommeld kan worden, maar het is over het algemeen toch wel een sterke, extra maatregel. Deze zou ik, als ik jou was, wel toevoegen.


Je weet dat de browser de mimetype meestuurt, en het dus *niet* te vertrouwen is?

Offline  ArieMedia
Gepost op: 22 juni 2009 - 08:45
Gouden medaille

PHP ver gevorderde




JeXuS schreef:
[..quote..]

Je weet dat de browser de mimetype meestuurt, en het dus *niet* te vertrouwen is?


Citaat:
Iets wat helemaal tegen het OOP principe ingaat zijn global variabeles, omdat er anders afhankelijkheden in je applicatie ontstaan. Jij gebruikt deze toch in je klasse, in de methode upload(), namelijk in de vorm van $_FILES. Het is beter $_FILES mee te geven als parameter.
Ben nog niet zo heel erg lang bezig met OOP, dus zal er rekening mee gaan houden.



Citaat:
Er wordt ook niet gecontroleerd op mime-types. Ik weet dat ermee gerommeld kan worden, maar het is over het algemeen toch wel een sterke, extra maatregel. Deze zou ik, als ik jou was, wel toevoegen.
Alleen IE stuurt de mime-type redelijk goed mee, de rest van de browsers bepaalde de mime-type op extensie, niet op de structuur van het bestand.

Citaat:
Ik zou je methode thumbnail ook willen verdelen in 2 functies, namelijk ook nog eentje die de GD bewerkingen uitvoert en een eventuele array met meldingen teruggeeft. Dit is beter voor de modulariteit van je klasse, evenals voor de herbruikbaarheid en aanpasbaarheid.
Was ik zelf ook al achter gekomen, vandaar dat er een 2e versie van het script komt waar je veel meer mee kan.

Citaat:
Je hebt nu een paar attributen public, deze kan je beter protected/private maken
met een setter (__set()). Waarom dit beter is staat wel beschreven in deze tutorial: http://www.site...t_OOP#kop5
Heb de Tut nogmaals doorgelezen, maar ik zie nog niet helemaal het nut hiervan in, ik maak namelijk eigen soortgelijke set-functies.


Offline  Joost
Gepost op: 23 juni 2009 - 22:38
PHP expert



@JeXuS & Arie2Zero: zoals ik al vermeld kan dit er prima bij als extra check. Maakt het toch weer wat robuuster, ook al is hij niet 100% correct.

Arie2Zero schreef:
Heb de Tut nogmaals doorgelezen, maar ik zie nog niet helemaal het nut hiervan in, ik maak namelijk eigen soortgelijke set-functies.
Wat daar staat beschreven komt duidelijk naar voren in jouw klasse, namelijk, ik kan het attribuut size ook de waarde 'abcdefghijk'. Hierdoor kan de klasse zijn werk niet goed doen, immers, er is geen geldige size beschikbaar. Met een simpele setter die controleert of het wel een integer is, is je klasse direct een stuk robuuster.

Offline  ArieMedia
Gepost op: 24 juni 2009 - 09:32
Gouden medaille

PHP ver gevorderde




Joost schreef:
@JeXuS & Arie2Zero: zoals ik al vermeld kan dit er prima bij als extra check. Maakt het toch weer wat robuuster, ook al is hij niet 100% correct.

[..quote..] Wat daar staat beschreven komt duidelijk naar voren in jouw klasse, namelijk, ik kan het attribuut size ook de waarde 'abcdefghijk'. Hierdoor kan de klasse zijn werk niet goed doen, immers, er is geen geldige size beschikbaar. Met een simpele setter die controleert of het wel een integer is, is je klasse direct een stuk robuuster.
Waarom zal je een check doen of de waarde niet numeriek is? Deze class heeft dat niet nodig. Waarom zal je een class gaan gebruiken om verkeerde waarden te gaan gebruiken waar het mogelijk is? Als je waarde niet numeriek is dan zal het automatisch de integer 0 krijgen, dus kan je niet uploaden, maar ik vind dit gewoon onzin. Ik ga toch ook niet checken of de x-value wel numeriek is? Een class moet je gewoon juist gebruiken en niet allemaal onzin dingen gaan declareren, want daarvoor is de class niet gemaakt. Jij als "webmaster" geeft de max-value aan, daar zit verder geen user-input bij te kijken. Dus de controle vind ik compleet overbodig in deze class.

Offline  Joost
Gepost op: 24 juni 2009 - 12:36
PHP expert



Arie2Zero schreef:
[..quote..]Waarom zal je een check doen of de waarde niet numeriek is? Deze class heeft dat niet nodig. Waarom zal je een class gaan gebruiken om verkeerde waarden te gaan gebruiken waar het mogelijk is? Als je waarde niet numeriek is dan zal het automatisch de integer 0 krijgen, dus kan je niet uploaden, maar ik vind dit gewoon onzin. Ik ga toch ook niet checken of de x-value wel numeriek is? Een class moet je gewoon juist gebruiken en niet allemaal onzin dingen gaan declareren, want daarvoor is de class niet gemaakt. Jij als "webmaster" geeft de max-value aan, daar zit verder geen user-input bij te kijken. Dus de controle vind ik compleet overbodig in deze class.
Dat kan jij allemaal best vinden, maar de integriteit van je klasse wordt daardoor echt minder. Tuurlijk gooi je er ook een check of de x-value een integer is. En wie zegt dat je de klasse niet gaat hergebruiken in een applicatie waarin de user _wel_ zelf kan bepalen wat de maximale upload size is (denk aan CMS)? Je beredeneert hier gewoon hetzelfde alsof je in MySQL een string in een integer kolom giet, dat het dan toch wel een 0 wordt? Dat is een belachelijke gedachte. Dit is helemaal buiten de OO methodiek om. Je weet nooit in wat voor situaties je deze klasse gaat hergebruiken. Zeggen dat een klasse 'gewoon juist moet gebruikenen niet allemaal onzing dingen gaat declareren' gaat natuurlijk nergens over, eerder gewoon domme luiheid van de programmeur itself. PEBCAK, problem exists between chair and keyboard.

Offline  ArieMedia
Gepost op: 24 juni 2009 - 13:37
Gouden medaille

PHP ver gevorderde




Joost schreef:
[..quote..]Dat kan jij allemaal best vinden, maar de integriteit van je klasse wordt daardoor echt minder. Tuurlijk gooi je er ook een check of de x-value een integer is. En wie zegt dat je de klasse niet gaat hergebruiken in een applicatie waarin de user _wel_ zelf kan bepalen wat de maximale upload size is (denk aan CMS)? Je beredeneert hier gewoon hetzelfde alsof je in MySQL een string in een integer kolom giet, dat het dan toch wel een 0 wordt? Dat is een belachelijke gedachte. Dit is helemaal buiten de OO methodiek om. Je weet nooit in wat voor situaties je deze klasse gaat hergebruiken. Zeggen dat een klasse 'gewoon juist moet gebruikenen niet allemaal onzing dingen gaat declareren' gaat natuurlijk nergens over, eerder gewoon domme luiheid van de programmeur itself. PEBCAK, problem exists between chair and keyboard.


In dit geval is het zeker echt geen lui-heid, maar in sommige extra controle's zie ik het nut er gewoon niet van in en mijn eedere antwoord op jou moet je ook niet opvatten als "aanval" op jou reactie.
Zoals ik ook al aangaf, ik ben nog niet zo heel erg bekend met OOP en kan ook zeker wel wat met de geleverde reacties, maar ik zie/zag het nut er niet van in, zelfde dat ik nu aan het uitvogelen wat de voordelen zijn van static (zie ik ook nog niet het nut in, wellicht kan je hier een pm met wat voordelen ect geven? Dus geen googlelinks, die heb ik al doorgelezen)).


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.029s