Ir para conteúdo
Fórum Script Brasil

João Batista Filho

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por João Batista Filho

  1. 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';
        
        
    ?>

    ARQUIVOS INCLUSOS:

    - 3 imagens para teste

    - equal_class.php

    - equal_interface.php

    - Exemplo.php

    DOWNLOAD:

    http://koretu.com/@joao_batista-verificand...e-precisao_5401

  2. Título: PHP Tools

    Versão: 1.0

    Nome: PHPtools

    Versão: 1.0

    Funcionalidade: Permitir um rápido acesso a ferramentas sem ter que reescrever tudo

    Por que não colocar o que precisaremos sempre em um só lugar e com isso não precisar reescrever tudo sempre

    Quem falou que programador não tem sua caixa de ferramentas.

    Agente reuniu em um só lugar alguns métodos ( já que estamos usando class ) importantes para nosso dia a dia

    Se você tinha dúvida em quando usar métodos estáticos ( funções estáticas ) aqui está uma aplicação

    CONTEÚDO:

    Um class tools{} foi criada com alguns métodos importantes

    - Manipulação de RGB pelo nome da cor

    - Mostrando para seus visitantes a hora de uma postagem por extenso. EX: " segundos atrás " etc.

    - Tratamento de texto contra SQL Injection

    - Convertendo caracteres

    - Checar se arquivos existe em servidores da web

    - Validar Email

    - Validar CEP

    Na prática:

    Nome da classe é "tools"

    Validando um email:

    $email = tools::is_email('meuemail@domain.com');
    
    if( $email ) echo 'É um email';
    else echo 'Não é um email';
    Cores: Um bom uso seria na hora de criar imagens não precisar escrever em RGB e sim apenas o nome da cor
    echo tools::rgb('green'); // 0, 128,   0
    echo tools::rgb('green', 1); // array();  $cor[0] - $cor[1] - $cor[2]
                                                    0,      128,       0
    Tratando texto contra Sql Injection
    $meu_text_a_ser_inserido_no_bd = 'meu 'texto' `etc`; ';
    mysql_query("INSERT INTO `table` VALUES ('". tools::Nj($meu_text_a_ser_inserido_no_bd) ."')");
    
    // OBS:. Nj = No Inject
    Vamos entender melhor observando a interface PHPtools__interface.php ( Não inclusa, mostrada aqui apenas para entendimento dos métodos )
    <?
    interface phptools{
    
        /**
        * Tratando cores RGB pelo nome
        *
        * Se o parâmetro 2 for omitido então será retornado uma string ex: 0,0,0
        *
        * Se o parâmetro 2 não for omitido será retornado um array(0,0,0);
        *
        * @param string $color_name
        * @return array() ?
        * @return string  ?
        *
        * Ex: tools::rgb('green'); // 0, 128, 0
        *
        * Ex: $cor = tools::rgb('green', 1); // array();  $cor[0] - $cor[1] - $cor[2]
        *                                               0,       128,       0  
        */
        static public function rgb($color_name);
    
    
        
    
        /**
        * E se você mostrar para seus visitantes uma mensagem agradável referente a data de uma determinada postagem.
        * 
        * Exemplo: 1 minuto atrás, segundos atrás etc.
        *
        * A data cadastrada deve sempre ser nesse formato:   date('d-M-Y|H-i-s');   com os traços e a barra exatamente como está ali
        *
        * Para usar basta chamar a função no local onde a data é mostrada ex:
        * 
        * <code> 
        *
        * $minha_data = '05-Apr-2012|18-40-50';
        * 
        * echo tools::timeEvents($minha_data);
        *
        * </code>
        *
        * @param string $eventDate
        * @return string;
        */
        static public function timeEvents($eventDate);
        
        
        
        
        /**
        * Aqui estão algumas funções que podem salvar seu banco de ataques de SQL INJEÇÃO
        * USO:
        * $meu_text_a_ser_inserido_no_bd = 'meu 'texto' `etc`; ';
        * 
        * mysql_query("INSERT INTO `table` VALUES ('". tools::Nj($meu_text_a_ser_inserido_no_bd) ."')");
        *
        * OBS:. Nj = No Inject
        *
        * @param string $str
        * @return string tratada
        */ 
        static public function Nj($str);
        
        
        
    
        /**
        * E quando você recebe um texto cheio de caracteres latinos entre outros, mas você que apenas letras sem acentos especiais
        * USO:
        * 
        * $Texto = 'Eu gosto de café';
        * echo tools::Az($Texto, '.'); 
        * 'eu.gosto.de.cafe' 
        *
        * echo tools::Az($Texto); 
        * 'eu-gosto-de-cafe'     
        *
        * OBS. O segundo parâmetro é opcional, quer dizer que você pode colocar o que quiser no lugar de espaços @#$& entre outros, por padrão será -    
        *
        * @param string $string
        * @return string
        */
        static public function Az($string);
        
        
        
        
        /**
        * Vamos ver se um arquivo existe em qualquer servidor da web
        * para isso vamos ver se retorna o codigo 200
        *
        * USO: $File = 'http://site.com/arquivo.zip';
        *
        * if(tools::is_200($File)) echo 'Existe';
        *
        * @param string $url
        * @return bool
        */
        static public function is_200($url);
        
        
        
        
        
        /**
        * Verificando se $Email é um email válido
        * 
        * @param string $Email
        * 
        * @return bool
        */
        static public function is_email( $Email );
    
    
    
        
        /**
        * Verificando se $Cep é um cep válido
        * 
        * @param string $Cep
        * 
        * @return bool
        */    
        static public function is_cep( $Cep );
        
        
        
    }
    ?>

    DOWNLOAD:

    http://koretu.com/@joao_batista-reunindo-f...m-so-lugar_5400

    Será que você não poderia contribuir e nos ajudar a melhorar nossa caixa de ferramentas, post ai uma função (método) útil e nos adicionaremos e mudaremos a versão para 1.1.

    Abraço a todos.

×
×
  • Criar Novo...