4

サーバーのprofile/ディレクトリにファイルをアップロードしようとしていますが、すべてが機能している可能性があります...ただし、アップロード時に、jpegpngとgifが正しいファイルタイプではないと思われます。なぜこれをしているのですか。ここで何が問題になっていますか?どうすれば修正できますか?

function change_profile_image($user_id, $file_temp, $file_extn) {
$file_path = 'profile/' . substr (md5(time()), 0, 10) . '.' . $file_extn;
move_uploaded_file($file_temp, $file_path);
mysql_query("UPDATE `users` SET `profile` = " . mysql_real_escape_string($file_path) . "' WHERE `user_id` = " . (int)$user_id);

}

 if (isset($_FILES['profile']) === true) {
    if (empty($_FILES['profile']['name']) === true) {
       echo 'y u no choose file!';
  } else {
       $allowed = array ('jpg', 'jpeg', 'gif', 'png');
       //this is the part i think may be brocken.
       $file_name = $_FILES['profile']['name'];
       $file_extn = strtolower(end(explode (' . ', $file_name)));
       $file_temp = $_FILES['profile']['tmp_name'];

       if (in_array($file_extn, $allowed) === true) {
        change_profile_image($session_user_id, $file_temp, $file_extn);

        header('Location: dontdelete.php');
        exit();

       }else {
        echo 'y u no jpg or png or gif';       

       }
  }
 }

if (empty($user_data['profile']) === false) {
    echo '<img src"', $user_data['profile'], '" alt="">'; 
}
4

1 に答える 1

3

explode (' . ', $file_name)に変更explode ('.', $file_name)

また、画像拡張子で終わるだけでなく、有効な画像を確認する必要があります。

また、img出力に欠落=しているため、3回エコーする代わりに連結することもできます。

echo '<img src="'.$user_data['profile'].'" alt="">';

于 2012-11-13T01:35:09.307 に答える