1

情報が表示されたときにデータベースからユーザー画像を読み込むために使用される次のコードがあります。

ユーザーがデータベース内のユーザーIDに関連付けられた画像を既に持っているかどうかを確認し、持っている場合は画像をそのままにして、そうでない場合は「missing.jpg」を表示するように書き込もうとしました。 /defaultユーザー画像。

次のことを試しましたが、現在、コードが既存の画像を上書きして、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 に答える