2011-02-10 5 views
9

PHP를 사용하여 서버에서 파일을 삭제하는 방법을 찾고 있습니다. 기본적으로 나는 내 파일이 방식으로 페이지에 나와 있습니다서버 파일 삭제

<ul> 
    <li><a href="delete_file.php?file=uploads/file_01.jpg">Delete File 01</a></li> 
    <li><a href="delete_file.php?file=uploads/file_02.jpg">Delete File 02</a></li> 
    <li><a href="delete_file.php?file=uploads/file_03.jpg">Delete File 03</a></li> 
</ul> 

문제는 내 delete_file.php 파일이 작동하도록하는 방법을 잘 모르겠어요입니다. 나는 이런 식으로 뭔가 할 필요가 믿는 :

<?php 
    $path="uploads/file_01.jpg"; 
    if(unlink($path)) echo "File Deleted"; 
?> 

...하지만 나는 $ 경로 I 삭제 클릭 한 파일로 변경하는 방법을 모르겠어요. 나는 거짓말을하지 않을거야

+0

당신이 $ _GET을 원하는 삭제 삭제됩니다 모든 파일을 포함하는 기본 디렉토리를 정의 [ '파일'], 이 URL에 파일을 추가하고 삭제할 수 있기 때문에 이것은 미친 짓입니다. –

+11

누군가가'delete_file.php? file = delete_file.php'을 패스하면 어떻게 될까요? – zerkms

답변

16

사용자가 파일을 삭제할 수있는 능력을 제공 할 때 엄청나게 신중해야하며 충분한 로프를 줄 것입니다. 자신을 걸어

$base_directory = '/home/myuser/'; 

그런 다음 파일

if(unlink($base_directory.$_GET['file'])) 
    echo "File Deleted."; 
+1

디렉토리 탐색도 허용하지 않는 것이 좋습니다. – drudge

+0

고마워요. 치료를 했어. 디렉토리 찾아보기를 금지 하시겠습니까? – PHPnoob

+0

누군가가이 URL을 전달하면 어떨까요 :'/delete_file.php?file = ../../etc/passwd' – drudge

2
<?php 
    $file_to_delete = $_GET['file']; 
    if (is_file($file_to_delete)){ 
    echo (unlink($file_to_delete) ? "File Deleted" : "Problem deleting file"; 

    } 
?> 

, 그것은 파일인지 확인 이외의 [ '파일']를 $ _GET을 살균 할 수있는 더 좋은 방법을 알고하지 않습니다. 이것이 유효한 방법이 아닌 경우 전문가가 부름을 부탁합니다. (present in this SO topic 지침을 따르십시오)

+0

자신을 보호하기 위해해야 ​​할 소독의 양은 최종 사용자에게 주어진이 기능에 어리 석다. 그래서 저는 그것을 OP에 남겨 둘 것입니다 :-) – Patrick

+3

사람이'../../someotherfile '과 같은 것을 입력하지 못하도록 ['basename()'] (http://php.net/basename)로 청소하십시오. '. – Jonah

+0

다른 작은 prbolem, 당신은 ';''전에'''''에 대한''),하지만 다른 모든 괜찮아요 –