gpt4 book ai didi

php - 如何验证输入文件是否为空

转载 作者:行者123 更新时间:2023-11-29 08:37:52 25 4
gpt4 key购买 nike

您好,我有一个脚本,用于在数据库中插入多张图片,当我想删除现有文件并在每次更新时插入新文件时,但我不知道如何仅在输入为时进行删除文件,如果不是,则跳过该部分。这是我的代码:

$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";
}

最佳答案

有一个['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]);
}

错误代码定义如下:http://php.net/manual/en/features.file-upload.errors.php您对代码 0(成功)和 4(无文件)感兴趣。

另请注意,您的上传处理代码会使您的服务器遭受完全远程攻击。您在 move..() 操作中直接使用用户提供的文件名,从而允许恶意用户在系统上的任何文件上乱写乱画。没有任何内容表明用户提供的文件名不能包含路径信息,例如['name'] = '../../../../../../../etc/passwd,你的脚本愉快地盲目地使用它,没有任何过滤/检查。

关于php - 如何验证输入文件是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com