PHP中缺少替换图像时显示默认图像的正确方法

PHP中缺少替换图像时显示默认图像的正确方法,php,Php,我有以下代码,用于在显示用户图像的信息时从数据库加载用户图像 我试图以这样一种方式编写它:它将检查用户是否在数据库中已经有一个与他们的用户id绑定的图像,如果有,将不处理该图像,如果没有,将显示一个缺少的.jpg/default用户图像 我尝试了以下方法,但现在代码似乎正在覆盖现有图像,并用丢失的.jpg图像替换它们,我不知道为什么 我希望有人能看一眼,告诉我为什么会这样 //Images $thisScript = $_SERVER["SCRIPT_FILENAME"];

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

我试图以这样一种方式编写它:它将检查用户是否在数据库中已经有一个与他们的用户id绑定的图像,如果有,将不处理该图像,如果没有,将显示一个缺少的.jpg/default用户图像

我尝试了以下方法,但现在代码似乎正在覆盖现有图像,并用丢失的.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);
    }
提前感谢您的帮助。

您的if声明如下:

 if(basename( $_FILES['uploadedfile']['name']) != '')
只有在$\u文件中有某些内容时才会起作用

因为你说你想在显示他们的信息时显示一个图像,这可能不会经常触发,所以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);

上传时不需要这样做;您通常只需检查文件是否存在于呈现页面上,如product.php,检查是否存在任何产品图像。如果没有找到图像,只显示丢失的图像。这看起来像是设置为在上载时检查,而不是在显示时检查。更可能的情况是,您希望检查数据库,查看是否定义了图像,如果是,则显示该图像。否则,显示丢失的图像。我可能也会跳过对数据库的写入,因为当空的DB字段做同样的操作时,对missing的引用没有任何意义。使用else{$image=images/headshots/missing.jpg;}不会用默认的缺失图像替换断开的图像链接。我不确定你的意思。你的意思是,如果他们还没有定义图像,你想将其添加到他们的个人资料中吗?没错。我尝试了:else{$relative path=images/headshots/missing.jpg;$image=$relative_path;}但它不起作用。对不起,我的意思是你想将它添加到他们的数据库配置文件中吗?如果你只是想在屏幕上显示它,你只需要调用$this->process\u headshot\u file$image,除非我不确定该函数的第二个参数应该是什么,我相信第二个参数应该是fullpath。但是,是的,试图将其保存到他们的数据库配置文件中。顺便说一句,非常感谢你迄今为止的帮助。