2013-12-19 3 views
1

디렉토리에있는 모든 파일의 파일 이름을 텍스트 파일에 저장하는 PHP 스크립트가 있습니다. 그러면 해당 텍스트 파일이 해시됩니다. 내 스크립트의 내용은 다음과 같습니다.파일 해시가 PHP로 변경되었는지 확인하는 방법

$allnames = implode(",", $fileslist); 

file_put_contents($post_dir . "/md5file.txt",$allnames); 

$md5file = md5_file($post_dir . "/md5file.txt"); 

echo $md5file; 

새 파일이 업로드되거나 제거되거나 파일 이름이 변경되면 해시가 변경됩니다. 해당 해시가 변경되었는지 확인하고 확인할 수있는 방법이 필요합니다. (데이터베이스를 사용하지 않고)

+1

그런 다음 해시를 저장하고 이에 대해 확인 하시겠습니까? – kero

+0

파일 이름 변경만으로는 md5가 변경되지 않아야합니다. 파일 자체가 아니라 파일 시스템 항목의 일부이기 때문입니다. – Powerlord

+0

@Powerlord :이 경우 파일 내용이 다른 파일 이름의 변경으로 변경되므로 md5가 변경됩니다. – Stoic

답변

2

더러운 방법은 다음과 같습니다

$allnames = implode(",", $fileslist); 
file_put_contents($post_dir . "/md5file.txt",$allnames); 
$md5file = md5_file($post_dir . "/md5file.txt"); 
$last_hash = file_get_contents($post_dir . "/last_hash.txt"); 

if ($md5file != $last_hash) { 
    // save the new hash 
    file_out_contents($post_dir . "/last_hash.txt", $md5file); 
    // some file may have been added, removed or rename 
    // do something.. 
} else { 
    // no files has been added, removed or renamed, since last change. 
    // do something.. 
} 

기본적으로, 특정 파일에 현재의 해시를 저장하고 다음 반복에서이 파일을 읽고있다. 해시가 변경된 경우 나중에 비교할 수 있도록 새 해시를이 파일에 저장합니다.

데이터베이스를 사용하는 경우 데이터베이스를 통해 동일한 작업을 수행 할 수 있습니다. DB를하지 않고

+0

완벽한, 감사합니다! – user715564

0

2 가능성 :

  • 두 번째 파일을 만들고 그 안에 마지막 파일 이름을 저장하고 비교할.
  • 파일 이름 또는 파일 수에 파일 크기를 포함시키고 파일 크기가 변경되었는지 확인하십시오.
관련 문제