Conferência Internacional de CMS – CMS Brasil

O CMS Brasil, evento realizado pelo iMasters e promovido pela Fábrica Livre, acontece no dia 20 de junho de 2009, no Hotel Jaraguá Convention Center. a iniciativa trará ao Brasil alguns dos principais especialistas mundiais em CMS, dentre eles Matt Mullenweg, o criador do WordPress, compondo painéis e palestras únicas, com os líderes brasileiros do mercado, além de oficinas técnicas para desenvolvimento em WordPress, Joomla e Drupal.

o CMS Brasil 2009 será apresentado por Paulino Michelazzo e reunirá 500 desenvolvedores do Brasil inteiro, em um ambiente de conhecimento avançado, integração entre palestrantes e público, e um networking de alto nível entre profissionais brasileiros de CMS. serão 2 auditórios paralelos (técnico e corporativo), uma mini-feira e lounges exclusivos para networking.

Saiba mais: http://www.cmsbrasil2009.com/

Anúncios

Gerador de senha em PHP

Fonte: http://mrsantos76.wordpress.com/

Pessoal esse script originalmente não foi eu que escrevi, vi ele uma vez na web, sinceramente não lembro onde
apenas modifiquei ele pra atender minhas necessidades e acertei um detalhe que tinha no ultimo if…
segue o cara…


///////////////////////////////////////
//
// Gerador de senha:
// uso: gerador_senha("L N L N L N")
// sendo que cada  L é uma letra
// e cada N é um numero
// nessa caso teriamos algo como k3j4j5
//
///////////////////////////////////////
function gerador_senha($tipo="L L N N")
{
    $tipo = explode(' ', $tipo);
    $padrao_letras = 'a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|x|w|y|z';
    $padrao_numeros = '0|1|2|3|4|5|6|7|8|9';
    $array_letras = explode('|', $padrao_letras);
    $array_numeros = explode('|', $padrao_numeros);
    $senha = "";
    for ($i=0; $i < count($tipo); $i++)
   {
        if ($tipo[$i] == ‘L’)
       {
             $senha .= $array_letras[array_rand($array_letras,1)];
        }
        else
       {
           $senha .= $array_numeros[array_rand($array_numeros,1)];
       }
    }
     return $senha;
}

Arquitetura MVC em PHP

Olá Pessoal,

Bem, hoje neste primeiro artigo falaremos sobre um assunto que ainda falta na maioria dos programadores PHP, eu mesmo já passei pela situação, não por querer, mas acredito que por falta de informação e por falta de procura por parte de nós.

Uma coisa que percebo em muitos programadores PHP é a falta de preocupação quanto a questões de padrões e organização de código, esses quesitos são essencias para uma aplicação sólida e com grande escalabilidade (facilidade de expansão). Acredito que isso se deve ao fato de o PHP ser uma linguagem muito “livre” que permite que os programadores não se preocupem com questões que um programador Java já tem no sangue, por exemplo.

Enfim, sem mais ladainhas, falaremos hoje sobre a arquitetura MVC. Este artigo terá uma visão mais conceitual do que prática, contudo tentarei exemplificar os fatos com alguns códigos e algumas indicações. Gostaria de acrescentar que se faz por necessário um conhecimento, mesmo que básico, de OO.

O conceito MVC (Model View Controller) na tradução é: Modelo, Visão e Controle.

Alguns devem estar se perguntando: Mas que diabos é Modelo, Visão e Controle?

Vamos lá…

Visão: É a camada de visualização da sua aplicação, onde ela apenas apresenta o que foi obtido através do controle. Eu diria que seria que é o que chega ao usuário final, a parte visual, de interface. A visão não deve ter nenhuma lógica de código, apenas a exibição dos dados.

Controle: É onde serão processadas todas as requisições feitas através da interface (Visão). O controle também acessa o Modelo afim de obter determinadas informações. Toda lógica da aplicação (validações, atribuições, etc) é feita no Controle. Eu diria que o controlle é o gerenciador da sua aplicação.

