使用PHP更新用户头像

时间:2017-08-19 22:18:44

标签: php

我面临的问题是:

Notice: Undefined index: fileToUpload in C:\XAMPP\htdocs\littletodoapp\profile.php on line 56

$folder = "uploads/";
$upload_image = $folder . basename($_FILES["fileToUpload"]["name"]);
if(isset($_POST["updatePhoto"])) {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $upload_image)) {

        $checkImage = "SELECT imageID FROM photos WHERE userID = :userID";
        $checkImage = $pdo->prepare($checkImage);
        $checkImage->bindParam(':userID',$_SESSION['user_id']);
        $checkImage->execute();

        $row = $checkImage->fetch(PDO::FETCH_ASSOC);

        if($checkImage->rowCount() > 0) {
            $checkImage = "UPDATE photos SET (imageID, userID) VALUES (:uploadImage, :userID WHERE userID = :userID";
        $checkImage = $pdo->prepare($checkImage);
        $checkImage->bindParam(':uploadImage',$upload_image);
            $checkImage->bindParam(':userID',$_SESSION['user_id']);
            $checkImage->execute();
        }  else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
}

我不是100%为什么在我第一次加载profile.php.时收到此错误的原因当然如果我尝试提交新图像,错误就会消失,但随后我的新图像不会上传,当然我看到错误是回声' d。

有人可以帮我指点正确的方向吗?我很乐观,我忽略了一些小事。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题就像在上传之前和之后调用相同的脚本一样。虽然这会导致许多潜在的问题,但这是一种广泛传播的习惯,特别是在初学者教程中。对于将来,您应该将这些内容分开:呈现和处理表单是两个独立的事情,因此请将代码分开。这可以防止此类问题,并使代码更容易阅读。

然而,在你目前的情况下,这意味着持有$_FILES["fileToUpload"]["name"]的行可能会抛出警告(这不是错误!),因为在上传之前该变量尚未设置。它仅存在于处理上载文件的脚本运行中,因此执行HTTP POST请求时。