neden bu her zaman ölecek?

5 Cevap
$extension = "jpg"

    if($extension != "jpg" || $extension != "gif" || $extension != "png") die("only jpg, gif, png acceptable");

her zaman) (ölmek gibi görünüyor.

5 Cevap

İstediğiniz && değil ||.

: Olarak outloud Oku

"X eşit Y değil YA x yaparsa eşit N".

Açıkçası, o x sürece Y ve N eşit değil gibi, ifadesi her zaman doğru olacaktır, eşittir ne önemi yok :)

$extension, aynı zamanda "jpg", "gif" ve "png" olamaz için, alt koşullardan en az iki doğrudur.

Eğer or (||) yerine and (&&) kullanılarak konum beri, herhangi bir gerçek alt koşul true tüm koşulu verecek.

Gibi bir şey istiyorum:

if (($extension != "jpg") && ($extension != "gif") && ($extension != "png")) {
    die ("only jpg, gif, png acceptable");
}

Sen bir sürü NOT EQUAL TO operatörünü kullanarak ORs.

$extension = "jpg"
if ($extension != "jpg" || 
    $extension != "gif" || 
    $extension != "png") 
    die("only jpg, gif, png acceptable");

Bunu iki şekilde bu birini düzeltmek:

  • Tüm || && geçmek
  • Geçerli uzantıları bir dizi sahip olmak basitleştirmek:

$valid = array('jpg' => true, 'gif' => true, 'png' => true);
if (!isset($valid[$extension])) {
    // not a valid extension
}
$extension = "jpg"

    if($extension != "jpg" && $extension != "gif" && $extension != "png") die("only jpg, gif, png acceptable");

Bu işe yarayabilir

Nedenleri zaten üstelik sadece size beklenen sonuç, bu yapabilirsiniz açıklanmıştır:

$extension = "jpg";
if(!in_array($extension,array("jpg","gif","png"))){
    die("only jpg, gif, png acceptable");
}