在上传到PHP mysql之前重命名视频

在上传到PHP mysql之前重命名视频,php,mysql,Php,Mysql,这段代码工作在一个很好的方式,但我想做一个视频重命名上传之前,你能为我修改它吗** if (isset($_POST['but_upload'])) { $name = $_FILES['file']['name']; $namefilm = $_POST['namefilm']; $year = $_POST['year']; $wirte = $_POST['wirte']; $dep = $_POST['dep']; $about = $_P

这段代码工作在一个很好的方式,但我想做一个视频重命名上传之前,你能为我修改它吗**

if (isset($_POST['but_upload'])) {
    $name = $_FILES['file']['name'];
    $namefilm = $_POST['namefilm'];
    $year = $_POST['year'];
    $wirte = $_POST['wirte'];
    $dep = $_POST['dep'];
    $about = $_POST['about'];
    $time = time();
    $target_dir = "../videos/";
    $target_file = $target_dir.$_FILES["file"]["name"];
    $file = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));
    if ($name == ""
        or $namefilm == ""
        or $year == ""
        or $wirte == ""
        or $dep == ""
        or $about == ""
        or $target_file == ""
        or $file == "") {
        echo 'erorr';
    } else {
        $videoFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
        $extensions_arr = array("mp4", "avi", "3gp", "mov", "mpeg");
        if (in_array($videoFileType, $extensions_arr)) {
            if (move_uploaded_file($_FILES['file']['tmp_name'], $target_file)) {
                $query = "INSERT INTO videos (name, location, namefilm, image, dep, wirte, yaer, time, about) VALUES('" . $name . "', '" . $target_file . "', '" . $namefilm . "', '" . $file . "', '" . $dep . "', '" . $wirte . "', '" . $year . "', '" . $time. "', '" . $about . "')";
                mysqli_query($con, $query);
                echo 'done';
            }
        } else {
            echo 'erorr';
        }
    }
}


您必须更改ur
$target\u file=$target\u dir.$\u FILES[“file”][“name”]

如果您要上传多个视频,它们不能有相同的名称,因此您可以将文件名更改为php随机生成的唯一id,如下所示:

$vidName = uniqid() . ".mp4";
$target_file = $target_dir.$vidName;

警告:当使用
mysqli
时,您应该使用和向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误进行攻击,这可能会非常有害。注意:这样会大大减少冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u query
接口混淆,因为缺少一个
i
可能会造成麻烦。示例:
$db=newmysqli(…)
$db->prepare(“…”)
过程接口主要是php4时代的产物,当时引入了
mysqli
API,不应在新代码中使用。⟼如果您采用了一种新的方法并一致地应用它,那么这段代码将受益匪浅。缩进传达了结构和意图,这使我们更容易理解您的代码,而无需花费大量时间对其进行破译。您希望使用什么规则来重命名文件?您可以从
$\u FILES[“file”][“name”]
获取文件名……该值可以是任何值,那么您希望将其更改为什么?您没有解释您希望计算机如何选择新名称,因此我们无法真正帮助您。但基本上,您可以在创建完成的
$target\u文件
变量之前进行重命名。文件名可能重复。硬编码文件名可以上载一个文件。。。但是,当有人稍后尝试上载另一个文件时,会出现一个明显的问题,因为在同一文件夹中不能有两个同名的文件。那么,为什么不展示一个类似的示例,而不是一个会导致问题的简单示例呢?
$vidName = uniqid() . ".mp4";
$target_file = $target_dir.$vidName;