Mostrando postagens com marcador ZEND. Mostrar todas as postagens
Mostrando postagens com marcador ZEND. Mostrar todas as postagens

segunda-feira, 1 de dezembro de 2008

Zend - Início

Olá pessoal, esse é o blog que a partir de hoje pretendo começar a postar dicas, tutoriais, novidades, etc.

Não terei uma periodicidade para postar, vou colocando aqui conteúdo conforme for aparecendo assuntos!

Programo em PHP/MySQL há 6 anos, tenho experiência com Delphi 7, SQL Server 2000, Java..


Hoje, venho dizer um pouco sobre o framework que estou, vamos dizer, “vidrado”, o framework da Zend (empresa que hoje mantém as versões do PHP), é um fw [framework] muito bem escrito, cheio de recursos, desde manipulação com banco de dados até criação de rss e web services!


Não sou nenhum profissional ainda na ferramenta, porém já estou desenvolvendo um sistema grande com ele.

Vamos ao que interessa: Como começar!


Para começar temos alguns requisitos minimos:


- PHP 5; [download aqui] [atualmente na versão 5.2.6]

- Apache com mod_rewrite habilitado ou qualquer outro que tenha reescrita de url; [vou postar um tutorial de como habilitar]

- O Zend; [download aqui] [atualmente na versao 1.6.1, recomento a versão full]

- Conhecimento básico da linguagem [PHP];


- Desejável algum conhecimento com orientação a objetos;

- Vontade de aprender.


Depois disso vamos partir para a configuração do Zend, estrutura de pastas, bootstrap, etc…


Primeiramente baixe o Zend e descompacte-o em qualquer lugar do seu micro, nela estará contido varios diretórios, demos, tests, library.. para nós apenas interessa a pasta library, copie essa pasta para a raiz do seu servidor, no meu caso “public_html/”, alguns servidores “www/”, “htdocs”, tem algumas variações..


Nossa estrutura de arquivos deve ficar assim:


Estrutura de pastas

Estrutura de pastas


Vou explicar, a pasta application é subdividida em 3 pastas, sendo elas Controllers, Views e Models, perceberam? MVC, cada um trabalha com uma parte da aplicação:


M - Models: Onde você criará as classes para manipular o banco de dados;

V - Views: Aqui é onde ficará a parte visual, os templates das páginas (vocês entenderão com o próximos tutoriais);

C - Controllers: Aqui fica toda a manipulação dos dados, vindos ou não do usuário, validações, etc. É onde você cria a lógica e tal.


O ZF (Zend Frameworks) trabalha com url limpas (www.site.com/artigos/php/id/2), e tudo passa pelo arquivo index.php [nosso bootstrap], o conteúdo dele é extenso, então é só clicar aqui e pegar o conteúdo, o arquivo está totalmente comentado, qualquer dúvida futura só postar..


Porém, para usarmos (desfrutarmos) das url limpas temos que ter alguns arquivos .htaccess e certas pastas, vou postar o local onde devem ficar e o conteúdo de cada uma delas, esses arquivos serão responsaveis tanto para a utilização das url limpas quanto para segurança de algumas pastas…


Local: /zf-basico1/.htaccess [raiz ok?]

Conteúdo:



RewriteEngine on

RewriteRule .* index.php

php_flag magic_quotes_gpc off

php_flag register_globals off

Explicação: Primeiro nos certificamos que está habilitado a reescrita de url, logo após dizemos que tudo deverá passar pelo index.php “para saber oque fazer”, e nas duas últimas linhas nos certificamos que magic_quotes e register_global estão desabilitadoa, se não estiverem disabilita-os.


Local: /zf-basico1/public/.access

Conteúdo:


RewriteEngine off

Explicação: Desabilitamos a reescrita de url para essa pasta.



Local: /zf-basico1/application/.access

Conteúdo:


deny from all

Explicação: Aqui nós bloqueamos qualquer tentativa de acesso às pastas onde ficará nossa aplicação e arquivos de configuração e acesso ao banco de dados e etc.. não queremos ninguém bisbilhotando não é?


Porém depois de tudo isso se você for acessar a index do sistema dará uma exception enooorme aí, correto?


Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (index)’…..

Ela quer dizer oquê? Fiz alguma coisa errada?

Não, isso quer dizer apenas que a aplicação nao possui um Controlador para o index.


Mas como eu crio esse negócio de controlador?


Bem, vamos criá-lo agora. Crie um arquivo chamado IndexController dentro da pasta “./application/controllers/” com o seguinte conteúdo:


<?php

class IndexController extends Zend_Controller_Action

{

public function indexAction()

{

$this->view->boasvindas = “Bem-vindo ao Zend!”;

}


}

?>

Tentem acessar a index novamente, dará outra exception enoorme mais ou menos assim:


Fatal error: Uncaught exception ‘Zend_View_Exception’ with message ’script ‘index/index.phtml’…

Essa quer dizer que a aplicação não conseguiu encontrar um arquivo de template para a index, lembra que eu disse sobre o MVC, tudo separado, independente e tal? Então, para cada action você terá um template (arquivos .phtml) que exibirá os dados que você manipular nos controllers.. Complicado no começo mas com o passar dos tutoriais você entenderá!

Ok, para criar um index.phtml você o deve criar dentro da pasta “./application/views/scripts” uma pasta chamada.. Adivinha… chamada index!

index.phtml


<?php

echo $this->boasvindas;


