$extension = "jpg"
if($extension != "jpg" || $extension != "gif" || $extension != "png") die("only jpg, gif, png acceptable");
似乎总是死()。
答案 0 :(得分:6)
您希望&&
不是||
。
读出来:
“如果x不等于Y或x不等于N”。
显然,x
等于什么并不重要,只要Y
和N
不相等,语句将始终为真:)
答案 1 :(得分:5)
由于$extension
不能同时为"jpg"
,"gif"
和"png"
,因此至少有两个子条件为真。
而且,由于您使用的是or (||)
而不是and (&&)
,因此任何真正的子条件都会将整个条件设为真。
你想要这样的东西:
if (($extension != "jpg") && ($extension != "gif") && ($extension != "png")) {
die ("only jpg, gif, png acceptable");
}
答案 2 :(得分:2)
您正在使用NOT EQUAL TO
运算符和一堆ORs
。
$extension = "jpg"
if ($extension != "jpg" ||
$extension != "gif" ||
$extension != "png")
die("only jpg, gif, png acceptable");
您可以通过以下两种方式解决此问题之一:
||
切换为&&
$valid = array('jpg' => true, 'gif' => true, 'png' => true);
if (!isset($valid[$extension])) {
// not a valid extension
}
答案 3 :(得分:1)
$extension = "jpg"
if($extension != "jpg" && $extension != "gif" && $extension != "png") die("only jpg, gif, png acceptable");
这可能有用
答案 4 :(得分:0)
已经解释了原因,而且您可以根据预期的结果执行此操作:
$extension = "jpg";
if(!in_array($extension,array("jpg","gif","png"))){
die("only jpg, gif, png acceptable");
}