2

PHPで画像アップロードシステムを作りたいのですが、ユーザーがウイルスやその他のファイルではなく、png、jpgファイルのみをアップロードできるようにしたいと考えています。これどうやってするの?

4

3 に答える 3

1

ステップ 1: 拡張子を確認します (拡張子ファイルは で終わります)

ステップ 2: MIME タイプを確認します ($file_info = getimagesize($_FILES['image_file']; $file_mime = $file_info['mime'];)

アップロードしたい画像拡張子のみを許可するため、ホワイトリストを作成できます

のようなものを試してください

$whitelist = array(".jpeg",".jpg",".png");
foreach ($whitelist as $item)
    {


       if(preg_match("/$item\$/i", $_FILES['uploadfile']['name']))
               {
                   $uploaddir='uploads/uploads_image/';
                   $uploadfilename=mysql_prep(basename($_FILES['uploadfile']['name']));
                    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
                   $iv=  mcrypt_create_iv($iv_size,MCRYPT_DEV_RANDOM);
                   $newname= mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "this is the key",$uploadfilename.time(), MCRYPT_MODE_ECB, $iv);
                   $newfilename=  (bin2hex($newname));
                   $uploadfile=$uploaddir.$newfilename.".png";
                   $access=true;
               }
    }

ユーザーがブラックリストを作成してその他のファイルをアップロードしようとした場合、ユーザーのIPをブロックすることもできます

foreach ($blacklist as $item) 
    {
        if(preg_match("/$item\$/i", $_FILES['uploadfile']['name'])) 
            {
                $network = ip2long("10.12.0.0");
                $mask = ip2long("255.255.0.0");
                $ip = ip2long($_SERVER{'REMOTE_HOST'});
                if (($network & $mask) == ($ip & $mask)) {
                  die("Unauthorized");
                }
            }


    }
于 2012-10-27T07:54:04.423 に答える
1
 ($_FILES["file"]["type"] == "image/png")

詳細については、ここをクリックしてください

于 2012-10-27T07:55:11.200 に答える
0
1st check:-
//check if contain php and kill it 
 $pos = strpos($filename,'php');
 if(!($pos === false)) {
  die('error');
 }

2nd check:-
//get the file ext
 $file_ext = strrchr($filename, '.');
$image_list = array(".jpg",".jpeg",".gif",".png"); 
 if (!(in_array($file_ext, $image_list))) {
        die('not allowed extension,please upload images only');
 }


3rd check:-    
$fileType = $_FILES["uploaded_file"]["type==image/jpeg || image/gif || image/png"];

4th check:-     
preg_match("/.(gif|jpg|png)$/i", $fileName);

hope these checks solve your problem....
于 2012-10-27T09:59:48.530 に答える