2011-12-16 4 views
0

기본적으로 위의 디렉토리에있는 파일을 나열하는 웹 사이트가 있으며 그 옆에 "x"링크를 만들려고 노력하고 있습니다. 이 파일을 서버에서 삭제합니다.PHP foreach 루프에서 파일을 삭제하는 방법

foreach($logs as $log) 
    { 
     $noext = str_replace(".html", "", $log); 
     $rawlog = str_replace("../", "", $noext); 
     echo "<li><a href='#' onClick='javascript:loadLog(" . $rawlog . ");LogLoop();'>".$rawlog."</a></li>"; 
    } 

나는 아마 어떻게 든 말했다 파일을 삭제하는 PHP 함수를 호출하는 X에 대한 온 클릭을 사용할 수 있습니다, 그것을 접근하는 방법을 잘 모르겠어요?

도움을 주시면 대단히 감사하겠습니다.

답변

2

이미 AJAX 호출을위한 메커니즘이 있습니다 (아마도 loadLog의 기능). 그래서 당신은 삭제에 대해 동일한 접근 방식을 유지하는 것입니다 : 서버에 AJAX 호출을, 쿼리 변수로 파일 이름을 사용하여, 예를 들어, URL에

http://my.server/delete.php?file=some.log 

서버 측 스크립트는 다음 매개 변수 및 호출을 읽을 것 unlink을 눌러 파일을 삭제하십시오.

주의 : 인증 된 직원 만 로그를 삭제할 수 있습니다. 그럼에도 불구하고 위와 같은 계획을 세우면 사용자가 CSRF 공격에 취약해질 수 있습니다 (이론적으로는 그렇지만 실제로는 발생할 수 있음, preventing csrf in php 참조).

0

파일을 삭제하려면 링크 해제 기능을 사용하십시오. 경로는 파일에 var에 $의 rawlog입니다 가정하면 :

unlink($rawlog); 
+0

$ log는 실제로 제거 할 경로 (전체 경로 + 파일명)이지만 루프의 링크에서 어떻게 호출 할 수 있습니까? – kogh

0

당신이 정말 클릭에 파일을 unlink() 하시겠습니까?

실제로 사용자가 파일을 삭제하고 싶지 않고 상자를 다시 클릭한다고 가정하면?

삭제를 위해 파일을 표시 한 다음 cron 또는 그 유사 사이트에서 일주일에 한 번 예약 된 정리를 수행하는 것이 좋습니다.

+0

이 경우 사용자가 즉시 삭제할 수 있기를 바랍니다. – kogh

관련 문제