Arquivo do Autor para djalmaaraujo

16
Nov
09

Plugin jQuery limitInput – limitador de caracteres inputs

Opa pessoa, esse post é uma rapidinha e não necessita de muitas explicações, pois no site do plugin tem tudo.

Desenvolvi um plugin pro jQuery para utilizar como limitador de caracteres para inputs e textares com algumas opções personalizáveis.

URL do plugin: http://web.djalmaaraujo.com.br/projects/jquery/jquerylimitinput/
Reportem bugs e tirem dúvidas, valeu!

31
Ago
09

Codeigniter – Série de tutoriais – Biblioteca AUTH

Olá cambada. Continuando nosssa série, agora com um post curtinho, mas muito útil. Vamos falar de uma biblioteca bem simples que desenvolvi para me auxiliar na captura de informações do usuário logado. Nós utilizamos a mesma nos posts passados, e eu recebi algumas sugestões através da lista do Codeigniter no Brasil, para que eu explica-se mais a bilioteca.

AUTH

O nome eu dei para ficar referente a autenticação, como muitos devem perceber. A biblioteca possui as seguintes funcionalidades, que eu prefiro chamar de FACILIDADES ;) .

  • Checar se o usuário está logado. Método: check_logged()
  • Trazer informações do usuário logado. Método: authInfo()

Mas não se resume a isso, pois os parâmetros passados nos métodos, podem facilitar ainda mais. Vamos destrinchá-los.

check_logged($return = ”,$controller = ‘login’)

- Podemos observar que a função possui um parâmetro a ser passado opcionalmente. Este parâmetro é responsável pelo tipo de retorno que a função nos dará.
Se nenhum parâmetro for passado a função check_logged(), então a biblioteca fará a verificação seguinte:

Usuário Logado? Retorno: TRUE
Usuário não Logado? Página recarregada para o controller escolhido como segundo parâmetro.

Se o parâmetro for passado como TRUE, teremos:

Usuário Logado? Retorno: TRUE
Usuário não Logado? Retorno: FALSE

Se você pensar um pouco, verá que isso tem uma utilidade gigante, quando você quer por exemplo, restringir acesso a certos controllers da sua aplicação, verificando se o usuário está logado ou não, apenas passando a seguinte linha no construtor:

$this->auth->check_logged(); // A biblioteca se encarrega de tirar o usuário do controller e protege o acesso.

authInfo()

- Nesta função, nós podemos trazer as informações do usuário autenticado no sistema. Caso o mesmo não esteja logado, a função retornará false. Vemos uma das utilidades para esta função, no caso de obter informações para mostrar “bem-vindos”, “tempo de login”, etc.

Código

Agora que já descrevi as funcionalidade/facilidades da biblioteca, vou postar o seu código abaixo:

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 4.3.2 or newer
 *
 * @package		CodeIgniter
 * @author		ExpressionEngine Dev Team
 * @copyright	Copyright (c) 2008, EllisLab, Inc.
 * @license		http://codeigniter.com/user_guide/license.html
 * @link		http://codeigniter.com
 * @since		Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * Auth Class
 *
 *
 *
 * @package		CodeIgniter
 * @subpackage	Libraries
 * @category	Login
 * @author		Djalma Araújo de Andrade
 * @link		http://web.djalmaaraujo.com.br/projects/codeigniter/lib/auth.txt
 */
class auth
{
    private $ci;
    private $user_login;

    function __construct()
    {
        $this->ci = &get_instance();
    }

    function check_logged($return = '', $controller = 'login')
    {

        $this->user_login = $this->ci->session->userdata('user_logged');

        if ($this->user_login['logged'] == 1) {
            return true;
        } else {
            if ((!empty($return)) && ($return == true)) {
                return false;
            } else {
                redirect('/' . $controller . '/', 'refresh');
            }
        }
    } //End logged

	function authInfo()
    {
        $this->user_login = $this->ci->session->userdata('user_logged');

        if ($this->user_login['logged'] == true) {
            return $this->user_login;
        } else {
            return false;
        }
    }
}

Bom, é isso, se você quiser aliar esta biblioteca com suas aplicações, ficarei feliz, mas o importante é estar passando o conhecimento de criar novas funcionalidades no codeigniter.

