if-Abfrage ein bisschen kürzer

PHP - alles Rund um die Programmierung von PHP und MySQL

Ist die geniale Programmiersprache, da sowohl für Einsteiger geeignet wie auch für Profis.

Moderator: lauras

Beiträge bitte im neuen Forum

if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Mittwoch 25. Januar 2012, 20:12

Hey Leute,
diese folgende if-Abfrage ist ziemlich lang:
Code: Alles auswählen

if($file["type"] == "image/png" OR $file["type"] == "image/jpeg" OR $file["type"] == "image/gif" OR $file["type"] == "image/x-icon" OR $file["type"] == "image/bmp") {
...
}
 


Kann ich sie kürzer gestalten, denn es wird ja nur geprüft, ob $file["type"] folgenden Wert hat:
  • image/png
  • image/jpeg
  • image/gif
  • image/x-icon
  • image/bmp

Gibt es da eine Möglichkeit?

Mit freundlichen Grüßen,
Philipp E.
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink

Re: if-Abfrage ein bisschen kürzer

Beitragvon lauras » Mittwoch 25. Januar 2012, 20:34

Wie wäre es einfach mit:

Code: Alles auswählen
if($file["type"] == ("image/png" OR "image/jpeg" OR "image/gif" OR "image/x-icon" OR "image/bmp")) {
...
}
 


?
Benutzeravatar
lauras
Moderator
 
Beiträge: 2114
Registriert: Samstag 3. November 2007, 22:08

Re: if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Mittwoch 25. Januar 2012, 20:37

Hey Laura,
Danke für die schnelle Antwort. Das ist perfekt ;)

Mit freundlichen Grüßen,
Philipp E.
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink

Re: if-Abfrage ein bisschen kürzer

Beitragvon kanufrosch » Mittwoch 25. Januar 2012, 21:04

Ansonsten kannst du auch ein Array einmal mit den Werten füllen und brauchst dann nur prüfen ob es enthalten ist... ;D
So löse ich es manchmal.
kanufrosch
HTML-Acrobat
 
Beiträge: 459
Registriert: Mittwoch 17. September 2008, 16:19

Re: if-Abfrage ein bisschen kürzer

Beitragvon Sören » Mittwoch 25. Januar 2012, 21:05

lauras Methode wird so nicht funktionieren.
Es wird in der if-Abfrage zuerst die OR-Verknüpfungen ausgewertet, welche immer true ergeben, da Zeichenketten, die nicht '0' und dann erst das Ergebnis mit $file['type'] verglichen.
Die if-Abfrage gibt also nur false zurück, wenn $file['type'] entweder false, 0, '0', ein leeres Array (array()), ein leerer String oder null ist.

Beispiel:
Code: Alles auswählen
<pre>
<?php
function abfrage
($val)
{
    return $val == ('image/png' or 'image/jpeg' or 'image/gif' or 'image/x-icon' or 'image/bmp');
}

echo "'image/png' or 'image/jpeg' or 'image/gif' or 'image/x-icon' or 'image/bmp' ergibt:\n";
var_dump('image/png' or 'image/jpeg' or 'image/gif' or 'image/x-icon' or 'image/bmp');

echo "\n\nabfrage('image/jpg') ergibt:\n";
var_dump(abfrage('image/jpg'));
echo "\nabfrage('a') ergibt:\n";
var_dump(abfrage('a'));
echo "\nabfrage(2) ergibt:\n";
var_dump(abfrage(2));
echo "\nabfrage(true) ergibt:\n";
var_dump(abfrage(true));
echo "\nabfrage('0') ergibt:\n";
var_dump(abfrage('0'));
echo "\nabfrage(0) ergibt:\n";
var_dump(abfrage(0));
echo "\nabfrage(false) ergibt:\n";
var_dump(abfrage(false));
?>
</pre>
Ausgabe:
Code: Alles auswählen
<pre>
'image/png' or 'image/jpeg' or 'image/gif' or 'image/x-icon' or 'image/bmp' ergibt:
bool(true)


