Php 如何验证输入文件是否为空
您好,我有一个在数据库中插入多张图片的脚本,当我想删除现有文件并在每次更新时插入新文件时,但我不知道如何仅在输入是文件时进行删除,如果不是跳过该部分的话。 这是我的密码:Php 如何验证输入文件是否为空,php,html,mysql,Php,Html,Mysql,您好,我有一个在数据库中插入多张图片的脚本,当我想删除现有文件并在每次更新时插入新文件时,但我不知道如何仅在输入是文件时进行删除,如果不是跳过该部分的话。 这是我的密码: $size=$_FILES['files']['size']; if($size > 1) { $query = "Delete from Imagini_Hotel where ID_Hotel='$id_hotel'"; $result = mysql_query($query) o
$size=$_FILES['files']['size'];
if($size > 1) {
$query = "Delete from Imagini_Hotel where ID_Hotel='$id_hotel'";
$result = mysql_query($query)
or die("query failed: " . mysql_error());
}
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['files']['name'][$key];
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];
if($file_size > 9097152){
$errors[]='File size must be less than 9 MB';
}
if($file_size <= 0)
{
}
else
{
$query="Insert into Imagini_Hotel (`ID_Hotel`,`Nume_Poza`,`Prioritate`) VALUES('$id_hotel','$file_name','$key'); ";
$desired_dir="../../../images/hotel/$id_hotel";
if(empty($errors)==true){
if(is_dir($desired_dir)==false){
mkdir("$desired_dir", 0777); // Create directory if it does not exist
}
if(is_dir("$desired_dir/".$file_name)==false){
move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
}else{ // rename the file if another one exist
$new_dir="$desired_dir/".$file_name.time();
rename($file_tmp,$new_dir) ;
}
mysql_query($query);
}else{
print_r($errors);
}
}}
if(empty($error)){
echo "Success";
}
$size=$\u文件['FILES']['size'];
如果($size>1){
$query=“从Imagani_Hotel中删除,其中ID_Hotel='$ID_Hotel'”;
$result=mysql\u查询($query)
或者死(“查询失败:.mysql_error());
}
$errors=array();
foreach($\u FILES['FILES']['tmp\u name']作为$key=>$tmp\u name){
$file\u name=$key.$\u FILES['FILES']['name'][$key];
$file\u size=$\u FILES['FILES']['size'][$key];
$file\u tmp=$\u FILES['FILES']['tmp\u name'][$key];
$file\u type=$\u FILES['FILES']['type'][$key];
如果($file_size>9097152){
$errors[]=“文件大小必须小于9 MB”;
}
如果($file\u size有一个['error']
参数,你可以检查(而且无论如何都应该检查)。现在你只是假设上传成功
if ($_FILES['tmp_name']['error'][$key] === UPLOAD_ERR_OK) {
... file was uploaded ...
} else {
die("Upload failed with error code " . $_FILES['tmp_name']['error'][$key]);
}
这里定义了错误代码:您对代码0(成功)和4(无文件)感兴趣
另外,请注意,上载处理代码会使服务器完全远程受损。您在move..()
操作中直接使用用户提供的文件名,允许恶意用户在系统上的任何文件上涂鸦。没有任何说明用户提供的文件名不能包含路径信息,例如['name']='../../../../../../../../etc/passwd
,您的脚本在不进行任何筛选/检查的情况下愉快地盲目使用它。也许可以检查文件大小($file\u tmp)是否大于0-您将知道文件大小。不要在SQL查询中插入变量!如果我上载了名为的文件,则“坏键”);drop table Imaginai_Hotel;--
您丢失了整个数据库它在管理界面中,它由登录和sha3加密保护,因此用户没有访问权限。这不是一个真正的借口。除非您让您的管理员直接访问服务器……如果您继续在其他地方重复使用此代码会怎么样?我只想仅在以下情况下进行删除查询:ome文件在该输入中,现在删除查询正在运行,即使输入为空。空文件输入将给出#4错误。它永远不会为0/成功。