Modelo: É o modelo da sua aplicação, onde são definidos propriedades e atributos dos seus personagens. Na maioria dos casos existe ainda uma camada de persistência dos dados (DAO usa isso, falaremos sobre DAO nos próximos artigos), mas excepcionalmente neste artigo a nossa persistência será feita no Modelo.

Após explicado quem é quem nesse tal de MVC, vamos através de exemplos práticos ilustrar algumas situações.

Imagem o seguinte cenário: Uma aplicação que deva fazer a inserção, edição, remoção e listagem de usuários.

Algo bem simples, mas que servirã para exemplificar como poderíamos usar o MVC.

Então vamos a a nossa camada de visualização (View) para listagem de usuários:

View.php

<?php require_once("Controller.php"); ?>

<?php $c = new Controller();   ?><h3>Listagem de Usuários</h3>

<br><br>

<table cellspacing="0" cellpadding="0" border="0">

    <tr>

      <td width="100">ID</td>

      <td width="200">Nome</td>

      <td width="200">sobrenome</td>

      <td width="200">Email</td>

    </tr>

<?php

for ($i = 0; $i < count($c->users); $i++) {

?>

<tr>

      <td width="100"><?php echo $c->users[$i]->id;?></td>

      <td width="200"><?php echo $c->users[$i]->name;?></td>

      <td width="200"><?php echo $c->users[$i]->lastname;?></td>

      <td width="200"><?php echo $c->users[$i]->email;?></td>

</tr>

<?php

}

?>

</table>

Agora vamos para a nossa classe de controle. A mesma tera apenas o trabalho de carregar os usuários para a nossa classe de visualização através do nosso modelo de usuários.

Controller.php

<?php

require_once("UsersModel.php");

require_once("ConnectDB.php");Class Controller

{

 var $users;

function Controller ($action = null) {

 	if (empty($action)) {

    		$this->users = new Users();

 		$this->users = $this->users->loadAll();

    		}

   		}

}

?>

Agora vamos a nossa classe Modelo, teremos um modelo de usuários (personagem em questão). Poderíamos ter um modelo de carros, aviões, animais, etc.

UsersModel.php

<?php

Class Users {

  var $id;

  var $name;

  var $lastname;

  var $email;function getId () {

    return $this->id;

  }

function setId ($id) {

    $this->id = $id;

  }

function getName () {

    return $this->name;

  }

function setName ($name) {

    $this->name = $name;

  }

function getLastname () {

    return $this->lastname;

  }

function setLastname ($lastname) {

    $this->lastname = $lastname;

  }

function getEmail () {

    return $this->email;

  }

function setEmail ($email) {

    $this->email = $email;

  }

function loadAll () {

   $query = "SELECT *

 	  	      FROM users

 	 	        ORDER BY name ASC";

   $result = pg_query($query);

while ($array = pg_fetch_array($result)) {

 		$user = new Users();

 	  $user->setId($array['uid']);

 	  $user->setName($array['name']);

 	  $user->setLastname($array['lastname']);

 	  $user->setEmail($array['mail']);

 	  $userArr[] = $user;

   }

return $userArr;

  }

}

?>

Bem, como vocês viram, o que a metodologia MVC sugere é justamente organização, onde camada fica responsável pelo que ela realmente deve fazer.

No próximo artigo, tratarei a inserção de usuários usando estes mesmos controles e modelos.

Aproveitando também para indicar alguns links:

MVC (Wikipedia) – http://pt.wikipedia.org/wiki/MVC
Code Igniter (Excelente framework MVC/PHP) – http://www.codeigniter.com

Espera que tenham gostado, caso tenha dúvidas, entre em contato

Autor:

Marcus Cavalcanti

Professional PHP que atua no desenvolvimento avançado de aplicações de web há 5 anos. Atualmente também trabalhando com Java na plataforma JEE.

