[PHP]Controleren van array waardes??

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
ik probeer een array uit te lezen, hierna controleren of een bepaalde variable niet gelijk is aan wat er ook maar in de array staat, en hierna een actie uit te voeren.[ blokkeren ]

ik maak een array aan met de extensies die mogen worden geupload:

PHP:
1
2
3
4
5
<?php

$allowed_ext = array("bmp","gif","jpg","jpeg","gif");

?>


Nu wil ik zoiets als dit maken:

PHP:
1
2
3
4
5
6
7
8
<?php
$extension = strtolower(substr(strrchr($original_name,"."),1));
foreach($allowed_ext AS $values){
  if ($extension != $values){
     echo "de file heeft een extensie die niet wordt ondersteund!";
  }
}
?>


ik weet wel hoe ik dit op een makkelijkere manier kan oplossen, maar dat vind ik niet netjes. bv zo:

PHP:
1
2
3
4
5
6
7
<?php

if($extenion != "jpg" && $extension != "gif" && ..... etc){
  ga dan door, anders blokkeer
}

?>


weet iemand hoe ik ervoor kan zorgen dat alles wat binnen een array staat uitgelezen word, en dat als er niks in voorkomt, dat ie dan blokkeert en anders doorgaat?

bvd

nick

excuses:

heb het al, het kan met "in_array"

Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 23:39
in_array(), daar zocht je naar:
http://nl3.php.net/manual/en/function.in-array.php

Acties:
  • 0 Henk 'm!

Verwijderd

Het is inderdaad een beetje omslachtig om de hele array door te lopen, terwijl PHP mooie array search functies aanbiedt, zoals pcmadman al aangeeft inderdaad in_array, of als je de betreffende key ook nodig hebt, array_search.

Wat bijvoorbeeld denkbaar is, is dat je bijvoorbeeld de toegestane extensies uitbreidt met een dimensie filetype, zo kan je bijvoorbeeld naast plaatjes ook muziekbestanden, filmpjes etc. etc.

bijvoorbeeld:
PHP:
1
array("movies" => array("avi", "mov"), "afbeeldingen" => array("gif", "jpg"));


Het mooie van de zoekfuncties is dan natuurlijk dat je binnen alle dimensies van de array aan het zoeken bent, zonder ingewikkelde dubbele foreach loopjes.

Acties:
  • 0 Henk 'm!

  • Isnowiz
  • Registratie: Mei 2005
  • Laatst online: 16-09 11:42
Je kunt ook in je form aangeven wat er geupload mag worden met het accept attribuut...
<input name='bestand' type='file' accept='image/*' /> accepteert alle soorten images bijv. Naja, je kunt ook een lijst met mime-types opgeven...
Het probleem met je huidige opzet is namelijk dat de file in feite al geupload is voor jij het kunt controleren...
Als je het per se server-side wilt controleren kun je $_FILES['bestand']['type'] gebruiken voor het opvragen van de mime-type.
Nadeel hiervan is dat niet alle browsers die informatie meesturen en je het dus beter op de eerst genoemde manier kunt controleren...

Acties:
  • 0 Henk 'm!

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Isnowiz schreef op zondag 17 december 2006 @ 23:59:
Je kunt ook in je form aangeven wat er geupload mag worden met het accept attribuut...
<input name='bestand' type='file' accept='image/*' /> accepteert alle soorten images bijv. Naja, je kunt ook een lijst met mime-types opgeven...
Het probleem met je huidige opzet is namelijk dat de file in feite al geupload is voor jij het kunt controleren...
Als je het per se server-side wilt controleren kun je $_FILES['bestand']['type'] gebruiken voor het opvragen van de mime-type.
Nadeel hiervan is dat niet alle browsers die informatie meesturen en je het dus beter op de eerst genoemde manier kunt controleren...
Bedenk wel dat als je dat doet je het in de interface hebt beperkt maar in de code wellicht niet. Een formulier kun je echter namaken en de action op het adres van de website zetten waardoor je je eigen informatie kan meesturen en dus mogelijk ook andere bstanden kan uploaden.

Het beste is om op mime-type te controleren in de $_FILES array zoals je al zegt. Nog beter is misschien controleren op EN extensie EN mime-type :)