Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP]IF syntax vraag

Annie
11 antwoorden
  • Ik zit met een probleempje. Ik moet in een if een variabele op een aantal waardes controleren. Om dit allemaal apart te controleren leek me omslachtig dus een collega van mij zei dat ik het op deze manier kon noteren:

    [code:1:f94181ebc5]if( $ext == ( ".exe" || ".php" || ".htm" || ".html" || ".shtml" || ".EXE" || ".PHP" || ".HTM" || ".HTML" || ".SHTML" ) )
    {
    echo "Verkeerd bestand.";
    }
    else
    {
    // Doe iets
    }
    [/code:1:f94181ebc5]

    Dit heb ik bij een script gebruikt en dat werkte op deze manier (daar had ik maar 2 condities). Nu wil ik bovenstaand stukje gebruiken in een ander script maar het maakt niet uit welk bestand ik upload, hij geeft altijd verkeerd bestand weer. Weet iemand of dit aan mijn syntax ligt, en zo ja, of er een andere korte manier is? hij moet dus checken of $ext met 1 van die waardes matcht, zoniet dan gaat hij door met de rest van de code.

    ik heb gegoogled maar ik vind niets dat erop wijst dat mijn collega gelijk heeft.. alleen het gekke is dat het andere script perfect werkt (daar checkt ie of het een plaatje is en of het plaatje de goede extensie heeft).

    Alvast bedankt
  • [quote:bbe63ef47b="Wizz15"][..]
    [/quote:bbe63ef47b]
    Die notatie lijkt me niet te kloppen.

    Probeer het volgende eens:
    [code:1:bbe63ef47b]
    if( $ext == ".exe" || $ext == ".php" || $ext == ".htm" || $ext == ".html" || $ext == ".shtml" || $ext == ".EXE" || $ext == ".PHP" || $ext == ".HTM" || $ext == ".HTML" || $ext == ".SHTML" )
    {
    echo "Verkeerd bestand.";
    }
    else
    {
    // Doe iets
    }
    [/code:1:bbe63ef47b]
  • ja dat die syntax klopt weet ik, maar ik vroeg me af of er een kortere manier was om zoiets te bereiken.
  • switch break?
  • nee want dan zou voor alle cases hetzelfde gelden, dan heb ik heel veel cases met allemaal dezelfde bewerking zeg maar.
  • Misschien kun je wat met in_array

    http://nl2.php.net/manual/nl/function.in-array.php

    $array_met_extensies = array(".exe",".php",".html",".htm");
    if (in_array($ext,$array_met_extensies)) { }
  • dat zou idd de oplossing zijn :D bedankt ik ga het even proberen :D
  • [quote:965a4af21c="sjouken"]switch break?[/quote:965a4af21c]
    Dat zou wel een nette oplossing zijn. Met name als je verschillende meldingen wilt geven bij verschillende extensies:

    [code:1:965a4af21c]
    switch ($ext)
    {
    case ".exe":
    echo "mag geen uitvoerbare bestanden uploaden";
    break;

    case ".htm":
    case ".html":
    case ".php":
    echo "mag geen webpagina's uploaden";
    break;
    }
    [/code:1:965a4af21c]
  • nee de gebruikers krijgen geen melding te zien, enkel dat het bestand niet is toegestaan. die array is ook handiger omdat ik diezelfde extensies later op de pagina nog een keer gebruik voor een ander doel en dan zou ik ook 2 keer dezelfde cases moeten bijwerken. maar evengoed bedankt :D
  • [quote:9f45dfb9f3="Wizz15"]nee de gebruikers krijgen geen melding te zien, enkel dat het bestand niet is toegestaan. die array is ook handiger omdat ik diezelfde extensies later op de pagina nog een keer gebruik voor een ander doel en dan zou ik ook 2 keer dezelfde cases moeten bijwerken. maar evengoed bedankt :D[/quote:9f45dfb9f3]
    En ikl maar denken dat je functions maar 1 keer mag gebruiken :lol:
    Maar evenzo is een array zowiezo simpeler :wink:
  • Ik zou de extensions in een string zetten en dan met strpos kijken of het erbij staat:[code:1:3a5a3881d1]
    <?php
    $ext = '.exe';
    $magniet = 'x.EXE.PHP.HTM.HTML.SHTML';
    $pos = strpos($magniet,strtoupper($ext));
    echo 'Pos = '.$pos.'<br />';
    if ( $pos > 0 )
    {
    echo 'verkeerd bestand';
    }else{
    echo 'bestand is OK';
    }
    ?>[/code:1:3a5a3881d1]
    De x is om geen 0 als waarde te krijgen. met strtoupper werkt het met alle extensions, zoals .exE enz.

    wimb

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.