Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
[ ATUALIZADO ]
Como nosso amigo Carlos Coelho apontou abaixo o uso também de similar_text notem que:
A função similar_text não foi feita para o que estamos mostrando aqui por não suportar grande quantidade de dados e não é segura para binários
--------------------------------------------------------------------------
Primeiro gostaria de agradecer a todos, membros, equipe e desejar que o nome Imasters++ cresca cada vez mais
Agente está trazendo aqui uma solução para arquivos duplicados
Problema:
Um membro do seu site envia imagens ou outros arquivos, mas e se alguém começar a enviar o mesmo arquivo várias vezes o que você faria, alguém poderia usar CURL para enviar centenas de arquivos iguais e prejudicar seu servidor
Solução:
Assim como o youtube não deixa você enviar o mesmo vídeo duas vezes você também pode proibir essa ação para qualquer arquivo enviado para seu site.
Primeiro nos vamos verificar linha por linha se o arquivo enviado não é igual a outro e tudo isso com taxa de igualdade;
Arquivos suportados:
Todos os tipos
NA PRÁTICA:
Vamos ver na interface um pouco dos métodos usados
<?
interface equal_files{
/**
* Erros retornados em tempo de execução do script
*/
const FILE_IS_NOT_ARRAY = '<strong>$File</strong> deve ser um array';
const FILE_MORE_THAN_2 = '<strong>$File</strong> Suporta a abertura de apenas dois arquivos por vez';
const FILES_NOT_EXIST = 'Um ou mais arquivos não foram encontrados';
const FILE_OPEN_FAIL = 'A abertura de um ou mais arquivos falhou';
/**
* abrindo arquivos para leitura
* @return handler
*/
public function open_handler();
/**
* lendo os arquivos
* @return array
*/
public function read_file();
/**
* Verificação final de igualdade
* @return integer
*/
public function is_equal();
/**
* Fechando arquivos abertos por open_handler();
* @return nullpublic function close_handler();
}
?>
EXEMPLO DE USO REAL:
<?
require('equal_class.php');
$equal = new equal;
// Pode ser qualquer arquivo, aqui vamos usar imagen
$Arquivo_1 = '1.png';
$Arquivo_2 = '2.png';
$equal->File = array($Arquivo_1, $Arquivo_2);
$equal->init();
if($equal->Exact > $equal->Dividido_Por2)
echo 'São os mesmos arquivos com uma precisão de '. $equal->Exact_PerCent .'% de acerto';
elseif($equal->Fail > $equal->Dividido_Por2)
echo 'Não são iguais por que das '. $equal->Lines .' linhas do arquivos '. $equal->Fail_PerCent .'% são diferente(s)';
// OU exemplo de upload
if($equal->Exact > $equal->Dividido_Por2)
move_uploaded_file($_FILES['NAME']['TEMP'], 'DESTINO');
elseif($equal->Fail > $equal->Dividido_Por2)
echo 'ERRO: Você já enviou esse arquivo, tente outro';
?>
ARQUIVOS INCLUSOS:
- 3 imagens para teste
- equal_class.php
- equal_interface.php
- Exemplo.php
DOWNLOAD: link removido
Carregando comentários...