Por hoje é só.
That’s all Folks.

Djalma Araújo

30
Ago
09

Codeigniter – Série de tutoriais – Sistema de Login (Parte 2)

Continuando o sistema de login, agora vamos ao Model da aplicação juntamente ao formulário de login.

Model

No nosso model, teremos as funções de comunicação com o banco de dados, para retornar informações sobre o usuário.

Os métodos utilizados serão:

  • checkLogin()
  • logout()

Bom, sem mais delongas, vamos ao código:

class LoginModel extends Model
{

    private $users_table = 'user';
    private $username;
    private $password;

    function LoginModel()
    {
        parent::Model();
    }

    /**
     * Nesta função, receberemos o login e a senha do usuário para buscar no banco
     * de dados se o usuário é válido. Caso seja, é retornado o Objeto do usuário
     * como visto anteriormente no nosso controller.
     * Se não, é retornado 'false'.
     *
     * Vale ressaltar que estamos utilizando o componente de Active Record do
     * codeigniter, que facilita a manipulação do banco dedados, criando um
     * ambiente de abstração.
     **/
    function checkLogin($username, $password)
    {

        //Variáveis recebidas
        $this->username = $username;
        $this->password = $password;

        //Active Record (Vou separar para melhor entendimento.)
        $this->db->select('id, name, email, status, privileges')
        ->from($this->users_table)
        ->where('email', $this->username)
        ->where('password', md5($this->password));
        /**
         * Esta linha acima poderia ser em uma linha só:
         * $this->db->select('id, name, email, status, privileges')->from($this->users_table)->where('email', $this->username)->where('password', md5($this->password));
         *
         * Ou ainda assim:
         *
         *  $this->db->select('id, name, email, status, privileges');
            $this->db->from($this->users_table);
            $this->db->where('email', $this->username);
            $this->db->where('password', md5($this->password));
         *
         **/

        /**
         * Executamos a query no banco e armazenamos o resultado na variável query.
         * O resultado por default será retornado como objeto.
         **/
        $query = $this->db->get();

        //
        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return false;
        }
    }

    /**
     * Por fim, nossa função de logout, para 'desconectar' o usuário da sessão
     *
     **/
    function logout()
    {
        //Atribuimos a variável $user_logged o valor da sessão autenticada
        $user_logged = $this->session->userdata('user_logged');

        //Se não for vazio
        if ($user_logged != '') {

            //Retiramos, ou seja, limpamos a sessão para que o usuário seja desconectado.
            if ($this->session->unset_userdata('user_logged')) {
                return true;
            } else {
                return false;
            }

        } else {
            return false;
        }
    }
}

Bom, este foi o nosso Model.. agora iremos ao nosso formulário de login, nossa VIEW.

VIEW

<div id="login">
<h4>Autenticação no sistema</h4>
<form action="<?=DEFAULT_LINK?>login" name="frm-login" method="post">

 <fieldset>

 <legend>Formulário de Autenticação</legend>

 <label for="frm-login-user">Usuário</label>
 <input type="text" name="login" id="login" />

 <label for="frm-login-pass">Senha</label>
 <input type="password" name="password" id="password" />

 <input type="submit" name="frm-button" value="Autenticar" />

 </fieldset>

 </form></div>

Bom, então finalizamos nosso tutorial de Login. Lógico que dá para incrementar, algo como um “esqueci minha senha”, mas isso fica a cargo de vocês darem uma pensada e fazer por si próprio.

Uma dica é não copiar e sim digitar, pois isso fixa mais na mente, logo o aprendizado é mais rápido.

Abaixo vou deixar a tabela de login para vocês executarem o sisteminha e é isso aí.

SQL da tabela.

O próximo post da série será referente a biblioteca de autenticação que utilizamos aqui. Ela auxilia na recuperação de informações, bloqueio de controllers e algumas coisas mais.

Até a próxima.

That’s All Folks.

Djalma Araújo
www.djalmaaraujo.com.br




Twitter

Assinem meu feed

Assine também via e-mail

del.icio.us

My Flickr

Espaço relax

Coisas.

stuart little.

More Photos

Navegue