0

サーバーフォルダーにアップロードする前に、ファイルの名前を特別に画像に変更して、アップロード時に同じ名前のファイルを回避し、同じ名前でファイルを書き換える方法について疑問に思っています。画像のファイル名として school_id を使用する傾向があります。ここにphpコードがあります

include_once('DBconnect.php');

session_start();
$school_id = $_SESSION['school_id'];


$name = $_FILES['file_path'] ['name'];
$size = $_FILES['file_path'] ['size'];
$type = $_FILES['file_path'] ['type'];

$extension = substr($name, strpos($name, '.')+1);

$max_size =3145728;

$temp_file = $_FILES['file_path'] ['tmp_name'];

if(isset($name)){

    if(!empty($name)){

        if(($extension == 'jpg' || $extension == 'jpeg') && ($type ==  'image/jpeg' || $type == 'image/jpg') && $size <= $max_size  ){



         if($school_id == 0){

            $location = 'uploads_images/super_admin/';





                                  move_uploaded_file($temp_file,$location.$name);

                     $insert_path = "INSERT INTO image_upload  (school_id,path_name) 
                                                     VALUES('$school_id','$name')";

                                $result2 = mysql_query($insert_path);
                                              if(@!$result2){
                                                    die('error header'.mysql_error());
                                                  }



                    echo "Success in uploading";


            }
            else{

                $location = 'uploads_images/schools/';




                                 move_uploaded_file($temp_file,$location.$name);

                     $insert_path = "INSERT INTO image_upload (school_id,path_name) 
                                        VALUES('$school_id','$name')";

                                        $result = mysql_query($insert_path);
                                          if(@!$result){
                                               die('error header'.mysql_error());
                                             }

                    echo "Success in uploading";





            }



        }
        else{

            echo "File type is too big or Incorrect file type";
        }


    }
    else{

            echo "Please Choose A JPEG File";
        }

}


?>
4

2 に答える 2

1

クライアント側のファイル名を信頼しないでください。

新しいファイル名をmove_uploaded_file関数に渡すことができます。次のようなことをお勧めします。

$name=uniqid($school_id, true).$extension;
move_uploaded_file($temp_file,$location.$name);

uniqidPHP関数に組み込まれていますhttp://php.net/manual/en/function.uniqid.php

これが役立つことを願っています

于 2012-12-25T11:28:49.780 に答える
0

移動前に file_exists を使用して、名前の競合が発生する可能性があるかどうかを判断できます。 http://php.net/manual/en/function.file-exists.php

1 つのオプションは、ファイル名にある種のタイムスタンプを追加して、一意性を保証することです。

于 2012-12-25T11:21:00.977 に答える