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;
Obs.: Muitas funções prontas do php como similar_text não foram feitas para o que estamos mostrando aqui por não suportar grande quantidade de dados e não é segura para binários
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 null
*/
public 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';
?>
Pergunta
João Batista Filho
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;
Obs.: Muitas funções prontas do php como similar_text não foram feitas para o que estamos mostrando aqui por não suportar grande quantidade de dados e não é segura para binários
Arquivos suportados:
Todos os tipos
NA PRÁTICA:
Vamos ver na interface um pouco dos métodos usados
EXEMPLO DE USO REAL:ARQUIVOS INCLUSOS:
- 3 imagens para teste
- equal_class.php
- equal_interface.php
- Exemplo.php
DOWNLOAD:
http://koretu.com/@joao_batista-verificand...e-precisao_5401
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.