URL-адрес изображения не может пройти, если утверждение
Я публикую URL-адрес изображения в php-скрипте. В этом php-скрипте я получаю URL-адрес изображения и проверяю, что это за расширение, и соответствует ли это расширение паре расширений или нет:
$ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
$ext = strtolower($ext1);
if($ext != 'jpg' || $ext != 'jpeg' || $ext != 'png' || $ext != 'gif') {
echo $ext; echo "wrong";
}else{
echo "a correct extension";
}
Но даже когда я публикую URL-адрес, например: http://www.test.com/picture.jpg и он получает расширение, в данном случае jpg, он все равно проходит через оператор if, говоря, что расширение не равно один упомянутый в заявлении if.
Я не знаю, что я делаю не так?
4 ответа
Ваш код почти правильный, но вы должны использовать правильный оператор, который &&
в этом случае.
Пожалуйста, попробуйте это:
$ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
$ext = strtolower($ext1);
if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif') {
echo $ext; echo "wrong";
} else {
echo "A correct extension";
}
Когда вы используете последовательность отрицательных утверждений, всегда должен быть использован оператор &&
,
Есть много способов сделать то, что вы хотите, но если вы хотите сохранить свой код, как он просто изменить ||
в &&
и у тебя все будет хорошо.
Пожалуйста, прочитайте больше о логических операторах в PHP.
Вы могли бы также сделать
if(in_array($ext,array('gif','jpg','jpeg','png')){
//good
}else{
//bad
}
Вы хотите использовать and
в этой логике не or
,
if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif')
В настоящее время ваш if
Оператор гласит: "Если расширение не является jpg или не png или не является gif", что всегда будет совпадать, даже если расширение разрешено (то есть "jpg"), потому что "jpg"!= "png".
Ты хочешь and
потому что это сделает if
Оператор гласил: "Если расширение не jpg, не png и не gif", то оно недействительно.
Попробуйте переключить логику:
if($ext == 'jpg' || $ext == 'jpeg' || $ext == 'png' || $ext == 'gif') {
echo "a correct extension";
}else{
echo $ext; echo "wrong";
}
При использовании ИЛИ условие будет запущено, если будет выполнен какой-либо из критериев, и, поскольку расширение.jpg не будет совпадать с расширением.png, оно даст вам Wrong
сообщение.