Avançar para a área de conteúdo

ir para o conteúdo principal

developerWorks Brasil  >  Software livre  >

Prepare Web Sites com Rapidez Utilizando CakePHP, Parte 1: Introdução

Auxílio no Desenvolvimento Rápido e Fácil de PHP

developerWorks
Ir para a página anteriorPágina 5 de 11 Ir para a próxima página

Opções de documento

Código de amostra


Classificar este tutorial

Ajude-nos a melhorar este conteúdo


Validação de dados do CakePHP

Agora você vai dar uma rápida olhada na validação de dados do CakePHP inserindo um pouco de validação de dados para usuários com base em expressões regulares definidas. Ao definir suas próprias expressões regulares para validação de dados, você pode exercer um controle maior sobre os critérios de concluir/falhar para campos de formulário individuais no Tor.

O Modelo de Usuário do Tor

Dê outra olhada no modelo de usuário.


Listagem 21. O Modelo de Usuário
                    
<?php class User extends AppModel {
  var $name = 'User';
  var $validate = array(
    'username' => VALID_NOT_EMPTY,
    'password' => VALID_NOT_EMPTY,
    'email' => VALID_EMAIL
  ); } ?>
                

Este é um bom começo, mas não é suficiente. Você vai querer se certificar de que os comprimentos de campos sejam respeitados e de que o nome de usuário ainda não exista. Isso será feito através da definição de suas próprias expressões regulares para validação e definição de uma função para verificar um nome de usuário em uma tabela de usuários antes de salvar o usuário.



Voltar para parte superior


Expressões Regulares (Resumo)

Uma discussão completa sobre expressões regulares está fora do escopo deste tutorial. O Manual de PHP contém informações sobre expressões regulares em PHP e você deve revisá-lo antes de querer ir mais longe na criação de suas próprias expressões regulares de validação de dados. Consulte Recursos para conhecer alguns links úteis.

Aexpressão regular é basicamente um padrão de caracteres utilizados para comparar uma cadeia com outra. Por exemplo, o caractere * em uma expressão regular corresponderá a qualquer caractere, inúmeras vezes. Se você não souber nada sobre expressões regulares, não se preocupe. O exemplo abaixo servirá como introdução.

Crie Sua Própria Validação

O CakePHP fornece algumas expressões regulares de validação de dados integradas, incluindo:VALID_NOT_EMPTY, VALID_NUMBER, VALID_EMAIL e VALID_YEAR. Essas constantes são definidas em cake/libs/validators.php e não devem ser modificadas, embora você possa achar útil revisá-las.

Para os campos de nome de usuário e senha, você precisa validar se os dados enviados não têm mais de 40 caracteres de comprimento. Também é muito útil verificar se o nome de usuário e a senha têm pelo menos seis caracteres. Uma expressão regular para corresponder a cadeias com um comprimento entre seis e 40 caracteres seria semelhante a esta: /^.{6,40}$/.

Lendo essa expressão regular da esquerda para a direita:

  • / — Marca o início da expressão regular
  • ^ — Quer dizer do início da cadeia
  • . — Quer dizer qualquer outro caractere
  • {6,40} — Quer dizer pelo menos seis vezes, mas não mais de 40 vezes
  • $ — Quer dizer e a cadeia termina
  • / — Marca o final da expressão regular

Portanto, lida como um todo, essa expressão regular quer dizer "do início da cadeia, um ou mais caracteres, pelo menos seis mas não mais que 40, e a cadeia termina."

Para colocar a expressão regular em uso (consulte a Listagem 22), substitua as instâncias de VALID_NOT_EMPTY pela expressão regular, entre aspas (para impedir o PHP de tentar interpretar quaisquer caracteres especiais).


Listagem 22. Expressão Regular em Script PHP
                    
<?php
class User extends AppModel
{
  var $name = 'User';

  var $validate = array(
    'username' => '/^.{6,40}$/',
    'password' => '/^.{6,40}$/',
    'email' => VALID_EMAIL
  );
}
?>

Certifique-se de ter salvado todos os seus arquivos, retorne para http://localhost/users/register e tente registrar um usuário com um nome de usuário de quatro caracteres. Você deverá ver algo semelhante à Figura 11.


Figura 11. Validação de Dados
Validação de Dados

Expressões regulares são versáteis, mas não podem fazer coisas como dizer a você se um nome de usuário já foi registrado.



Voltar para parte superior


Levando a Validação Adiante

Às vezes você não consegue dizer se um dado é válido apenas olhando para ele. Por exemplo, o nome de usuário pode ter entre seis e 40 caracteres, mas você terá que verificar o banco de dados para saber se o nome de usuário já foi utilizado. O CakePHP fornece a capacidade de marcar manualmente um campo como inválido. Dê uma olhada no método beforeValidate na Listagem 23. Esse método seria incluído no modelo de Usuário.


Listagem 23. Validar o Nome do Usuário
                    
 function beforeValidate() {
    if (!$this->id) {
        if ($this->findCount(array('User.username'
		                => $this->data['User']['username'])) > 0) {
            $this->invalidate('username_unique');
            return false;
        }
    }
    return true;
}
                

Esse método diz ao modelo que antes de qualquer validação ser executada, é necessário fazer uma verificação para saber se os dados enviados possuem um ID. Se não houver um ID, procure outros usuários com o mesmo nome de usuário. Se houver algum, marque o campo de nome de usuário inválido e ignore qualquer validação restante (return false). Você pode tirar o máximo proveito disso alterando a linha de entrada do nome do usuário na visualização register.ctp para o seguinte.


Listagem 24. Nova Linha de Entrada de Nome de Usuário

 echo $form->input('username', array('after' => $form->error
       ('username_unique', 'The username is taken. Please try again.')));
	   

Isso diz à visualização de registro o que fazer quando encontrar mensagens de erro chamadas 'username_unique' que você designou no método beforeValidate.

Salve seus arquivos e tente novamente. Acesse http://localhost/user/knownusers para obter uma lista de usuários existentes. Em seguida, acesse http://localhost/user/register e tente criar um com o mesmo nome de usuário. Você deverá ver o seguinte.


Figura 12. Validação de Dados com Êxito
Validação de Dados com Êxito

Uma boa validação de dados é uma etapa importante na criação de qualquer aplicativo seguro. Conforme você constrói o aplicativo Tor, procure oportunidades para melhorar a validação de dados. Não tenha medo de inserir mais validação de dados do que a demonstrada neste tutorial. Nunca acredite que seus usuários estão enviando os dados que você pediu. Valide tudo. O CakePHP facilita isso.



Voltar para parte superior



Ir para a página anteriorPágina 5 de 11 Ir para a próxima página