2010-08-16 9 views
1

파일 이름이 fin's xyz.mp3 인 경우이 핀 (')의 작은 따옴표로 인해 업로드되지 않습니다. PHP에서 move_uploaded_file($tmp,$dest)을 어떻게 사용해야합니까?파일 업로드시 문제가 발생했습니다.

예 :

$name1=$_FILES['FileName']['name']; 
$tmp1=$_FILES['FileName']['tmp_name']; 
$target = "../music_files/"; 
$up=uniqid().$name1; 
$target = $target.$up; 
move_uploaded_file($tmp1,$target); 

HTML :

<form action="" method="post" enctype="multipart/form-data" name="loginfrm" onsubmit="return CheckLogin();"> 
    <input type="file" id="FileName" name="FileName" class="text-box" /> 
    <input name="Submit" type="submit" class="button" value="Save" /> 
</form> 
+0

더 많은 코드를 표시 할 수 있습니까? 파일 업로드는 어떻게 처리합니까? '$ tmp'와'$ dest'는 무엇입니까? –

+0

@anuradha - 코드를 쉽게 포맷 할 수 있도록 포맷 할 수 있습니까? 각 코드 행을 4 칸 들여 쓰기하십시오. –

+0

마크 다운 버튼을 사용하여 코드를 편집하십시오. 코드를 읽는 것이 어렵습니다. – stillstanding

답변

0

이 파일 간단한 preg_replace() 모든 비 영숫자 문자를 제거 할 수 있으며 다음에하지 않아도을 저장하는 방법에 따라 그것에 대해 걱정하십시오.

$name1 = preg_replace('~[^a-z0-9_-]~i', '', $_FILES['FileName']['name']); 

계류중인 나는 바보 같은 실수를 범하지 않았다.

당신이 데이터베이스에 이름을 저장하는 경우는 표에 당신의 정보를 저장하는 것이 실제 파일 이름을 MD5 해시 및 참조 할 수

+0

나중에 파일 이름은 addslashes를 사용하여 지느러미의 xyz.mp3이므로 데이터베이스에 파일 이름을 저장하고 있습니다. 삽입 쿼리에 있지만 파일이 "../music_files/ dir bzs single quote"에 업로드되지 않습니다. – anuradha

0

지수는 많은 시스템에 특수 문자를 제공 -. 당신은 수도 당신의 파일 이름을 위생 처리하고 싶습니다. 문자 집합을 허용 된 사이트 목록과 다른 사람을 드롭 :이 보너스로, 당신을 제공

$name1=$_FILES['FileName']['name']; 
$up=uniqid() . preg_preplace('/[^a-zA-Z0-9_-]/','',$name1); 

, 유효하지 않은 파일 이름과 디렉토리 탐색 공격에 대한 탄력성을 추가 (예를 들어, 공격자가 "줄 것이다 경우 ../../ .. /../../../../../etc/passwd "를 파일 이름으로 사용).

관련 문제