Acessando o index você receberá uma mensagem: “Bem-vindo ao Zend!”


Galera, estou exausto, escrevi pra caramba! Qualquer dúvida comentem que eu farei o possível para responder!


P.S.: Tentem colocar no link www.seu-site.com/zf-basico1/index/index/ irá cair na index, note que não existe uma pasta index e outra index dentro da raiz do site!

Aguardem novos tutoriais..


Espero que tenham gostado!

Até a próxima.

quarta-feira, 26 de novembro de 2008

Zend Framework

Se você já é um programador PHP e já passou por diversas situações em que você sempre teve que duplicar seus códigos, cada projeto um padrão diferente, abstrações e classes diferentes… ou se você já tem uma noção de PHP e deseja profissionalizar-se, sem dúvida, utilizar um Framework é uma ótima opção.

Segue abaixo 10 motivos que, em nossa opinião, fazem valer a pena utilizar o Zend Framework:

* Utilização de uma arquitetura muito bem feita
* Possibilidade de utilização em pequenas e grandes aplicações
* É um framework seguro
* Possui diversas APIs prontas para uso (Com duas linhas você consegue fazer todo o tratamento da leitura de uma Feed RSS)
* Possui nativamente, classes para Cache
* Utilização de multiplos banco de dados
* Na maioria das vezes conseguimos desenvolver toda uma aplicação sem digitar um: Select * from tabela.
* Possui uma documentação muito bem feita em framework.zend.com
* Comunidade super ativa
* Funciona!

Em nosso blog você poderá encontrar muitas referências sobre o ZF, clicando aqui.

No site da School of Net, temos um treinamento específico sobre ZF, totalmente Online e de alta qualidade.

Gostaríamos que colocassem, como comentário, suas principais dúvidas, anseios sobre esse framework para que possamos sempre postar algo útil para você!

Fique na liberdade.

terça-feira, 25 de novembro de 2008

As 20 dicas sobre segurança da Zend sobre programação em PHP

Este post é um resumo das 20 dicas que a Zend publicou no DevZone sobre segurança em desenvolvimento php.


Dica 1 - Tenha sempre a última versão do PHP instalada.

Dica 2 - Por padrão o php deixa ativado a exibição de erros na execução dos scripts. Por medida de segurança é bom desativá-los para que nenhuma informação vaze à alguma pessoa.

Dica 3 - Se você puder tenha instalado o PHPSecInfo que checa suas configurações em busca de problemas de segurança. Existe também uma boa ferramente o Chorizo aonde você escaneia seus hosts em busca de vulnerabilidades.

Dica 4 - Não dê nomes comuns a pastas e arquivos com informações nocivas. Cuide as permissões e olhe os logs de acesso para saber se não esta havendo algum ataque. Pelo menos dificulta um possível ataque.

Dica 5 - Nunca confie no usuário . NUNCA ... N U N C A! Filtre as entradas de dados e escape as saídas.

Dica 6 - Quando trabalhar com números em querys SQL use filter_var() e casts como nesses exemplos:

$myId = filter_var($_GET['id'],FILTER_VALIDATE_INT);
$sql = 'SELECT * FROM table WHERE id = '.$myId;

E...

$myId = filter_var($_GET['id'],FILTER_VALIDATE_INT );
$sql = 'SELECT * FROM table WHERE id = '.(int)$myId;


Dica 7 - Sempre que puder use o session_regenerate_id()

Dica 8 - Parecida com a Dica 5 - Filtre e Valide dados do usuário.

Dica 9 - Separe os arquivos mais sencíveis como o gerenciador do banco de dados, mantendo eles fora da pasta do web server, fazendo eles inacessíveis a usuários que vêm pelo servidor web.
Exemplo:

/phpinc
/includes
/htdocs
/images
/js


Dica 10 - Quando usar a função mail(), filtre e valide para evitar uma injeção de códigos nos headers.

Dica 11 - Mantenha um nivel de usuários muito bem projetado, não permitindo que ninguém veja nada mais do que lhe é permitido. Em muitos frameworks isso é feito já, considere estudar um.

Dica 12 - Pense com cuidado antes de usar a função eval(), mesmo filtrando e validando os dados, vai que descobrem algum jeito de burlar e fazer um spoofing no servidor.

Dica 13 - Mesmo que a dica 3.

Dica 14 - Cuidado com o que você grava dentro de um cookie. Retrinja ao máximo. Pessoas podem conseguir ver esses dados.

Dica 15 - Sabe aquele arquivo temporário que você criou para testar alguma funcionalidade ? Então lembre-se de tirá-lo depois.

Dica 16 - Escolha um framework que está sempre sendo atualizado e tenha a certeza de atualizar ele quando sair a nova versão.

Dica 17 - Na dica 17 eles dão um bom pdf para ser lido http://shiflett.org/php-security.pdf sobre segurança em projetos. Considere ler ele.

Dica 18 - Quando você permitir o upload de arquivos para o servidor, faça com filtros e validações, não permita o upload de arquivos .php, .htaccess entre outros. Uma informação muito boa dada nessa dica é a Fileinfo.

Dica 19 - A dica 19 fala mais especificamente da segurança do seu sistema operacional. É bom dar uma lida.

Dica 20 - Essa dica é ótima e todos deveriam seguir (se todos nós pudessemos comprar livros como esses, que sao caros!). A dica se resumi em ler livros sobre segurança aonde você encontra varias dicas a mais.