Uma situação bem inusitada que pode ocorrer durante o desenvolvimento de uma aplicação é precisar atrelar o seu sistema de login à uma página externa à aplicação.
Vou mostrar como pode-se fazer isso usando CakePHP.
No CakePHP nós temos o conceito de herança aplicado aos controllers. Neste caso, nosso controller de usuários herda da app_controller métodos e atributos. Quando se tem o sistema de login em CakePHP, deve-se habilitar o componente Auth. Vamos também fazer umas modificações em nosso método AppController::before_filter(). No final teremos algo como isso.
<?php
class AppController extends Controller {
var $components = array('Auth');
function beforeFilter(){
$this->Auth->userModel = 'Usuario'; # mudamos o padrao de User para Usuario
}
}
?>
Agora nosso arquivo usuarios_controller.php. Ele deve ter os métodos login() e logout() para funcionar corretamente com o components Auth. Neste caso, devemos apenas implementar algumas pequenas mudanças no método login() como mostrado abaixo:
<?php
class UsuariosController extends AppController {
var $name = 'Usuarios';
function login() {
$this->redirect('http://www.outro.dominio.com.br/pagina.html');
}
function logout() {
$this->redirect($this->Auth->logout());
}
}
?>
Por isso é hoje. Essa dica é muito quando sua aplicação fica em outra parte do domínio que vai passar o formulário de login.
Tags:
CakePHP,
Internet,
php,
programacao
Postado em CakePHP, Programação |
Sem Comentarios » | 25 de fevereiro de 2011
Pois é. Hoje meu servidor ficou fora do ar. O motivo foi o servidor de banco de dados que caiu, assim nenhum site que usasse banco de dados, estava travado. Não abria. Retomando essa discussão, e se o servidor tivesse crashado geral e tivesse perdido tudo? Já era, né? Não é bem assim.
Abaixo estou compartilhando o meu código de backup que criei há um tempo atrás.
Nele é possível montar o backup do banco de dados e mandar por e-mail.
No meu caso, o mesmo executa 1 vez por dia. Mas fica a seu critério ao rodar o cron.
<?php
// aumenta a memoria e importa o mailer
ini_set("memory_limit","64M");
require 'class.phpmailer.php';
// gera backup
$nome = '/tmp/' . date('Ymd-Hi') . '.sql';
exec("mysqldump -u usuario --password='senha' --all-databases > {$nome}");
exec("gzip $nome");
$nome .= ".gz";
$tamanho = number_format(filesize($nome) / 1048576, 0);
$data = date('d/m/Y');
$m = new PHPMailer();
$m->SetFrom('emaildofrom@dominio.com', 'Backup do BD');
$m->AddAddress('destinatario@dominio.com', 'Nome do Destinatario');
$m->AddAttachment($nome);
$m->Subject = 'Backup de Banco de Dados Diario '.$data;
$m->MsgHTML(nl2br("Backup dos Bancos de Dados. \n Dia: {$data} \n Tipo: ANEXO \n Tamanho: {$tamanho}MB."));
// envio backup
if ($m->Send()) {
unlink($filename);
}
?>
Então é isso.
Fica a dica e até mais. Qualquer dúvida, podem comentar aqui abaixo.
Tags:
banco de dados,
linux,
php,
programacao
Postado em Banco de Dados, PHP, Programação |
Sem Comentarios » | 05 de janeiro de 2011
Está aí um macetinho para quem gosta de enviar newsletter via PHP
// conecta ao banco
$start = int($_GET['start']);
$sql = mysql_query("SELECT * FROM emails ORDER BY id LIMIT 10, $start");
while($i<10)
{
// manda os emails
// aqui você pode usar a função mail() para enviar. consulte: http://br2.php.net/manual/en/function.mail.php
}
$start_new = $start + 10;
header("Location: arquivo.php?start=$start_new");
Tags:
linux,
php,
programacao,
Windows
Postado em Internet, Programação |
Sem Comentarios » | 30 de dezembro de 2010
Mais um problema do Coding Kata solucionado. Apesar deste problema estar no Beginner ++ ele é muito mais fácil que muitos do Beginner. Uma linha de código foi suficiente para resolvê-lo.
Veja o código abaixo e teste à vontade. Disponível no Git também.
import unittest
def ISBN(isbn):
"""
Autor: fzmaster
Data: 29/12/2010
Problema: Books for Mars
http://codingkata.org/katas/unit/mars-books
Calcular digito verificador do ISBN
"""
return (10-(3*(int(isbn[1]) + int(isbn[3]) + int(isbn[5]) + int(isbn[7]) + int(isbn[9]) + int(isbn[11])) + int(isbn[0]) + int(isbn[2]) + int(isbn[4]) + int(isbn[6]) + int(isbn[8]) + int(isbn[10])) % 10) % 10
class ISBNTestCase(unittest.TestCase):
def test_caso1(self):
assert ISBN('978030640615') == 7
def test_caso2(self):
assert ISBN('978857780013') == 1
def test_caso3(self):
assert ISBN('978857522247') == 8
def test_caso4(self):
assert ISBN('978857522212') == 6
if __name__ == '__main__':
unittest.main()
Tags:
códigos,
desenvolvimento,
programacao,
python,
tdd
Postado em Python, TDD |
Sem Comentarios » | 29 de dezembro de 2010
O Python não tem nativamente variáveis do tipo Enum.
Entretanto é possível instalar um módulo que pode solucionar este problema. Siga os passos abaixo:
- Instale o Python;
- Instale o SettupTools
- Baixe o Enum (versão atual: 0.4.4) e descompacte-o
- Abra o prompt e dentro do diretório do Enum digite:
- Linux: $ python setup.py install
- Windows: C:\diretorio\> python setup.py install
Pronto, você instalou o módulo corretamente.
Agora você pode testá-lo.
Abra outro prompt e digite:
$ python
>>> import enum
>>>
Se não subiu erros, a importação foi feita com sucesso.
Tags:
aula,
curso,
programacao,
python
Postado em Python |
1 Comentario » | 29 de dezembro de 2010