Afbeelding checken
Ben nog steeds met m'n upload scriptje bezig, en liep weer ergens tegenaan waar ik niet uit kom, naja kom er wel uit maar was benieuwd of er betere alternatieven zijn.
Als iemand een afbeelding post, dan check ik deze op mimetypes. Die heb ik in een array staan genaamd $allowed_files . Dit werkt opzich wel, alleen geven verschillende browsers verschillende mimetypes aan. Bijv de een zegt alleen JPG, de ander image/jpeg, en weer een ander image/pjeg. Nu heb ik alle mogelijke combinaties wel in de array staan, maar het weerhoud mensen er niet van om bijv een php bestand te hernoemen naar .jpg en te uploaden. Weet iemand een goed alternatief om te checken of het wel echt om een afbeelding gaat?
Alvast bedankt!
Deze zal false returnen indien het geen afbeelding is....proberen waard
2. Check de bestands grootte. PHP-bestanden zijn meestal klein.
3. Gebruik het GD Library voor een andere oplossing
Gewijzigd op 05/05/2012 18:25:27 door Dave L
Ik ga het gelijk ff checken
edit :
dus even als voorbeeld :
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
if (getimagesize($_FILES['image']['tmp_name'] != 'FALSE')
{
//wel uitvoeren
}
else {
//niet uitvoeren
}
{
//wel uitvoeren
}
else {
//niet uitvoeren
}
Zou dit moeten werken?
Gewijzigd op 05/05/2012 18:29:41 door Patrick vd Pols
Je script klopt niet helemaal:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if (getimagesize("pad_naar_bestand") === false)
{
echo 'Het is GEEN afbeelding!';
}
else
{
echo 'Het is een afbeelding!';
}
?>
if (getimagesize("pad_naar_bestand") === false)
{
echo 'Het is GEEN afbeelding!';
}
else
{
echo 'Het is een afbeelding!';
}
?>
Dave wat is het verschil tussen != en === ?
(identiek EN gelijk van waarde aan elkaar in de vergelijking)
Ter verduidelijking:
getimagesize("index.html") --> geeft: false
de vergelijking die kortweg resulteerd is:
if(false === false) {
echo 'Het is GEEN afbeelding';
}
Gewijzigd op 05/05/2012 18:51:16 door Dave L
Toevoeging op 05/05/2012 19:02:31:
omdat het een boolean is kun je volgens mij ook checken met ===, maar als je het niet weet of het boolean is of niet, gebruik ==
Heb het aan de praat, werkt goed, krijg je er met geen mogelijkheid php of andere bestanden meer door. Heb alleen !== 'FALSE' gebruikt omdat mijn if en elsjes precies andersom zijn dan op jou voorbeeld :p .. maar bedankt ! werkt perfect!
:)
http://www.php.net/manual/en/language.operators.comparison.php
@Patrick: Mooi zo jongen, glad I could help!
Gewijzigd op 05/05/2012 19:08:54 door Dave L
gebruik dan != ipv !==.
!== Not identical
!= Not equal
Identiek betent toch hetzelfde als equal ? :S
Gewijzigd op 05/05/2012 19:10:40 door Patrick vd Pols
!= vergelijkt waarde. !== vergelijkt waarde EN type (zie link)
dubbele == achter ! of = vergelijkt ook het type....
Gewijzigd op 05/05/2012 19:15:11 door Dave L
= -> is een toewijzingsoperator. $i = 5 is niets meer dan 5 toekennen aan $i
== -> is een vergelijkingsoperator. $i == 5 levert true op wanneer $i 5 is, false als anders
!= -> ook een vergelijker, maar dan niet. $i != 5 levert false op wanneer $i gelijk is aan 5, anders true
dan kun je dus nog overal een =je achteraan plakken, maar alleen bij de vergelijkingen, dus dan krijg je === !==. dat hij dan ook checkt op het type wist ik niet.
identical is gelijk in waarde en type, equal is gelijk in waarde.
Gewijzigd op 05/05/2012 21:06:15 door Jeroen VD
Zo leer je iedere dag weer nieuwe geile shit
Ben nog niet op het punt dat ik een harde plasser krijg van goed functionerende php code, maar idd weer wat geleerd! ;)
Ik spreek ook vanuit een leven met ADHD en autisme. Dan hebben nieuwe leermomenten in je leven ook aparte uitwerkingen :P
Jeroen vd op 05/05/2012 19:17:48:
@patrick:
$i != 5 levert false op wanneer $i gelijk is aan 5, anders false
$i != 5 levert false op wanneer $i gelijk is aan 5, anders false
Pardon?
Ok, klein foutje, anders true. Zal het aanpassen.
Dave L op 05/05/2012 19:31:09:
Zo leer je iedere dag weer nieuwe geile shit
Patrick vd Pols op 05/05/2012 19:32:36:
Ben nog niet op het punt dat ik een harde plasser krijg van goed functionerende php code, maar idd weer wat geleerd! ;)
Haha, +1 voor Patrick :)
en daar zit ook een filter in die kijkt of het een jpg, png, gif is maar daarmee kun je ook een php mee uploaden heb ik gemerkt ik had eeb script op geslagen als jpg
en dat werd mooi geupload. dus werkt zo;n filter niet alleen als iets upload met een andere extentie dan wel.
want hoe wil een filter zien of jpg geen foto inhoud maat gewoon text is.