abfrage('image/jpg') ergibt:
bool(true)

abfrage('a') ergibt:
bool(true)

abfrage(2) ergibt:
bool(true)

abfrage(true) ergibt:
bool(true)

abfrage('0') ergibt:
bool(false)

abfrage(0) ergibt:
bool(false)

abfrage(false) ergibt:
bool(false)
</pre>
Benutzeravatar
Sören
HTML-Acrobat
 
Beiträge: 851
Registriert: Samstag 5. Juni 2010, 16:00

Re: if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Mittwoch 25. Januar 2012, 21:09

@kanufrosch: Das hört sich gut an (:

@Sören: Oh, ich habe den Code einfach übernommen. Naja, bis jetzt hat alles funktioniert, weil der User ja $file["type"] nicht eingibt. Ein switch-Statement ist dann wohl die richtige Lösung. Danke, das wäre bestimmt eine Sicherheitslücke geworden (:
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink

Re: if-Abfrage ein bisschen kürzer

Beitragvon lauras » Mittwoch 25. Januar 2012, 21:16

Mh, ich hatte mal irgendwas in der Art was funktionierte.. ich schau nochmal nach.. :)
Benutzeravatar
lauras
Moderator
 
Beiträge: 2114
Registriert: Samstag 3. November 2007, 22:08

Re: if-Abfrage ein bisschen kürzer

Beitragvon kanufrosch » Mittwoch 25. Januar 2012, 21:16

Hier nochmal in Code:
Code: Alles auswählen
   $i = array("image/png","image/jpeg","image/gif","x-icon","image/bmp");
   if(in_array($file["type"], $i))
   {
   ...
   }
kanufrosch
HTML-Acrobat
 
Beiträge: 459
Registriert: Mittwoch 17. September 2008, 16:19

Re: if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Donnerstag 26. Januar 2012, 17:29

@lauras: Ich hätte auch gedacht, dass das funktioniert ;)

@kanufrosch: Gut, das sieht am besten aus ;) Danke, dann nehme ich jetzt deine Lösung. Die ist sowieso viel effizienter als das switch-Statement.

@all: Wie ihr bestimmt schon gemerkt habt, geht es hierbei um einen Upload. Die Datei wird auf ihren Typ geprüft. Und dazu jetzt eine Frage: Gibt es irgendwo so Listen der Dateitypen (für PHP natürlich)?
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink

Re: if-Abfrage ein bisschen kürzer

Beitragvon Basiii » Freitag 27. Januar 2012, 00:40

Bei einem Fileupload Programm solltest du eher selbst auflisten was erlaubt ist und was nicht, ein dir unbekannter Dateityp kann dein ganzes System in die Luft jagen.
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Freitag 27. Januar 2012, 16:12

Ja, aber zum Beispiel Bilder. Gibt es da nicht eine Liste? Denn ich denke mal, dass ich alle Bildertypen erlauben werden ;)
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink

Re: if-Abfrage ein bisschen kürzer

Beitragvon drPHIP132 » Freitag 27. Januar 2012, 16:28

.htcceess oder wie es gleich heißt unbedingt verbieten, falls du noch nicht daran dachtest


EDIT

ist zwar kein bild aber trotzdem^^
Benutzeravatar
drPHIP132
HTML-Acrobat
 
Beiträge: 744
Registriert: Samstag 15. Januar 2011, 19:10
Wohnort: Sachsen, Erzgebirge

Re: if-Abfrage ein bisschen kürzer

Beitragvon Yamram » Freitag 27. Januar 2012, 20:51

Du hättest doch nicht geglaubt, dass der User so etwas hochladen darf (: Das wär doch voll dumm von mir ((((:
Benutzeravatar
Yamram
HTML-Sonderfall
 
Beiträge: 616
Registriert: Samstag 5. Februar 2011, 20:05
Wohnort: C:\Users\Yamram\Desktop\Papierkorb.ink


Beiträge bitte im neuen Forum

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron