if(isset($_POST['submit'])&& isset($_FILES['file'])){
$Uploads = new Uploads($_FILES);
$Uploads->UploadLocation = "../images/categories/";
if($Uploads->isValidated()== TRUE){
$Image = array("image" => $Uploads->upload());
$_POST = array_merge($_POST,$Image);
unset($_POST['submit']);
$Category = new Categories();
$Category->insertCategory("users", $_POST);
}
else {
print_r($Uploads->isValidated());
}
}
?>
我已将 if 语句放在$Uploads->isValidated()
函数之前,因此其余代码应仅在返回 true 时运行。下面是功能代码。
public function isValidated(){
if($this->containsError() && $this->isValidFile() && $this->isValidSize()){
return TRUE;
}
else
{
return $this->ValidationMessages;
}
}
我检查了这三个方法是否都返回 TRUE,而不是我的isValidated()
方法应该返回 TRUE。这$this->ValidationMessages
是一个消息数组,如果三个验证方法中的任何一个不返回 TRUE,则填充该数组。
现在我故意不将任何文件传递给此类以检查我是否收到错误消息,但它仍在运行其余代码,这似乎我的isValidated()
方法正在返回 TRUE,而它不应该返回。
请注意,我的 3 种验证方法都运行良好,因为我已经检查了所有这些方法,这就是我不在这里发布它们的原因。但是,如果您需要,我可以发布代码。
我需要帮助来弄清楚为什么我没有收到验证消息。
更新部分:
private function containsError(){
//checking if file contains any error
if(!empty($this->FileError)){
$this->ValidationMessages[] = "Sorry, This file contains error";
}
else {
return TRUE;
}
}
private function isValidFile() {
// putting the allowed files in array
$AllowedExt = array('jpg', 'jpeg', 'gif', 'png');
// matching with allowed file types
if (in_array($this->FileExt, $AllowedExt)) {
return TRUE;
} else {
$this->ValidationMessages[] = "This extension is not allowed";
return FALSE;
}
}
private function isValidSize() {
// setting the maximum size limit in bytes
$AllowedSize = 1048576;
// checking if the user file does not exceed the allowed size
if (!$this->FileSize < $AllowedSize) {
return TRUE;
} else {
$this->ValidationMessages[] = "File should not be greater than 1MB";
return FALSE;
}
}