Tutorial de instalação do Apache/PHP em Windows

por Davi Shibayama

1. Introdução
Este breve tutorial tem por finalidade mostrar os passos para instalação e configuração do servidor Web Apache e da linguagem PHP em ambientes Windows 95/98/ME/XP, para desenvolvimento local. A maior parte dos procedimentos apresentados aqui são válidos também para sistemas Windows NT/2000, sendo que a única diferença está na maneira como o Apache é inicializado.
Muitos dos detalhes sobre as configurações destas duas ferramentas foram, propositalmente, omitidos, a fim de facilitar a compreensão.
É importante lembrar que, apesar do PHP/Apache executarem de maneira satisfatória em ambientes Windows, é recomendável que esta plataforma seja usada apenas para desenvolvimento, simulando o ambiente Unix/Linux original onde essas ferramentas devem realmente residir.2. Apache

2.1. Obtendo o Apache
O arquivo de instalação do Apache para Windows está disponível em três formatos: .ZIP, .EXE e .MSI. Trabalharemos aqui com este último, que está no formato de pacote do Windows Installer. Primeiramente, efetue o download do arquivo de instalação do Apache no seguinte endereço:

http://www.apache.org/dist/httpd/binaries/win32
.

Baixe o arquivo com extensão .msi. O arquivo deverá estar com o seguinte nome: apache_x.x.xx-win32-x86.msi, onde x.x.xx é a versão do software. Note que este arquivo é do tipo .msi (Microsoft Installer).
É recomendável baixar o arquivo de instalação neste formato pois ele, além de ser menor, é mais fácil de instalar e configurar. Atualmente (Abr/2002), a última versão do servidor Apache disponível no formato .msi é a 1.3.24. Para maiores informações sobre os arquivos de instalação do Apache, consulte a página de download citada acima.

Atenção usuários do Windows95!
Os usuários do Windows95 precisam primeiro baixar a atualização do Winsock para Windows, caso contrário, o Apache não funcionará. Esta atualização poderá ser obtida a partir do site da Microsoft, no seguinte endereço:

http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe

