Pular para o conteúdo principal

Postagens

Evitando contador duplicado...

Caso você tenha um contador inteiro em uma tabela, para que este tenha uma leitura consistente, evitando chaves duplicadas, use os comandos SQL abaixo: SELECT contador FROM tbl_contador FOR UPDATE; UPDATE tbl_contador SET contador = contador + 1;

Evitando o SQL injection e ataque XSS

Devemos sempre procurar evitar ataques ao nosso sistema. Com relação as strings recebidas pelos usuários tratar com mysql_real_escape_string e ao imprimir utilizar o htmlentities . Assim você evita dois tipos de ataque. No primeiro evita o SQL injection e no segundo o ataque XSS.

Validar nome de arquivo

Não é bom salvar arquivos uplodeados com o mesmo nome recebido, pois pode ter diversos caracteres inválidos, ser muito grande ou que não podem ser usados em um link. A função abaixo resolve o problema dos caracteres inválidos de arquivos: function isValidFileName($file) { /* don't allow .. and allow any "word" character \ / */ return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file); }

Alterando a senha do root do mysql...

Execute as SQL abaixo no banco: use mysql; update user set password=PASSWORD("nova_senha") where User='root'; flush privileges; Agora é só reiniciar o mysql que vai funfar.

Classe que gera um backup do banco escolhido sem problemas com foreign key

Fiz a classe abaixo para ajudar na geração e restauração de backup. Ela ordena as tabelas de tal forma a evitar erros de foreign key ao fazer a restauração. Código: /** * Classe criada no dia 14/02/2011 para gerar um backup do banco * sem o inconveniente de problemas com chave estrangeira ao fazer o restore * Exemplo: * //seta o banco que se deseja fazer o backup * $backup->setBd($_POST['db']); *        * // seta quais tabelas se deseja fazer o backup * $backup->setListaTblEscolhida($_POST["tabelas"]); *        * // cria um nome para o backup * $no_backup = "./".$_POST['db']."_bkp_".date("YmdHi").".sql"; *     * // manda a classe fazer o backup * $backup->fazerBackup($no_backup); */ class f_Backup{     private $lista_bd; // lista de bancos de dados     private $lista_tbl; // lista das tabelas do banco de dados escolhido     private $lista_tbl_escolh...

Indução de tipo em métodos

Este recurso permite que você especifique o tipo dos argumentos que serão passados para um método. Você pode querer que seu método só receba parâmetros do tipo array ou uma instância de um objeto, por exemplo. public function metodoBase(SubClasse $subObjeto) {     echo 'Variável precisa ser uma instância de SubClasse'; } Para especificar que o parâmetro passado seja um array, utilize; public function metodoBase(array $vetor){     echo 'A variável precisa ser um vetor'; }

Utilizando instanceof

O operador de tipo instanceof é utilizado para determinar se uma variável é ou não uma instância (um objeto) de uma classe. Exemplo $subObjeto = new SubClasse; if ($subObjeto instanceof SubClasse) {     //isto é verdadeiro }