1

我有以下代码,用于在显示用户信息时从数据库加载用户图像。

我试图以一种方式编写它,它会检查用户是否已经在数据库中拥有与他们的用户 ID 相关联的图像,如果是,将保留图像,如果没有,将显示“missing.jpg” /默认用户图像。

我尝试了以下方法,但现在似乎代码正在覆盖现有图像并用 missing.jpg 图像替换它们,我不知道为什么。

我会很感激有人看一看并告诉我为什么会这样。

    //Images
    $thisScript = $_SERVER["SCRIPT_FILENAME"];
    $dirName = dirname($thisScript);
    $relative_path = "images/headshots/".$this->id.".jpg";
    $missing_path = "images/headshots/missing.jpg";
    $full_path = $dirName . "/" . $relative_path;

    //if(file_exists($relative_path))
    //if(file_exists($_FILES['uploadedfile']['name']))
    if(basename( $_FILES['uploadedfile']['name']) != '' /*and (file_exists($_FILES['uploadedfile']['name']))*/)
    {
            $this->process_headshot_file($relative_path, $full_path);
    }
    else
    {
        //$this->process_headshot_file($missing_path, $full_path);
        $query = "UPDATE hraps SET headshot_filename = '".$_SESSION['missing_headshot_image']."' WHERE id = ".$this->id;
        $result = mydb::cxn()->query($query);
    }

预先感谢您的帮助。

4

1 回答 1

0

if在这里的声明:

 if(basename( $_FILES['uploadedfile']['name']) != '')

只有在有东西的时候才会起作用$_FILES

由于您说要在显示他们的信息时显示图像,因此这可能不会经常触发,因此会触发else

我认为您不需要做任何比这更复杂的事情:

$image = "images/headshots/missing.jpg";
if(file_exists($relative_path)) {
    $image = $relative_path;
}

$full_path = $dirName . "/" . $image;
$this->process_headshot_file($image, $full_path);
于 2012-09-10T16:44:56.777 回答