2.2. Instalando o Apache
Para efetuar a instalação a partir deste tipo de arquivo .msi, você deverá ter o utilitário Microsoft Windows Installer instalado no seu sistema. Os usuários do Windows2000, WindowsME e WindowsXP já possuem este utilitário instalado. Os usuário de outras versões do Windows deverão baixá-lo a partir do site da Microsoft, nos seguintes links:

  • Windows Installer v1.10 para Windows NT 4.0
  • Windows Installer v1.10 para Windows 95 e 98Após ter instalado o utilitário Microsoft Windows Installer, clique duas vezes no arquivo de instalação do Apache. Uma tela como esta deverá aparecer:


    Prossiga clicando no botão “Next”, aceitando os termos da licença de uso e, na tela de Informações do Servidor (“Server Information”), onde é solicitado “Network Domain“, “Server Name” e “Administrator’s Email Address“, informe, respectivamente: “localdomain“, “localhost” e o seu endereço de e-mail. Deixe também selecionado a opção “Run as a service for All users“, como indicado abaixo:


    Prossiga selecionando a instalação completa (“Complete”) e finalize a instalação.

    2.3. Iniciando e parando o Apache (somente em Windows95/98/ME/XP)
    Para INICIAR o servidor Web Apache, vá no botão Iniciar->Programas->Apache HTTP Server e clique em Start Apache in Console. Uma janela como esta deverá aparecer, indicando que o Apache está em execução:


    Para PARAR o Apache, não é aconselhável que se feche esta janela diretamente. Ao invés disso, vá em Iniciar->Programas->Apache HTTP Server e clique em Stop Apache. Isso dará inicio ao processo de shutdown do servidor Web, o que fará com que a janela acima se feche.

    Atenção usuários do Windows NT/2000!
    O Apache é instalado como um serviço em sistemas Windows NT e 2000 e, por isso, os procedimentos descritos acima, para iniciar e parar o Apache, NÃO se aplicam a essas plataformas. Use o gerenciador de serviços do Windows NT/2000, localizado no painel de controle, para controlar a execução do Apache.

    2.4. Testando a instalação do Apache
    Para testar a instalação, primeiramente, certifique-se de que o Apache esteja em execução. Abra o seu navegador favorito e digite o seguinte endereço: http://localhost. Este é o endereço do seu servidor web local.
    Uma página como esta abaixo deverá aparecer, indicando que você instalou e configurou corretamente o servidor Web Apache em seu sistema.

    IMPORTANTE: Se você não tiver alterado a pasta padrão de instalação do Apache, a pasta raiz do seu servidor web se encontra no seguinte caminho no seu disco:

    C:\Arquivos de programas\Apache Group\Apache\htdocs

    É nesta pasta que você deve colocar todos os arquivos que serão acessados através do seu servidor Web local, incluindo páginas HTML, scripts em PHP, arquivos de imagens, etc.

    3. PHP

    3.1. Obtendo o PHP
    Efetue o download do pacote com os arquivos do PHP para Windows, no seguinte endereço:

    http://www.php.net/downloads.php

    Baixe o arquivo no formato .ZIP, o qual já contém todas as extensões da linguagem. Atualmente (Abr/2002), a versão mais recente do PHP disponível para Windows é a 4.1.2 e o tamanho do seu pacote .ZIP está em torno de 5MB. Este arquivo zipado deverá ter o seguinte nome: php-x.x.x-Win32.zip, onde x.x.x é a versão da linguagem.
    Descompacte este pacote para uma pasta qualquer no seu disco. Vamos considerar que a pasta de destino dos arquivos seja C:\PHP.
    Após a descompactação, a estrutura de diretórios do PHP deve ficar como indicado na figura abaixo:

    3.2. Configurando o PHP
    Copie o arquivo php.ini-dist, que se encontra na pasta C:\PHP, para a pasta do Windows (geralmente C:\Windows). Renomeie-o para php.ini e em seguida abra-o. Localize o seguinte texto dentro deste arquivo: “extension_dir” e altere o valor desta entrada para o nome da pasta com os arquivos das extensões do PHP, que no nosso caso é “c:\php\extensions”. Após a alteração, esta seção do arquivo deverá parecer como a seguir:

    Salve e feche este arquivo.
    Copie também o arquivo php4ts.dll, que se encontra na pasta C:\PHP, para a pasta C:\Windows\System, no caso de Windows95/98/ME/XP, ou para a pasta C:\WINNT\System32, no caso de WindowsNT/2000.

    3.3. Configurando o Apache para trabalhar com o PHP
    Para que o servidor Web Apache possa reconhecer o PHP e redirecionar as páginas escritas nesta linguagem para o seu interpretador, precisaremos adicionar algumas configurações no arquivo de configuração do Apache, o httpd.conf, que está localizado na pasta \conf deste servidor Web. Se você não tiver alterado a localização padrão dos arquivos do servidor Web Apache durante a instalação, o caminho completo para este arquivo é o seguinte:

    C:\Arquivos de programas\Apache Group\Apache\conf\httpd.conf

    Adicione as seguintes linhas NO FINAL deste arquivo:

    AddType application/x-httpd-php .php
    LoadModule php4_module c:/php/sapi/php4apache.dll

    Salve este arquivo e, em seguida, pare e re-inicie o Apache. Na janela do Apache, deverá aparecer uma string indicando que o PHP foi carregado juntamente com o servidor Web, como indicado abaixo:


    Em plataformas Windows NT/2000, vá para a janela do gerenciador de serviços e pare e re-inicie o serviço do Apache. Nesta janela, no item correspondente à descrição do serviço do Apache, deverá ser exibido uma descrição semelhante a da indicada na figura acima.

    3.4. Testando a instalação do PHP
    Para testar a instalação do PHP, crie um arquivo qualquer com extensão .php (info.php, por exemplo) na pasta base do seu servidor Web Apache (htdocs) e, dentro dele digite o seguinte código:

    <? phpinfo(); ?>

    Salve-o e em seguida acesse-o através do servidor Web local, digitando o seguinte endereco no seu navegador (certifique-se de que o servidor Apache esteja em execução):

    http://localhost/info.php

    Uma tela com informações sobre a configuração do PHP deverá ser exibida, como indicado abaixo:


    Feito isto, a instalação e configuração básica do Apache e do PHP no Windows terá sido finalizada.

    4. Considerações Finais

    É extremamente aconselhável a leitura da sessão do manual do PHP que trata sobre a instalação e configuração, em:

    http://www.php.net/manual/en/installation.php

    Lá poderemos encontrar detalhes importantes, não citados aqui, acerca desse tema, não só em ambientes Windows, mas também em Unix, Linux, etc.
    Maiores informações poderão ser encontradas também nos sites oficiais destas ferramentas:

  • Apachehttp://httpd.apache.org/
  • PHPhttp://www.php.net/
  • Deixe o seu código em PHP mais seguro com essas dicas…

    1. Evite colocar seu arquivo de conexão com banco de dados no mesmo diretório das suas páginas ou no diretório usado para includes. O melhor a fazer é colocá-lo em algum diretório fora da raiz do site.

    2. Desligue no servidor web a configuração que permite a listagem dos arquivos presentes nos diretórios que não tem um index.php.

    3. Evite usar o nome includes para o diretório onde você colocará esse tipo de arquivo.

    4. No diretório que você usar para colocar seus arquivos de include, sempre coloque um arquivo index.htm e um index.php em branco. Isso evitará que o servidor liste o conteúdo desse diretório caso esteja com a configuração para listagens habilitada.

    5. Jamais use a extensão .inc para seus arquivos de include. Isso pode fazer com que o servidor web mostre dados importantes contidos nesses arquivos. Use sempre a extensão .php. Dessa forma o arquivo sempre será processado antes de ser entregue para os usuários.

    6. Desligue o error_reporting no servidor de produção. Erros em scripts PHP normalmente exibem a localização física dos arquivos no servidor ou mostram as consultas inteiras que estão sendo usadas para acessar o banco de dados, por exemplo. Com o error_reporting desligado, essas informações não serão mostradas.

    7. Ao criar uma área de administração do site, evite usar nomes óbvios como admin.

    8. Ainda na mesma área administrativa, faça configurações que obriguem os usuários a mudar de senha freqüentemente e que não aceite senhas muito simples. Evite também a criação de usuários padrão como: admin, administrador, admintrator, root.

    9. Em formulários que enviam dados diretamente para o banco, tomar cuidado com SQL Injection. Para resolver isso, capture esses dados e trate-os com addslashes.

    10. Em sistemas dinâmicos, evitar fazer scripts que apagam dados do banco. Costume usar status para os registros e depois construa um script coletor que irá tratar esses dados que deveriam ser apagados.

    11. Não esqueça que é possível configurar o nível de permissão do usuário que será usado para acessar o banco de dados. Se seu site apenas faz consultas. Coloque no seu arquivo de conexão um usuário que só possa fazer SELECT no banco.

    12. No php.ini, que é o arquivo de configuração do PHP, use o parâmetro disable_functions para desabilitar funções que podem ser perigosas como: exec(), eval(), readfile(), shell_exec(), system(), file(), fopen(), popen() entre outras.

    13. Ainda no php.ini, habilite o safe_mode.

    14. Sempre desabilitar o usuário root padrão do MySQL, que tem senha em branco.

    15. Se for usar algum aplicativo para blog, chat, wiki, etc. Não esqueça de remover o arquivo de instalação do diretório do aplicativo.

    Fonte: IDG NOW!