Skip to content

Instantly share code, notes, and snippets.

@jlamim
Last active April 16, 2016 01:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jlamim/644f5a0e259e86f19b306777485fcb60 to your computer and use it in GitHub Desktop.
Save jlamim/644f5a0e259e86f19b306777485fcb60 to your computer and use it in GitHub Desktop.
Controller Base - Tokens únicos com CodeIgniter
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Base extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model("Tokens_model");
}
/**
* Function Index
*
* Carrega a view da página principal
*
* @return (string)
*/
public function Index()
{
//lista 10 tokens gerados
$data['tokens'] = $this->Tokens_model->ListTokens(10);
$this->load->view('home',$data);
}
/**
* Function GenerateToken
*
* Gera o novo token e carrega a view com o token gerado
*
* @return (string)
*/
public function GenerateToken(){
//gera o token a partir de uma string randômica, fazendo uso da função hash(), nativa do PHP
$token = hash('ripemd160', self::GenerateRandomString());
//verifica se o token gerado é único, caso não seja, gera um novo
if($this->Tokens_model->IsUniqueToken($token)){
$data['token'] = $token;
$data['tokens'] = $this->Tokens_model->ListTokens(10);
$this->load->view('tokens',$data);
}
else
self::GenerateToken();
}
/**
* Function GenerateRandomString
*
* Gera uma string randômica que será utilizada como token
*
* @param (string) $length Quantidade de caracteres do token
* @return (string)
*/
private function GenerateRandomString($length = 20) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
//retorna o tamanho da string $characters
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
//seleciona uma posição da string $characters de forma randômica e concatena na variável $randomString
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
//retorna a string gerada
return $randomString;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment