move_uploaded_file 不工作但没有错误

move_uploaded_file not working but no error

我的代码一直有问题,特别是 move_uploaded_file。我将保存图像的文件夹的权限更改为 777,以确保权限没有问题。我还阅读了一本关于如何使用 w3schools.com 的 move_uploaded_file 的 php 手册。关于如何使用 php 将我的图像上传到文件夹,我 运行 没有想法。请帮忙

这是带有 move_uploeaded_file:

的代码部分
<?php
    if (@$_GET['action'] == "ci"){
        echo "<form action='account.php?action=ci' method='POST' enctype='multipart/form-data'><br />
        Available file extention: <stong>.PNG .JPG .JPEG</stong><br /><br />
        <input type='file' name='image' /><br />
        <input type='submit' name='change_pic' value='Change' /><br />
        </form>";
        if (isset($_POST['change_pic'])) {
            $errors = array();
            $allowed_e = array('png', 'jpg', 'jpeg');

            $file_name = $_FILES['image']['name'];
            $file_e = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
            $file_s = $_FILES['image']['size'];
            $file_tmp = $_FILES['image']['tmp_name'];

            if(in_array($file_e, $allowed_e) === false) {
                $errors[] = 'This file extension is not allowed.';
            }

            if ($file_s > 2097152) {
                $errors[] = 'File size must be under 2MB';
            }

            if (empty($errors)) {
                move_uploaded_file($file_tmp, '../images/'.$file_name);
                $image_up = '../images/'.$file_name;
                $check = mysqli_query($connect, "SELECT * FROM users WHERE usename='".@$_SESSION['username']."'");
                $rows = mysqli_num_rows($check);

                while($row = mysqli_fetch_assoc($check)) {
                    $db_image = $row['profile_pic'];
                }
                if($query = mysqli_query($connect, "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'"))
                    echo "You have successfuly changed your profile picture!";
        } else {
                foreach($errors as $error) {
                    echo $error, '<br />';
                }
            }
        }
    }
?>

这是代码的最后一块,稍作重写。 move_uploaded_file returns 一个布尔值,所以我们可以通过设置变量 $result:

来测试它是真还是假
        if (empty($errors)) {
            $image_up = 'images/'.$file_name;
            $result = move_uploaded_file($file_tmp, $image_up);

            if($result){
                //this line had a typo usename -> username
                //Also, you should change this over to using parameters and binding values ASAP. This leaves you open to hacking.
                $check = mysqli_query($connect, "SELECT * FROM users WHERE username='".@$_SESSION['username']."'");
                $rows = mysqli_num_rows($check);

                while($row = mysqli_fetch_assoc($check)) {
                    $db_image = $row['profile_pic'];
                }
                $q = "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'";
                if($query = mysqli_query($connect, $q)){
                    echo "You have successfuly changed your profile picture!";
                    }
            } else {
                echo "Upload failed.";
            }
    } else {
            foreach($errors as $error) {
                echo $error, '<br />';
            }
        }
    }
}