这里希望这将是一个简单的问题。
我正在尝试在单独的PHP页面上处理表单内容之前验证图像大小/类型。
验证工作正常,重定向到页面并处理表单,不是。
$image = $_FILES['files']['name'];
$ext = strrchr($_FILES['files']['name'], ".");
if (isset($_POST['submitNews'])) {
if ($image != NULL && $_FILES["files"]["size"]<5000) {
if ($ext == '.png' || $ext == '.jpg') {
$message = "Good file type";
}
else {
$message = "Bad file type";
}
}
elseif ($image != NULL && $_FILES["files"]["size"]>5001) {
$message = "Too big";
}
else {
//Process form
header("Location: ../includes/manage_news.php");
}
}
?>
标题重定向不是正确的解决方案,因为表单的数据没有进入manage_news.php页面。
答案 0 :(得分:2)
您有两种可能性:
答案 1 :(得分:0)
你应该重构你的代码。这样的事情应该有所帮助
if (isset($_POST['submitNews'])) {
if (validateImage() === true) {
//image passed validation, process form
}
}
function validateImage() {
$image = $_FILES['files']['name'];
if ($image != NULL && $_FILES["files"]["size"]<5000) {
if ($ext == '.png' || $ext == '.jpg') {
return true;
}
else {
return "Bad file type";
}
}
elseif ($image != NULL && $_FILES["files"]["size"]>5001) {
return "Too big";
}
return false; //or true, depends on how you want it
}
这只是一个想法,您可以根据您的代码进行调整。如果它通过了所有测试,我返回TRUE,如果没有通过检查,则返回消息。这就是我使用===
检查的原因。