2012-08-08 13 views
0

나는이 일을 올바르게하고 싶습니다. 이것은 간단한 업로드 클래스입니다. 변수 이름 (Joomla 사용자 ID 및 확장자를 물론)을 사용하여 실제 이미지 파일의 이름을 바꾸려면 아래 코드를 변경해야합니다. 로그인 한 사용자 ID를 얻는 것은 쉽습니다. 업로드하기 전에 내 이미지 파일 이름은 사용자는 (usersimagename.jpg)를 가지고 있으며 줌라의 사용자 변수에 의해 채워 (62.png) 같은 숫자 userid.ext로 변경해야합니다.PHP로 이미지 파일 이름 바꾸기

<?php 

$uploaddir = $_REQUEST['path']; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
echo "success"; 
} else { 
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE! 
// Otherwise onSubmit event will not be fired 
echo "error"; 
} 

?> 
+1

그리고 귀하의 질문은 무엇입니까? 질문에 단 하나의 물음표가 없습니다. –

+0

php 함수 [rename] (http://php.net/manual/de/function.rename.php)는 무엇입니까? – Stony

답변

1

나는 당신의 질문을 이해한다면 바로이 때 파일 확장자를 유지하려면 내가 줌라 변수를 모른다. 저장을 위해 실제 이름을 변경하지만 이런 일이

<?php 
    $ext = strrchr($_FILES['userfile']['name'],"."); 

    $uploadfile = $uploaddir . $JOOMLAID . $ext; 
?> 

를 작동해야하는 것은 그 다음 나머지 부분이 후속 귀하의 코드입니다.

생각해 볼 수있는 생성 된 이름으로 $ JOOMLAID를 사용할 수도 있습니다.

+0

감사합니다. – decaye

0

코드 자체는 정상적으로 작동하지만 논리 적으로 악몽입니다. 사용자는 최종 저장 영역 위치에 대한 경로와 파일 이름을 모두 지정할 수 있습니다. 악의적 인 사용자가 사이트에 침입하면 어떻게 될지 고려하십시오. 웹 서버의 userID가 액세스 할 수있는 서버의 ANY 파일을 간단히 바꿀 수 있습니다.

$_REQUEST['path'] = '/etc/'; 
$_FILES['userfile']['name'] = 'passwd'; 

또는

$_REQUEST['path'] = 'c:\windows\system32\'; 
$_FILES['userfile']['name'] = 'ntoskrnl.exe'; 

다음 동안 웹 서버에 의해 수정 될 가능성이 단지 충격 값의 예, 그리고는, 당신의 코드가 사람에게 완전히 PWN 수 있습니다 얼마나 쉽게 예입니다 당신의 섬기는 사람.