<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>PHPSP.org.br &#187; Comunidade</title>
	<atom:link href="http://phpsp.org.br/category/comunidade/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpsp.org.br</link>
	<description>Grupo de Desenvolvedores de PHP de São Paulo</description>
	<lastBuildDate>Thu, 26 Jan 2012 16:08:17 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<copyright>2006-2009 </copyright>
	<managingEditor>admin@phpsp.org.br (PHPSP.org.br)</managingEditor>
	<webMaster>admin@phpsp.org.br (PHPSP.org.br)</webMaster>
	<category>php</category>
	<ttl>1440</ttl>
	<image>
		<url>http://phpsp.org.br/wp-content/uploads/2009/03/phpspcast-cover-art-144x144.gif</url>
		<title>PHPSP.org.br</title>
		<link>http://phpsp.org.br</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle>PHP à Paulista!</itunes:subtitle>
	<itunes:summary>Um podcast bem humorado sobre PHP e assuntos relacionados. Baseado no PHPSP, em cada episódio do Podcast são reunidos convidados novos para conversar sobre um assunto relacionado ao PHP de forma descontraida e informativa.</itunes:summary>
	<itunes:keywords>php, phpsp, brasil</itunes:keywords>
	<itunes:category text="Technology" />
	<itunes:category text="Technology">
		<itunes:category text="Software How-To" />
	</itunes:category>
	<itunes:category text="Technology">
		<itunes:category text="Podcasting" />
	</itunes:category>
	<itunes:author>PHPSP.org.br</itunes:author>
	<itunes:owner>
		<itunes:name>PHPSP.org.br</itunes:name>
		<itunes:email>admin@phpsp.org.br</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://phpsp.org.br/wp-content/uploads/2009/03/phpspcast-coverart-generic.png" />
		<item>
		<title>Desinformação na midia: PHP rotulado de vírus</title>
		<link>http://phpsp.org.br/2011/07/desinformacao-na-midia-php-rotulado-de-virus/</link>
		<comments>http://phpsp.org.br/2011/07/desinformacao-na-midia-php-rotulado-de-virus/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 20:12:47 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[erros da midia]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=1979</guid>
		<description><![CDATA[Jornal Hoje exibiu hoje uma matéria que rotula urls terminadas em .php como virus.  a reação da comunidade foi imediata, posts e manifestações surgiram logo em seguida e a hastag #phpvirus foi rapidamente colocada no Trending Topics do Twitter. Veja a história completa neste post e a matéria que causou toda reação aqui. O que você [...]]]></description>
			<content:encoded><![CDATA[<p>Jornal Hoje exibiu hoje uma matéria que rotula urls terminadas em .php como virus.  a reação da comunidade foi imediata, posts e manifestações surgiram logo em seguida e a hastag #phpvirus foi rapidamente colocada no Trending Topics do Twitter.</p>
<p>Veja a história completa neste <a href="http://blog.rafaeldohms.com.br/2011/07/29/desinformacao-na-midia-php-rotulado-como-virus/?lang=pt-br">post</a> e a matéria que causou toda reação <a href="http://g1.globo.com/jornal-hoje/noticia/2011/07/saiba-como-nao-cair-na-armadilha-de-mensagens-eletronicas-falsas.html">aqui</a>.</p>
<p><strong>O que você pode fazer?</strong></p>
<p>Entre neste <a href="http://www.peticaopublica.com.br/?pi=PHPJHOJE">abaixo assinado</a> que exige uma retratação da Rede Globo e deixe seu nome. Vamos unir a comunidade PHP e evitar esta desinformação e mancha do nosso trabalho.</p>
<div></div>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://0.gravatar.com/avatar/4c678b5f99c982a1acf01be4b37efb8d?s=100&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/rdohms/' title='Rafael Dohms'>Rafael Dohms</a></h3><p>Rafael Dohms é um Evangelista PHP e membro ativo da Comunidade PHP. Ele ajudou na fundação de dois Grupos de Usuários de PHP ao longo do tempo e hoje compatilha a coordenação do PHPSP. Desenvolvedor, gamer e apaixonado por código ele também é host do primeiro podcast de PHP do Brasil: PHPSPCast.

Atualmente ele trabalha na equipe SWAT do grupo MIH, uma equipe de experts que fornecem conhecimento técnico para o grupo além de trabalhar com P&amp;D buscando novos nichos da internet e tecnologia. Seu papel como Desenvolvedor Sênior é codar, treinar e auxiliar outras empresas e se divertir enquanto faz isso.</p><p><a href='http://www.rafaeldohms.com.br' title='Rafael Dohms'>Website</a> - <a href='http://www.twitter.com/rdohms' title='Rafael Dohmson Twitter'>Twitter</a> - <a href='http://phpsp.org.br/author/rdohms/' title='More posts by Rafael Dohms'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2011/07/desinformacao-na-midia-php-rotulado-de-virus/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Protegendo seu sistema contra ataques CSRF</title>
		<link>http://phpsp.org.br/2011/07/protegendo-seu-sistema-contra-ataques-csrf/</link>
		<comments>http://phpsp.org.br/2011/07/protegendo-seu-sistema-contra-ataques-csrf/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 13:16:05 +0000</pubDate>
		<dc:creator>Kinn Coelho Julião</dc:creator>
				<category><![CDATA[Artigos]]></category>
		<category><![CDATA[Artigos de Convidados]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=1833</guid>
		<description><![CDATA[Ataques CSRF ocorrem em várias aplicações web, eu gostaria de apresentar uma solução para este problema neste artigo, mas antes de mais nada aproveito para me apresentar, sou Kinn Coelho Juliao O que são ataques CSRF? CSRF é um ataque que força um usuário final à executar ações indesejadas em uma aplicação web em que ele(a) [...]]]></description>
			<content:encoded><![CDATA[<p>Ataques CSRF ocorrem em várias aplicações web, eu gostaria de apresentar uma solução para este problema neste artigo, mas antes de mais nada aproveito para me apresentar, sou <a href="http://www.linkedin.com/in/kinncj">Kinn Coelho Juliao</a></p>
<h2><strong>O que são ataques CSRF?</strong></h2>
<p><strong></strong>CSRF é um ataque que força um usuário final à executar ações indesejadas em uma aplicação web em que ele(a) está autenticado no momento. Com uma pequena ajuda da engenharia social (como enviar um link por e-mail ou chat), um atacante pode forçar os usuários de uma aplicação web para executar ações de escolha do atacante. Um CSRF  bem sucedido, pode comprometer os dados e funcionamento do usuário final caso o mesmo seja um usuário comum ao sistema. Se o usuário final for administrador, isso pode comprometer a aplicação Web inteira.<br />
<strong></strong></p>
<h2><strong>Exemplos de ataques</strong></h2>
<p><strong></strong>Como funciona o ataque? Há inúmeras maneiras em que um usuário final pode ser levado a carga de informações ou enviar informação para uma aplicação web. A fim de executar um ataque, devemos primeiro entender como gerar um pedido malicioso para a nossa vítima executar.</p>
<p>Vejamos o seguinte exemplo: Alice deseja transferir R$ 100,00 a João usando banco.com.br.  O pedido gerado por Alice será semelhante ao seguinte:</p>
<pre class="brush: plain; title: ; notranslate">
POST http://banco.com.br/transfer.do
HTTP/1.1.........Content-Length: 19;
acct=JOAO&amp;amount=100
</pre>
<p>No entanto, percebe que Maria da mesma aplicação web irá executar a mesma transferência usando parâmetros de URL da seguinte forma:</p>
<pre class="brush: plain; title: ; notranslate">
GET http://banco.com.br/transfer.do?acct=JOAO&amp;amount=100
HTTP/1.1
</pre>
<p>Maria decide agora para explorar esta vulnerabilidade de aplicações web usando Alice como sua vítima. Maria primeiro constrói a seguinte URL, que vai transferir R$ 100.000,00 da conta de Alice à sua conta:</p>
<pre class="brush: plain; title: ; notranslate">http://banco.com.br/transfer.do?acct=MARIA&amp;amount=100000</pre>
<p>Agora que seu pedido mal-intencionado é gerado, Maria  tem truque para apresentar o pedido. O método mais básico é o de enviar um e-mail HTML para Alice contendo o seguinte:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;a href=&quot;http://banco.com.br/transfer.do?acct=MARIA&amp;amount=100000&quot;&gt;
Veja minhas fotos do Orkut!
&lt;/a&gt;
</pre>
<p>Supondo que Alice esta autenticada com a aplicação, quando ela clica no link, a transferência de R$ 100.000 para a conta de Maria irá ocorrer.</p>
<p>No entanto, Maria percebe que se Alice clica no link, em seguida, Alice vai notar que a transferência ocorreu.</p>
<p>Por isso, Maria decide esconder o ataque em uma imagem de zero bytes:</p>
<pre class="brush: xml; title: ; notranslate">&lt;/pre&gt;
&lt;img src=&quot;http://banco.com.br/transfer.do?acct=MARIA&amp;amount=100000&quot; alt=&quot;&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; /&gt;
&lt;pre&gt;</pre>
<p>Se essa tag de imagem for incluída no e-mail, Alice só vê uma pequena caixa que indica que o navegador não pode processar a imagem. No entanto, o navegador continua a enviar a solicitação para banco.com.br sem qualquer indicação visual de que atransferência tenha ocorrido.</p>
<p>Este exemplo, pode ocorrer em qualquer aplicação que não possua tratamento no controle de formulários e/ou outros meios de entrada de dados.</p>
<p>Podemos ver um exemplo de como prevenir isto em outro exemplo abaixo:<br />
<strong></strong></p>
<h2><strong>O que fazer?</strong></h2>
<p><strong></strong>Ações em sites estão sempre associados com formulários &#8211; login, transferência de fundos ou postar um comentário no blog. Nossa solução para o problema de CSRF é gerar uma chave única quando o usuário visita a página com o formulário-lo. Vamos definir esta chave na $_SESSION, bem como um campo hidden no formulário. Quando o formulário for enviado, vamos verificar a chave armazenada na sessão e a chave enviada pelo formulário. Se eles são os mesmos então nós sabemos que o usuário submeteu nosso formulário. Se eles não são iguais (ou a $_SESSION está vazia), então sabemos que algo nocivo está acontecendo e nós podemos seguramente redirecionar o usuário (e não tomar nenhuma ação).</p>
<pre class="brush: php; title: ; notranslate">
session_start ();

 // Se o formulário foi enviado ..
 if (isset ($_POST['submit']))
 {  // Verificar os marcadores
     if ($_SESSION[&quot;csrfToken '] == $_POST[' csrfToken '])
     {
         echo &quot;form do bem&quot;;
     }   else   {
         echo &quot;Ops, solicitação não permitida&quot;; exit;
     }
 }   else  { // Gerar o token

     $Token = md5 (uniqid (rand (), true));

     // Definir o token como uma sessão
     $_SESSION['CsrfToken'] = $ token;

     // O nosso formulário com o campo oculto
     $ Form = '&lt;/pre&gt;
&lt;form action=&quot;&quot; method=&quot;POST&quot;&gt;  Conta: &lt;input type=&quot;text&quot; name=&quot;account&quot; /&gt;
   Valor: &lt;input type=&quot;text&quot; name=&quot;amount&quot; /&gt;
   &lt;input type=&quot;hidden&quot; name=&quot;csrfToken&quot; value=&quot;'.$token.'&quot; /&gt;   &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Enviar Bufunfa&quot; /&gt; &lt;/form&gt;
&lt;pre&gt;
 ';

     echo $form;
 }
</pre>
<p>Podemos acrescentar um nível adicional de segurança, certificando-se o usuário veio a partir da página que contém o formulário.</p>
<pre class="brush: php; title: ; notranslate">
// Antes da verificação CSRF
if (! $_SERVER['HTTP_REFERER'] == 'http://banco.com.br/formulario/transferencia/enviar.php)
{
    echo &quot;Solicitação mal formada&quot;;  exit;
}
</pre>
<p>Obrigado pela atenção espero ter ajudado.</p>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://1.gravatar.com/avatar/75eedc3e323654f396a318feea82d603?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/kinncj/' title='Kinn Coelho Julião'>Kinn Coelho Julião</a></h3><p>http://linkedin.com/in/kinncj</p><p><a href='http://instrutordephp.com.br' title='Kinn Coelho Julião'>Website</a> - <a href='kinncj' title='Kinn Coelho Juliãoon Twitter'>Twitter</a> - <a href='kinncj' title='Kinn Coelho Julião on Facebook'>Facebook</a> - <a href='http://phpsp.org.br/author/kinncj/' title='More posts by Kinn Coelho Julião'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2011/07/protegendo-seu-sistema-contra-ataques-csrf/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Parabéns a Comunidade</title>
		<link>http://phpsp.org.br/2011/03/parabens-a-comunidade/</link>
		<comments>http://phpsp.org.br/2011/03/parabens-a-comunidade/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 12:52:06 +0000</pubDate>
		<dc:creator>Fernando Camacho</dc:creator>
				<category><![CDATA[Comunidade]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=1515</guid>
		<description><![CDATA[Não quero aqui começar uma polêmica de qual linguagem é melhor, só deixar um relato e parabenizar a comunidade PHP. Trabalho com programação PHP a mais de 5 anos, comecei graças a comunidade PHP que é muito ativa, pois quando comecei a desenvolver, tive muita ajuda. Faço trabalhos para agências que por muitas vezes estão [...]]]></description>
			<content:encoded><![CDATA[<p>Não quero aqui começar uma polêmica de qual linguagem é melhor, só deixar um relato e parabenizar a comunidade PHP. Trabalho com programação PHP a mais de 5 anos, comecei graças a comunidade PHP que é muito ativa, pois quando comecei a desenvolver, tive muita ajuda.</p>
<p>Faço trabalhos para agências que por muitas vezes estão com seu departamento Web sobrecarregado ou simplesmente não tem, esta semana um cliente me procurou dizendo que tem um cliente que tem um cliente que está desenvolvendo um e-commerce para sua fábrica, porém só ficará pronto daqui a 5 meses, já achei estranho levar 5 meses para desenvolver um e-commerce, porém pensei comigo deve ser um grande portal.</p>
<p>Até ai tudo bem, mas até o início do portal o cliente precisa de um formulário para divulgar as suas revendas, ou seja um cadastro simples com nome, endereço e logotipo. Pensei comigo fácil meia duzia de linhas em PHP e tudo está pronto, disse ao meu cliente que se ele me entregasse o layout em 1 dia eu entregava a programação. Porém, o meu cliente me informou que tudo deveria ser desenvolvido em ASP.</p>
<p>Mas uma vez pensei e refleti, se em PHP com meia duzia de linhas eu consigo em ASP também não deve ser tão difícil, fui ao nosso banco de dados de informções (Google) hehehe, primeira pesquisa ASP upload de imagens, e por ai comecei minha pesquisa.</p>
<p>Entra num site, entra em outro, baixa um script, baixa outro, testa um, testa outro e nada. Vou ver como funciona, pesquisei novamente então já que os scripts não funcionavam e ninguém respondia, vou tentar descobrir como o ASP trata os POST&#8217;s de imagens e grava e o arquivo. Surpresa, nada funciona, sempre é necessário um componente. Testa aqui, testa ali e nada.</p>
<p>Só me restou a opção e cheguei a conclusão de que, realmente a Comunidade PHP está de parabéns, afinal é uma comunidade ativa onde sempre nos ajudamos, e por mais &#8220;porca&#8221; que seja a linguagem como tive que ouvir por diversas vezes, somos uma comunidade livre, sem depender de ninguém e que nos ajudamos mutuamente.</p>
<p>E por isto continuo dizendo PHP não é só uma linguagem é uma comunidade ativa.</p>
<p>Parabéns PHP, programadores PHP e comunidade ativa.</p>
<p>Só para terminar, não vou pegar o serviço, porque para pegar um script que não faço a mínima idéia de como funciona ou se vai continuar funcionando daqui a 5 meses, prefiro não fazer.﻿</p>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://1.gravatar.com/avatar/d52024e275764e6f8566b57f1192ee21?s=100&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/morpheuhp/' title='Fernando Camacho'>Fernando Camacho</a></h3><p></p><p><a href='http://www.fmsistemas.net' title='Fernando Camacho'>Website</a> - <a href='http://phpsp.org.br/author/morpheuhp/' title='More posts by Fernando Camacho'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2011/03/parabens-a-comunidade/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Autenticação e Criptografia de Senhas</title>
		<link>http://phpsp.org.br/2011/01/autenticacao-e-criptografia-de-senhas/</link>
		<comments>http://phpsp.org.br/2011/01/autenticacao-e-criptografia-de-senhas/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 18:47:02 +0000</pubDate>
		<dc:creator>Rubens Takiguti Ribeiro</dc:creator>
				<category><![CDATA[Artigos de Convidados]]></category>
		<category><![CDATA[Des-sobrinhação]]></category>
		<category><![CDATA[autenticação]]></category>
		<category><![CDATA[criptografia]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=1676</guid>
		<description><![CDATA[Este artigo apresenta algumas formas de criptografia de senhas em sistemas de informação baseados em PHP.]]></description>
			<content:encoded><![CDATA[<p>É comum que sistemas de informações utilizem um mecanismo de  autenticação para acesso às ferramentas restritas através de um login e  senha. Por questões de confidencialidade e segurança, é comum, também,  que as senhas fiquem guardadas de forma criptografada no banco de dados.  Os algoritmos de criptografia usados para estes casos são aqueles de  via única (unidirecional), ou seja, que não permitem que um valor  codificado seja descriptografado facilmente. O nome dado a um valor  criptografado também é chamado de &#8220;hash&#8221;.</p>
<p>PHP oferece diferentes alternativas para criptografar uma senha. Cada  uma delas pode ter suas peculiaridades na hora de se montar o mecanismo  de autenticação. Vejamos algumas das principais funções usadas para  criptografia de senhas:</p>
<ul>
<li><tt><a href="#funcao_md5">md5</a></tt> &#8211; Gera uma sequência binária de 16 bytes (ou 32 símbolos hexadecimais)</li>
<li><tt><a href="#funcao_sha1">sha1</a></tt> &#8211; Gera uma sequência binária de 20 bytes (ou 40 símbolos hexadecimais)</li>
<li><tt><a href="#funcao_crypt">crypt</a></tt> &#8211; Gera um hash de acordo com um algum algoritmo escolhido (poucas opções)</li>
<li><tt><a href="#modulo_hash">hash</a></tt> &#8211; Módulo que oferece diferentes algoritmos de criptografia (para saber os disponíveis, basta usar <tt>hash_algos</tt>)</li>
<li><tt><a href="#modulo_mcrypt">mcrypt</a></tt> &#8211; Módulo que oferece diferentes algoritmos de codificação/decodificação (para saber os disponíveis, basta usar <tt>mcrypt_list_algorithms</tt>)</li>
<li><tt><a href="#modulo_mhash">mhash</a></tt> &#8211; Módulo obsoleto por <tt>hash</tt>.</li>
</ul>
<hr />
<div>
<h3 id="funcao_md5">MD5</h3>
<p>Esta função é nativa do PHP e gera uma sequência binária de 16 bytes  ou 32 símbolos hexadecimais. O uso é simples, basta passar o texto a ser  codificado e se deseja obter o retorno na forma binária. Por padrão é  retornado uma sequência hexadecimal, que é mais conveniente de se  guardar em um banco de dados.</p>
<pre>$hash_hex = md5('teste'); // Gera 698dc19d489c4e4db73e28a713eab07b
$hash_bin = md5('teste', true); // Gera 16 bytes (inclusive não imprimíveis)</pre>
<p>Para testar se uma senha digitada é igual à senha criptografada no  BD, basta criptografar a senha informada e comparar as duas  criptografadas. Afinal, uma sequência sempre gera o mesmo resultado  criptografado.</p>
<pre>$senha_codificada_bd = $dados_bd['senha']; // exemplo de senha obtida do BD
$senha_codificada_informada = md5($_POST['senha']);

if ($senha_codificada_bd == $senha_codificada_informada) {
    // As senhas sao compativeis
}</pre>
<p>Observação: Como o hash gerado por MD5 tem tamanho fixo, é óbvio que  existem infinitas sequências textuais que produzem o mesmo hash. Porém,  isso não é tão crítico, pois encontrar duas sequências que geram o mesmo  hash é algo bastante incomum, especialmente entre senhas que envolvem  apenas caracteres imprimíveis.</p>
</div>
<hr />
<div>
<h3 id="funcao_sha1">SHA1</h3>
<p>Esta função é semelhante à MD5 (mesmos parâmetros), porém, o  algoritmo gera uma sequência binária de 20 bytes ou 40 símbolos  hexadecimais. Por padrão é retornado uma sequência hexadecimal.</p>
<pre>$hash_hex = sha1('teste'); // Gera 2e6f9b0d5885b6010f9167787445617f553a735f
$hash_bin = sha1('teste', true); // Gera 20 bytes (inclusive não imprimíveis)</pre>
<p>Para testar se uma senha digitada é igual à senha criptografada no BD, basta seguir a mesma ideia apresentada em MD5.</p>
</div>
<hr />
<div>
<h3 id="funcao_crypt">Crypt</h3>
<p>A função <tt>crypt</tt> também é nativa do PHP, mas, diferente de <tt>md5</tt> e <tt>sha1</tt>,  é genérica, pois pode-se especificar qual algoritmo a ser usado. A  função recebe uma string a ser codificada e, opcionalmente, um sal. O  &#8220;sal&#8221; é uma sequência aleatória usada como base para codificar outra  sequência. A ideia é que utilizando o mesmo sal para codificar o mesmo  texto, obtenha-se o mesmo valor. Mas usando um sal diferente para  codificar o mesmo texto, pode-se obter resultados diferentes.</p>
<p>A função crypt varia o seu funcionamento de acordo com o sal informado:</p>
<ul>
<li>CRYPT_STD_DES &#8211; Sal de 2 caracteres alfa-numéricos;</li>
<li>CRYPT_EXT_DES &#8211; Sal de 9 caracteres, sendo: 1 underscore + 4 bytes  (indicando o número de iterações) + 4 bytes alfa-numéricos (sal  propriamente dito)</li>
<li>CRYPT_MD5 &#8211; Sal de 12 caracteres, sendo: iniciado em &#8220;$1$&#8221; + 8 bytes (sal) + final &#8220;$&#8221;</li>
<li>CRYPT_BLOWFISH &#8211; Sal iniciado em &#8220;$2a$&#8221; + 2 dígitos (custo) +  símbolo &#8220;$&#8221; + 21 bytes alfa-numéricos ou &#8220;.&#8221; ou &#8220;/&#8221; (sal) + final &#8220;$&#8221;</li>
<li>CRYPT_SHA256 &#8211; Sal de 16 caracteres, sendo: iniciado em &#8220;$5$&#8221; + 12 bytes (sal) + final &#8220;$&#8221;</li>
<li>CRYPT_SHA512 &#8211; Sal de 20 caracteres, sendo: iniciado em &#8220;$6$&#8221; + 16 bytes (sal) + final &#8220;$&#8221;</li>
</ul>
<p>Exemplo de uso:</p>
<pre>$hash_md5 = crypt('teste', '$1$abcdefgh$');
// Gera $1$abcdefgh$DYdsp/CvdHfTi6XSCsPdg.</pre>
<p>Observe que o valor codificado também tem como prefixo o próprio sal.  Caso este valor codificado é usado como sal da função novamente, ela  recupera apenas o sal, ignorando o valor codificado:</p>
<pre>$hash_md5 = crypt('teste', '$1$abcdefgh$DYdsp/CvdHfTi6XSCsPdg.');
// Tambem gera $1$abcdefgh$DYdsp/CvdHfTi6XSCsPdg.</pre>
<p>Portanto, para checar se uma senha codificada no BD é (provavelmente) a mesma que uma informada pelo usuário, basta fazer:</p>
<pre>$senha_codificada_bd = $dados_bd['senha']; // exemplo de senha obtida do BD
$senha_codificada_informada = crypt($_POST['senha'], $senha_codificada_bd);

if ($senha_codificada_bd == $senha_codificada_informada) {
    // As senhas sao compativeis
}</pre>
<p>Observação: em algumas versões antigas do PHP, esta função dependia  dos recursos do sistema operacional. A partir da versão 5.3.0, o próprio  PHP possui sua própria implementação destes recursos e não depende do  sistema.</p>
</div>
<hr />
<div>
<h3 id="modulo_hash">Hash</h3>
<p>O módulo <tt>hash</tt> era um módulo pecl, mas passou a fazer parte  do PHP na versão 5.1.2. Ele também é genérico, pois pode-se informar  qual o algoritmo de codificação a ser usado. Para saber os algoritmos  suportados, basta usar a função <tt>hash_algos</tt>, que devolve um vetor com os nomes dos algoritmos. Para usar a função <tt>hash</tt>,  basta passar no primeiro parâmetro o nome do algoritmo a ser usado, no  segundo o valor a ser codificado, e no terceiro o tipo de saída (binário  ou hexadecimal).</p>
<p>Exemplo:</p>
<pre>$hash_md5 = hash('md5', 'teste', false); // Gera 698dc19d489c4e4db73e28a713eab07b
$hash_md5 = hash('md5', 'teste', true); // Gera 16 bytes (inclusive não imprimíveis)</pre>
<p>A vantagem deste módulo em relação aos demais é que o algoritmo é  informado por parâmetro, logo, pode ser informado dinamicamente, com o  valor armazenado em algum lugar.</p>
<p>Além de <tt>hash</tt>, existem outras funções no módulo, como a função <tt>hash_hmac</tt>, que recebe também uma chave de codificação (como um sal), e utiliza o algoritmo HMAC.</p>
<p>Exemplo:</p>
<pre>$hash_md5 = hash_hmac('md5', 'teste', 'chave', false); // Gera d1c9c8e42bb681e024dd07ae91aeeb4a</pre>
<p>Note que, diferente de <tt>crypt</tt>, a função <tt>hash_hmac</tt> não embute a chave (sal) no valor codificado, logo, ele não pode ser usado como parâmetro.</p>
</div>
<hr />
<div>
<h3 id="modulo_mcrypt">Mcrypt</h3>
<p>O módulo <tt>mcrypt</tt> suporta vários mecanismos de codificação/decodificação. As principais funções são a <tt>mcrypt_generic</tt> e a <tt>mdcrypt_generic</tt>,  que recebem um resource com o mecanismo de codificação/decodificação e o  valor a ser codificado/decodificado. O resource é criado pela função <tt>mcrypt_module_open</tt> e manipulado por outras funções.</p>
<p>Um exemplo de uso pode ser visto no link: <a href="http://php.net/manual/en/function.mcrypt-module-open.php">http://br2.php.net/manual/en/function.mcrypt-module-open.php</a></p>
</div>
<hr />
<div>
<h3 id="modulo_mhash">Mhash</h3>
<p>Este módulo está obsoleto pelo módulo <tt>hash</tt>. No PHP 5.3.0, as funções deste módulo são emuladas pelas funções do módulo <tt>hash</tt>. É melhor usar o módulo <tt>hash</tt> diretamente.</p>
<p>A principal função do módulo é <tt>mhash</tt>, que recebe o  algoritmo, o valor a ser codificado e a chave HMAC (caso deseja-se  utilizar o algoritmo HMAC). O valor retornado é hexadecimal.</p>
<p>Exemplo:</p>
<pre>$hash_md5 = mhash(MHASH_MD5, 'teste'); // Gera 698dc19d489c4e4db73e28a713eab07b
$hash_md5_hmac = mhash(MHASH_MD5, 'teste', 'chave'); // Gera d1c9c8e42bb681e024dd07ae91aeeb4a</pre>
</div>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://0.gravatar.com/avatar/ec30dacab0388115907eb369308ea6e1?s=100&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/rubs33/' title='Rubens Takiguti Ribeiro'>Rubens Takiguti Ribeiro</a></h3><p></p><p><a href='http://www.rubsphp.blogspot.com/' title='Rubens Takiguti Ribeiro'>Website</a> - <a href='http://phpsp.org.br/author/rubs33/' title='More posts by Rubens Takiguti Ribeiro'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2011/01/autenticacao-e-criptografia-de-senhas/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>PHP 5 Minutes &#8211; Micro-Podcast de PHP</title>
		<link>http://phpsp.org.br/2010/01/php-5-minutes-micro-podcast-de-php/</link>
		<comments>http://phpsp.org.br/2010/01/php-5-minutes-micro-podcast-de-php/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 16:13:08 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Review/Análise]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php5minutes]]></category>
		<category><![CDATA[phpsp_indica]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=1035</guid>
		<description><![CDATA[Inaugurou nesta semana um novo projeto da comunidade PHP brasileira, por meio do nosso colega de São Paulo, Ivo Nascimento. a proposta do podcast é bem interessante, episodios de 5 minutos curtos e rápidos que abordam assuntos bem específicos da linguagem PHP e de assuntos relacionados. Os episodios serão lançados toda segunda com um assunto [...]]]></description>
			<content:encoded><![CDATA[<p>Inaugurou nesta semana um novo projeto da comunidade PHP brasileira, por meio do nosso colega de São Paulo, Ivo Nascimento. a proposta do podcast é bem interessante, episodios de 5 minutos curtos e rápidos que abordam assuntos bem específicos da linguagem PHP e de assuntos relacionados. Os episodios serão lançados toda segunda com um assunto diferente.</p>
<p>Nas palavras de Ivo:</p>
<blockquote><p>&#8220;A ideia é essa. Quem quiser ouvir vai gastar 5 minutos do seu dia e pode ou não trazer alguma informação que adicione algo ao seu dia, mas, principalmente, o esquema é de sementinha(como fala um amigo).</p>
<p>Eu puxo o assunto e se você achar legal, continua ele ai nos comentários. O silêncio também é opção, afinal, não imagino que as coisas que vou falar sejam nada de novo no mundo do php ou da programação em geral.&#8221;</p>
</blockquote>
<p>A iniciativa é realmente muito boa e vem a somar a projetos como o Podcast Longa-metragem do PHPSP (é longo mesmo), os blogs e screencasts de diversos membros da comunidade aqui em São Paulo e por todo o Brasil. Então não perca tempo e adicione o php5minutes na sua agenda semanal, já abra a semana aprendendo mais sobre PHP.</p>
<blockquote><p><strong>PHP 5 Minutes </strong>(<a href="http://ianntech.com.br/category/php5minutes/">http://ianntech.com.br/category/php5minutes/</a>)</p>
<p>Um podcast curto de 5 minutos sobre algum aspecto do PHP ou relacionado ao seu ecossistema.</p>
<p><strong>Autor:</strong> Ivo Nascimento (<a href="http://ianntech.com.br/">http://ianntech.com.br/</a>)</p>
</blockquote>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://0.gravatar.com/avatar/4c678b5f99c982a1acf01be4b37efb8d?s=100&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/rdohms/' title='Rafael Dohms'>Rafael Dohms</a></h3><p>Rafael Dohms é um Evangelista PHP e membro ativo da Comunidade PHP. Ele ajudou na fundação de dois Grupos de Usuários de PHP ao longo do tempo e hoje compatilha a coordenação do PHPSP. Desenvolvedor, gamer e apaixonado por código ele também é host do primeiro podcast de PHP do Brasil: PHPSPCast.

Atualmente ele trabalha na equipe SWAT do grupo MIH, uma equipe de experts que fornecem conhecimento técnico para o grupo além de trabalhar com P&amp;D buscando novos nichos da internet e tecnologia. Seu papel como Desenvolvedor Sênior é codar, treinar e auxiliar outras empresas e se divertir enquanto faz isso.</p><p><a href='http://www.rafaeldohms.com.br' title='Rafael Dohms'>Website</a> - <a href='http://www.twitter.com/rdohms' title='Rafael Dohmson Twitter'>Twitter</a> - <a href='http://phpsp.org.br/author/rdohms/' title='More posts by Rafael Dohms'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2010/01/php-5-minutes-micro-podcast-de-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Escrevendo testes com PHPT e contribuindo com o PHP</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/bonHeH5qaic/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/bonHeH5qaic/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:22:04 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>
		<category><![CDATA[phpt]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testfest]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=513</guid>
		<description><![CDATA[Este ano esteve em destaque a PHPTestFest09, sendo realizada em vários cantos do mundo e destacando-se a participação do PHPSP que contribuiu com o maior número de testes. Ficou de fora? Então já comece a se preparar para ano que vem.
O PHPT é um framework extremamente simples de testes criado e usado internamente pelos desenvolvedores [...]]]></description>
			<content:encoded><![CDATA[<p><!-- google_ad_section_start -->
<div id=HOTWordsTxt name=HOTWordsTxt>
<p>Este ano esteve em destaque a PHPTestFest09, sendo realizada em vários cantos do mundo e destacando-se a <a href="http://phpsp.org.br/2009/07/06/resultado-phptestfest/">participação do PHPSP</a> que contribuiu com o maior número de testes. Ficou de fora? Então já comece a se preparar para ano que vem.</p>
<p>O PHPT é um framework extremamente simples de testes criado e usado internamente pelos desenvolvedores do core. Ele é extremamente atômico e centrado em testes como os que esperamos do PHP, como testar funções e bugs específicos.</p>
<p><strong>O que preciso saber?</strong></p>
<p>A grande vantagem do PHPT é que para poder escrever um teste, tudo que você precisa saber é: como escrever código PHP. Claro que um pouco de conhecimento interno do funcionamento do PHP vai te ajudar a procurar detalhes para testar, mas sabendo escrever PHP você já pode contribuir com uma grande percentagem dos testes que precisamos.</p>
<p>Vamos então atacar por partes:</p>
<ol>
<li>Preparando o ambiente</li>
<li>Escolhendo um teste</li>
<li>Escrevendo um teste</li>
<li>Rodando um teste</li>
<li>Enviando seu teste para o PHP</li>
</ol>
<h2><strong>1. Preparando o Ambiente</strong></h2>
<p>A preparação do ambiente não é nada complicada e exemplos estão disponíveis para referencia. A primeira coisa que você precisa é da versão do PHP que vai precisar para rodar testes. No caso do TestFest focamos no PHP 5.3, no momento recomendo pegar as últimas disponíveis na página do PHP QA (<a href="http://qa.php.net/">qa.php.net</a>) vá lá e baixe o pacote (source ou binary para windows).</p>
<p>Em ambientes Linux/Mac Os X, você irá passar pelo processo de compilar o PHP, passando pelos processos normais de <em>&#8220;./configure&#8221;</em>, <em>&#8220;make&#8221;</em> mas antes de rodar o <em>&#8220;make install&#8221;</em>, você poderá rodar o comando <em>&#8220;make tests&#8221;</em>. Este comando irá rodar todos os testes do PHP (em torno de 900+), pode demorar, mas é um ótimo procedimento, pois ao final você poderá mandar um relatório para a equipe de QA e &#8220;fazer sua parte&#8221;. Rode também o comando <em>make install</em> pois durante a confecção de um teste será interessante você poder testar ele com a versão correta do PHP.</p>
<p>Mais pra frente vamos ver como usar o <em>make tests</em> para rodar os seus novos testes.</p>
<h2><strong>2. Escolhendo um teste</strong></h2>
<p>Antes de escrever um teste é necessário escolher o objeto de nosso teste. Para tal é preciso identificar um ponto do PHP que necessita de um teste, isto pode vir de duas fontes, um bug ou uma linha de código não &#8220;coberta&#8221; (code coverage). Para descobrir bugs com/sem testes a melhor forma é olhando a pasta de testes da extensão do bug (GD -&gt; /ext/gd/tests) ou conversando com o pessoal na lista do QA.</p>
<p>Para testes específicos de linhas de código sua melhor aposta é o site <a href="http://gcov.php.net">http://gcov.php.net</a> onde você deve navegar até a versão correta que esta testando e então escolher uma área sem cobertura. No caso da testfest deste ano, o PHPSP focou na GD pois sua cobertura estava bem baixa então navegamos até o gcov do gd.c para ver onde poderiamos atuar. Para fazer esta parte do processo um conhecimento básico de C e de como o PHP funciona por baixo dos panos é muito bom, mas após alguns testes você aprende a identificar os pontos e durante o testfest o Guilherme Blanco e o Erick nos ajudaram a entender o código.</p>
<p>Para exemplificar melhor vamos ver como identificar estas linhas e o que elas fazem. Veja por exemplo a linha abaixo:</p>
<p><a href="http://www.rafaeldohms.com.br/wp-content/uploads/Picture-1.png"><img class="aligncenter size-full wp-image-568" title="PHPT-Gcov" src="http://www.rafaeldohms.com.br/wp-content/uploads/Picture-1.png" alt="PHPT-Gcov" width="948" height="218" /></a></p>
<p>O que queremos é que todas as linhas fiquem azuis (executadas) ou brancas (código não executável), as linhas não testadas estão marcadas de vermelho. Identificando a linha 1856 como não executada devemos interpretar que como há um if logo antes, a condição &#8220;== FAILURE&#8221; nunca é atingida, ou seja, esta linha nunca é executada pois a função <em>zend_parse_parameters</em> não retorna falso em nenhuma das chamadas a função <em>imagecolorallocatealpha</em> identificada logo ali encima na linha 1848.</p>
<p>Mas e ae? Ok, a função <em>zend_parse_parameters</em> é responsável por validar os parâmetros da função, ou seja, para testar esta função precisamos escrever alguns testes que passem parâmetros inválidos para a função e verifique se ela alerta o erro corretamente. Agora podemos passar para o passo de escrever este teste.</p>
<h2><strong>3. Escrevendo um teste</strong></h2>
<p>Escrever um teste é incrivelmente simples, e como testes devem ser objetivos e pontuais isso é bem claro. Você deve limitar o escopo de seu teste, procurando testar apenas uma função ou aspecto. Isso irá facilitar a nomeclatura de seu teste.</p>
<h3><strong>3.1 Nomeclatura de arquivos</strong></h3>
<p>A nomeclatura é bem simples:</p>
<ul>
<li>Teste para bug: bug&lt;bugid&gt;.phpt</li>
<li>Funcionamento básico da função: &lt;função&gt;_basic.phpt</li>
<li>Erros da função: &lt;função&gt;_error.phpt</li>
<li>Variação do funcionamento da função: &lt;função&gt;_variation.phpt</li>
<li>Extensões: &lt;extensão&gt;_&lt;#&gt;.phpt</li>
</ul>
<h3><strong>3.2 Estrutura de um .phpt</strong></h3>
<p>Arquivos de teste seguem uma estrutura bem simples:</p>
<blockquote>
<pre>--TEST--
strtr() function - basic test for strstr()
--FILE--
/* Do not change this test it is a README.TESTING example. */
$trans = array("hello"=&gt;"hi", "hi"=&gt;"hello", "a"=&gt;"A", "world"=&gt;"planet");
var_dump(strtr("# hi all, I said hello world! #", $trans));
?&gt;
--EXPECT--
string(32) "# hello All, I sAid hi planet! #"</pre>
</blockquote>
<p>Como vemos, a sessão TEST é um título de uma linha do teste descrito no arquivo. A sessão FILE é usada como o corpo de um arquivo .php que será gerado para o teste, e a sessão EXPECT demonstra o resultado que esperamos da execução da função. Recomenda-se o uso de var_dump para gerar saídas.</p>
<p>Estas são sessões padrões, mas a documentação completa pode ser vista aqui: <a href="http://qa.php.net/phpt_details.php">phpt format</a></p>
<p>Você poderá ver situações onde os blocos acima não são o bastante, mas em geral você estará checando para ver se executando a função X irá retornar a saída esperada. Porem um bloco é interessante ser mencionado aqui, o bloco CREDIT. Caso você não tenha acesso ao CVS, colocando seu nome nesse bloco irá levar seu nome aos créditos do PHP, no caso do TestFest utilizamos este formato:</p>
<blockquote>
<pre>--CREDIT--
Rafael Dohms &lt;myemail@gmail.com&gt; #PHPSPTestFest 2009-04-DD</pre>
</blockquote>
<p>Ok. Vamos tentar escrever um teste agora para ver se entendemos tudo até agora. Usando o exemplo acima onde identificamos uma linha não coberta por testes, vamos escrever um teste para testar o primeiro parâmetro da função. Observe a linha abaixo:</p>
<blockquote>
<pre><span>zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, <strong>"rllll"</strong>, &amp;IM, &amp;red, &amp;green, &amp;blue, &amp;alpha)</span></pre>
</blockquote>
<p>O que devemos entender aqui é o trecho que diz <em>&#8220;rllll&#8221;</em> pois ele identifica o tipo que cada parâmetro deve ter, neste caso o primeiro parâmetro deve ser um &#8220;Resource&#8221; por isso o &#8220;r&#8221;, e os outros devem ser do tipo &#8220;long&#8221;. Pare um momento agora e verifique o manual do PHP para esta função</p>
<blockquote>
<pre>int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )</pre>
</blockquote>
<p>Ele confirma exatamente o que vemos no código, mas você poderia também achar uma situação onde o manual esta incorreto, mais um ponto onde você poderia contribuir com o PHP.</p>
<p>Voltando ao nosso exemplo, vamos então escrever um teste para testar a validação do primeiro parâmetro da função. Verificando a pasta <em>/ext/gd/tests</em> vemos que não há testes desta função, mas especificamente não há um teste chamado <em>imagecolorallocatealpha_error1.phpt</em>, então como vamos testar justamente isto, podemos usar esse nome. (podemos usar _error2&#8230; para os outros parametros por exemplo)</p>
<blockquote>
<pre>--TEST--
Testing imagecolorallocatealpha(): Wrong types for parameter 1
--CREDITS--
Rafael Dohms &lt;rdohms [at] gmail [dot] com&gt;</pre>
</blockquote>
<p>Primeiramente vamos definir o título, deixando claro que estamos testando o parâmetro 1 da função e adicionar nosso crédito, que também é importante se houver algum erro no teste ou adaptação e precisarem saber quem foi o autor original do mesmo.</p>
<blockquote>
<pre>--SKIPIF--
&lt;?php
if (!extension_loaded("gd")) die("skip GD not present");
?&gt;</pre>
</blockquote>
<p>O bloco &#8211;SKIPIF&#8211; é muito importante neste caso. Como estamos testando uma função da GD, que é uma extensão do PHP, ela não estará sempre ativada, portanto só devemos executar os testes caso a extensão esteja ativa. O bloco SKIPIF é exatamente para isso, faça as verificações necessárias, caso não deva rodar, execute um die. O processo que executa os testes interpreta isso como SKIP e não FAIL. Isto vale para outras condições também, como arquivos necessários e qualquer outro fator que possa determinar se um teste deve ou não ser &#8220;pulado&#8221;.</p>
<blockquote>
<pre>--FILE--
&lt;?php
$resource = tmpfile();</pre>
<pre>imagecolorallocatealpha($resource, 255, 255, 255, 50);
imagecolorallocatealpha('string', 255, 255, 255, 50);
imagecolorallocatealpha(array(), 255, 255, 255, 50);
imagecolorallocatealpha(null, 255, 255, 255, 50);
?&gt;</pre>
</blockquote>
<p>Este é o corpo do teste, a parte mais importante. Basicamente estamos executando a chamada à função com diversos parâmetros inválidos, como strings, arrays e um resource que não é uma imagem. Passando um resource que não é imagem estamos na verdade testando a linha 1859, mas é uma condição importante de se testar também. O restante dos parâmetros recebem valores válidos.</p>
<blockquote>
<pre>--EXPECTF--
Warning: imagecolorallocatealpha(): supplied resource is not a valid Image resource in %s on line %d</pre>
<pre>Warning: imagecolorallocatealpha() expects parameter 1 to be resource, %s given in %s on line %d</pre>
<pre>Warning: imagecolorallocatealpha() expects parameter 1 to be resource, array given in %s on line %d</pre>
<pre>Warning: imagecolorallocatealpha() expects parameter 1 to be resource, null given in %s on line %d</pre>
</blockquote>
<p>Finalmente vamos testar o resultado. Aqui no caso utilizamos o EXPECTF que funciona como um printf, poderíamos ter usado outros disponíveis com expressões regulares por exemplo, mas o funcionamento deste é bem mais simples. Aqui basicamente estamos conferindo se o texto de erro bate com o que esperamos e como usamos um formato de printf $s e %d substituem textos que são dinâmicos, como o nome do arquivo que varia em cada máquina.</p>
<p><em><strong>Dica: </strong>Para obter as mensagens de erro, rode o arquivos usando o PHP, ex: php imagecolorallocatealpha_error1.phpt. O arquivo será executado, todo conteudo dele será echoado na tela, mas dentro do bloco &#8211;FILE&#8211; o conteudo que aparecer é o resultado da execução.</em></p>
<p><em><br />
</em></p>
<h2><strong>4. Rodando um teste e fazendo faxina</strong></h2>
<p>Agora você tem um arquivo phpt pronto e precisamos ver se este teste esta mesmo passando. Para isso precisamos chamar o executor de testes e passar o nosso teste, caso contrário ele irá executar todos os 900+ testes. Para fazer isso o processo é simples, execute o comando <em>make test</em> da mesma forma de antes, mas definindo o parâmetro <em>TESTS</em>, assim:</p>
<blockquote>
<pre>make test TESTS=ext/gd/tests/imagecolorallocatealpha_*.phpt</pre>
</blockquote>
<p>Você pode dar o caminho completo para o arquivo, ou usar um <em>wildcard</em> como assim, isso é útil se você acabou de escrever os testes para todos parâmetros e quer rodar todos testes daquela função.</p>
<p>Veja o resultado:</p>
<p><a href="http://www.rafaeldohms.com.br/wp-content/uploads/Picture-2.png"><img class="aligncenter size-full wp-image-570" title="Test Results" src="http://www.rafaeldohms.com.br/wp-content/uploads/Picture-2.png" alt="Test Results" width="896" height="426" /></a></p>
<p>Note que o teste passou, como indica o <em>PASS</em> logo em frente ao que escrevemos no bloco &#8211;TEST&#8211;.  É interessante também comentar o que acontece quando um teste falha, além de ser marcado com um <em>FAIL</em> o sistema gera um numero de arquivos com o mesmo nome e diferentes extensões:</p>
<ul>
<li>.out &#8211; output do arquivo php criado po teste</li>
<li>.php &#8211; o código gerado para o teste (bloco &#8211;FILE&#8211;)</li>
<li>.diff &#8211; uma comparacao do que foi o output e do que se esperava</li>
<li>.exp &#8211; o texto em &#8211;EXPECTEDF&#8211; isaolado</li>
<li>.log &#8211; um resumo do processo</li>
</ul>
<p>Estes arquivos são muito uteis para que se analise o resultado e poque da falha.</p>
<h2><strong>5. Enviado seu teste para o PHP</strong></h2>
<p>Você possui algumas formas de fazer seu teste chegar no PHP. A primeira é participando do PHPTestFest anual, onde todos os testes são enviados para um repositório separado e então integrados ao SVN oficial. A segunda forma é você enviar este teste que escreveu para a lista do QA Team e alguem irá colocar ele no SVN por você. A terceira forma é uma junção de ambas, muitas pessoas apos a testfest são presenteadas com contas do SVN e karma para poderem comitar seus próprios testes, como ocorreu comigo (viu, não é mentira!)</p>
<h2><strong>Conclusão</strong></h2>
<p>Pronto, agora você tem todas as ferramentas para começar a escreve testes para o PHP. O PHPT é excelente para sua função em testes do PHP, mas testes não param por ai, procure incluir os testes em seus sistemas e bibliotecas, mas para isso procure o PHPUnit e aprende sobre Test Driven Development (TDD). Em breve falarei destes por aqui também.</p>
</div>
<div id="st_tags"><a href="http://www.rafaeldohms.com.br/tag/php/pt/" rel="tag">PHP</a>, <a href="http://www.rafaeldohms.com.br/tag/phpt/pt/" rel="tag">phpt</a>, <a href="http://www.rafaeldohms.com.br/tag/tdd/pt/" rel="tag">tdd</a>, <a href="http://www.rafaeldohms.com.br/tag/testfest/pt/" rel="tag">testfest</a></div>
<p><!-- google_ad_section_end -->
</p>
<hr noshade style="margin:0;height:1px" />
<p>&copy; Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |<br />
	  <a href="http://www.rafaeldohms.com.br/2009/08/19/escrevendo-testes-com-phpt/pt/">Permalink</a> |<br />
	  <a href="http://www.rafaeldohms.com.br/2009/08/19/escrevendo-testes-com-phpt/pt/#comments">No comments</a><br />
	  Want more on these topics ? Browse the archive of posts filed under <a href="http://www.rafaeldohms.com.br/category/php/pt/" title="View all posts in PHP" rel="category tag">PHP</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/RafaelDohms?a=bonHeH5qaic:wvA608DOeVI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RafaelDohms?a=bonHeH5qaic:wvA608DOeVI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/RafaelDohms?a=bonHeH5qaic:wvA608DOeVI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0"></img></a>
</div>
<p><img src="http://feeds.feedburner.com/~r/RafaelDohms/~4/bonHeH5qaic" height="1" width="1"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/08/19/escrevendo-testes-com-phpt/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Encontro CakePHP SP</title>
		<link>http://ivanrosolen.com/v3/2009/06/17/i-encontro-cakephp-sp/</link>
		<comments>http://ivanrosolen.com/v3/2009/06/17/i-encontro-cakephp-sp/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 02:43:30 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[PHPSP]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-sp-blogs]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=276</guid>
		<description><![CDATA[Primeiro encontro dos desenvolvedores de CakePHP em São Paulo&#8230;.eu fui!
Representando o PHPSP, consegui divulgar o PHPSPTestFest 09 em primeira mão e recebi os testes das canecas do PHPSP que lançaremos em breve!
O evento contou com palestras de alto nível, mais uma vez FLEX foi um tema abordado, e as pessoas presentes conseguiram agregar muito conhecimento.
Palestras [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_287" class="wp-caption aligncenter" style="width: 510px;">

<img class="size-full wp-image-287" title="CakeSP" src="http://ivanrosolen.com/wp-content/uploads/2009/06/cakesp.jpg" alt="I Encontro CakePHP SP" width="500" height="375" />
<p class="wp-caption-text">I Encontro CakePHP SP</p>

</div>
Primeiro encontro dos desenvolvedores de CakePHP em São Paulo….eu fui!

Representando o PHPSP, consegui divulgar o PHPSPTestFest 09 em primeira mão e recebi os testes das canecas do PHPSP que lançaremos em breve!

O evento contou com palestras de alto nível, mais uma vez FLEX foi um tema abordado, e as pessoas presentes conseguiram agregar muito conhecimento.

Palestras sobre helpers, componentes, TDD –  Test-driven development, plugins, REST, FLEX e CAKE utilizando o FAKE para AMF e foi feito uma aplicação para demonstrar a facilidade do BAKE para sortear 10 hospedagem na <a title="IW2 Servers" href="http://www.iw2servers.com.br/">IW2</a>.

Pessoas de diversos estados estavam presentes, Minas Gerais, Rio de Janeiro porém a maioria de São Paulo mesmo.

E, como não poderia faltar, depois do evento rolou mais um PHPinga! Assim que tiver fotos do evento publico aqui!

<strong>[updated]</strong> <a title="CakeSP" href="http://blog.renangoncalves.com/2009/06/17/i-encontro-cakesp-realizado-com-sucesso/">http://blog.renangoncalves.com/2009/06/17/i-encontro-cakesp-realizado-com-sucesso/</a>

Parabéns ao <a title="Renan Gonçalves" href="http://blog.renangoncalves.com/">Renan Gonçalves</a> que tornou isso possível.

Caso tenha interesse, segue a o lista que já conta com mais de 200 membros.

<a title="CakePHP" href="http://groups.google.com/group/cakephp-pt/">http://groups.google.com/group/cakephp-pt/</a>]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2009/06/17/i-encontro-cakephp-sp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPSC Conference 2009</title>
		<link>http://ivanrosolen.com/v3/2009/06/02/phpsc-conference-2009/</link>
		<comments>http://ivanrosolen.com/v3/2009/06/02/phpsc-conference-2009/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 13:00:55 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=261</guid>
		<description><![CDATA[PHPSC Conference 2009&#8230;.eu fui!
Primeiro dia (sexta-feira) de palestras estava meio estranho, muita gente reclamando/elogiando disso e daquilo via &#8216;twitter&#8217;  mas acredito que foi muito bom.
Achei a palestra sobre o &#8216;Projeto TheWebMind&#8217; interessante, seguida por duas palestras sobre Symfony. Uma sobre um case do Governo integrando Symfony e FLEX, outra mais específica sobre o Framework.
Depois mais uma [...]]]></description>
			<content:encoded><![CDATA[PHPSC Conference 2009….eu fui!

Primeiro dia (sexta-feira) de palestras estava meio estranho, muita gente reclamando/elogiando disso e daquilo via ‘twitter’  mas acredito que foi muito bom.

Achei a palestra sobre o ‘Projeto TheWebMind’ interessante, seguida por duas palestras sobre Symfony. Uma sobre um case do Governo integrando Symfony e FLEX, outra mais específica sobre o Framework.

Depois mais uma palestra sobre PHP + FLEX, mostrando que RIA está em alta, seguida por uma fenomental palestra de Samuel Crescêncio sobre LEAN.

Última palestra que vi foi sobre PHP Coding Standards e PHPDoc ministrada por Walker de Alencar. Esse tema acredito ser muito importante para quem está começando. Palestra bem dinâmica com bons exemplos.

Segundo dia (sábado) de palestras estava lotado! Palestrantes de ‘peso’ mandaram muito conteúdo pra galera.

Palestra de Er Galvão Abbott (Segurança), Adler Medrado (Zend Framework), Samuel Crescêncio (Scrum), Guilherme Blanco (Doctrine), Elton Minetto (MemCache) foram ótimas.

Mas alguém esperava algo diferente desses palestrantes?

A surpresa foi a palestra da Flávia Jobstraibizer sobre cases em empresas nacionais em que trabalhou, quem acompanhou o twitter ‘#phpscconf’ pode entender o porque da surpresa de todos.

Paralelo às palestas foram ministrados vários mini-cursos ao longo do dia.

Domingo aconteceu o TestFest, depois de alguns contratempos executamos alguns testes. Porém como está no final do período de testes quase tudo já está realizado. <img class="wp-smiley" src="http://ivanrosolen.com/v3/wp-includes/images/smilies/icon_sad.gif" alt=":(" />

Gostei do meu primeiro TestFest, compilamos php 5.3, rodamos os testes e executamos alguns nossos. Valeu muito a experiência.

Todos os dias após as palestras rolavam os famosos #phpinga. Que em Santa Catarina não deixaram nada a desejar.

Algumas palestras já estão publicadas. <a title="Palestras PHPSC Conf 09" href="http://www.slideshare.net/tag/phpscconf">http://www.slideshare.net/tag/phpscconf </a>

<strong>Conclusão: ótima cidade, ótimo evento, ótimo networking e ótimos #phpinga. Voltarei ano que vem.</strong>

<sub>p.s.: #jesusmechicoteia</sub>]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2009/06/02/phpsc-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP SC Conference</title>
		<link>http://ivanrosolen.com/v3/2009/05/29/php-sc-conference/</link>
		<comments>http://ivanrosolen.com/v3/2009/05/29/php-sc-conference/#comments</comments>
		<pubDate>Fri, 29 May 2009 14:11:32 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=257</guid>
		<description><![CDATA[Muito tempo sem atualizar o site  
Preparando novos projetos, estudando muito, mas hoje é &#8216;relax&#8217;!
Estou em Santa Catarina! Meio frio porém com sol.
Grade de palestras promete ser um evento muito bom.
Aguarde novidades!
]]></description>
			<content:encoded><![CDATA[Muito tempo sem atualizar o site <img class="wp-smiley" src="http://ivanrosolen.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" />

Preparando novos projetos, estudando muito, mas hoje é ‘relax’!

Estou em Santa Catarina! Meio frio porém com sol.

Grade de palestras promete ser um evento muito bom.

Aguarde novidades!]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2009/05/29/php-sc-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php&#124;tek09: Dia #1</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/3i8MmyL-5eA/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/3i8MmyL-5eA/#comments</comments>
		<pubDate>Wed, 20 May 2009 04:37:21 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=529</guid>
		<description><![CDATA[Dia de tutoriais na php&#124;tek! O dia começou com um café da manha regado a PHP onde pude falar com muitas pessoas do dia anterior e conhecer o Matthew Weier O&#8217;Phinney. Depois um rápido registro e la vamos nós para os tutoriais.
O primero tutorial foi um Bootcamp de Segurança por Christian Wenz (@chwenz) onde analisamos [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">
<div>

Dia de tutoriais na php|tek! O dia começou com um café da manha regado a PHP onde pude falar com muitas pessoas do dia anterior e conhecer o Matthew Weier O’Phinney. Depois um rápido registro e la vamos nós para os tutoriais.

O primero tutorial foi um Bootcamp de Segurança por Christian Wenz (@chwenz) onde analisamos fatores de segurança (ou insegurança) e aplicações de exemplo, revendo conceitos básicos de seguran;ca no PHP e conhecendo mais sobre problemas mais recentes, como XSS e CSRF. Uma palestra muito boa para revisar fatores que as vezes podem passar despercebidos e excelente para apontar novatos no caminho da segurança ou simplesmente lembrar o que devemos procurar.

Após o almoço fornecido pela MTACon, segui para o tutorial de Analise de Código por Sebastan Bergmann, Arne Blankerts e Stefan Priebsch. Esta sessão foi otima e um puxão de orelha para lembrarmos de coisas que não devemos fazer. Analisando frameworks e apps como Habari, Magento, dentre outros, isolamos os piores e mais feios exemplos de código PHP. Os tipos de problemas que encontramos eram incirvies, desde falhas graves de segurança no Habari até codigo altamente inutil a insano no Magento. A palestra foi altamente interativa e muito válida para quqalquer programador.

Após as sessões fomos pegar uma Pizza de Chicago, a famosa Stuffed Pizza, que devo admitir ter fama por bons motivos! Este jantar terminou de volta no hotel para muita conversa de PHP e um pouco de Hoquei e Basquete.

Que venha o primeiro dia oficial de palestras. Ah.. e temos camisetas incriveis a venda aqui!

Fotos no Flickr: <a href="http://www.flickr.com/search/?q=phptek+OR+tek09&amp;m=tags&amp;d=taken-20090515-20090525&amp;ss=2&amp;ct=0&amp;w=all">http://www.flickr.com/search/?q=phptek+OR+tek09&amp;m=tags&amp;d=taken-20090515-20090525&amp;ss=2&amp;ct=0&amp;w=all</a>

</div>
</div>
<div id="st_tags"><a rel="tag" href="http://www.rafaeldohms.com.br/tag/php/pt/">PHP</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/tek09/pt/">tek09</a></div>
<!-- google_ad_section_end -->

<hr />© Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |
<a href="http://www.rafaeldohms.com.br/2009/05/20/phptek09-dia-1/pt/">Permalink</a> |
<a href="http://www.rafaeldohms.com.br/2009/05/20/phptek09-dia-1/pt/#comments">One comment</a>
Want more on these topics ? Browse the archive of posts filed under <a title="View all posts in Conferences" rel="category tag" href="http://www.rafaeldohms.com.br/category/carreira/conferences/pt/">Conferences</a>.
<div class="feedflare"><a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=3i8MmyL-5eA:6zg8DmS1rDI:yIl2AUoC8zA"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=3i8MmyL-5eA:6zg8DmS1rDI:YwkR-u9nhCs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=3i8MmyL-5eA:6zg8DmS1rDI:qj6IDK7rITs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0" alt="" /></a></div>
<img src="http://feeds2.feedburner.com/~r/RafaelDohms/~4/3i8MmyL-5eA" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/05/20/phptek09-dia-1/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php&#124;tek09: Dia #0</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/_DQobnBkxYc/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/_DQobnBkxYc/#comments</comments>
		<pubDate>Tue, 19 May 2009 03:28:05 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=520</guid>
		<description><![CDATA[O primeiro dia em Chicago começou cedo, as 5h. Do aeroporto pro hotel foi uma viagem tranquila, após ligar para o excelente supporte da MTACon que prontamente me apontou pro transporte do hotel, sim.. o aeroporto é enorme!
Checkin sem problemas, internet fácil e dencente (fail no form, letras brancas/fundo branco), um banho e pé na [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">

O primeiro dia em Chicago começou cedo, as 5h. Do aeroporto pro hotel foi uma viagem tranquila, após ligar para o excelente supporte da MTACon que prontamente me apontou pro transporte do hotel, sim.. o aeroporto é enorme!

Checkin sem problemas, internet fácil e dencente (fail no form, letras brancas/fundo branco), um banho e pé na estrada. Mas não antes de esbarrar com grandes nomes na porta do hotel, como <a href="http://www.derickrethans.nl/">Derick Rethans</a>, Andrei Zmieski, Sara Golemon e mais uma meia duzia, a caminho da Microsoft, que cedeu uma sala para uma reunião interna do PHP (go Gates!). O resto da tarde foi o que é toda viagem de um brasileiro para os EUA… cara! Muitas compras, mas faz parte.

No retorno desci para o lobby onde pude conversar com muitas figuras, dentre elas Eli White, Keith Casey, Gregg, Sebastian, enfim, muitos. Após muita conversa vem, conversa vai o papo seguiu para o Shoeless Joe’s, ou era Shirtess Schmoe’s? Enfim, janta regada a muita cerveja e mais “celebridades”, como Ben Ramsey, Elizabeth Smith, Michalangelo Van Dam, e diversos. Por sinal, FAILS stickers brotavam de todo lado, sem dúvida a culpa é do Spoons.

Chegada no hotel ainda me surpreendeu com um encontro com Lorna Jane, Chris Jones .. são muitos nomes. Dentre todas estas conversas destaco uma com o Gregg sobre tecnologias e projetos de geolocation. Um execlente papo com o Michelangelo sobre comunidades e o que anda acontecendo pela Bélgica, esse papo merece mais atenção em breve. E um papo legal sobre conferencias e o que o Brasil tem a oferecer neste campo com o grupo de volta no hotel.

Dia pré-evento foi um sucesso, muitos contatos e amigos. O primeiro dia de conferência amanha promete.

</div>
<div id="st_tags"><a rel="tag" href="http://www.rafaeldohms.com.br/tag/php/pt/">PHP</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/tek09/pt/">tek09</a></div>
<!-- google_ad_section_end -->

<hr />© Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |
<a href="http://www.rafaeldohms.com.br/2009/05/19/phptek09-dia-0/pt/">Permalink</a> |
<a href="http://www.rafaeldohms.com.br/2009/05/19/phptek09-dia-0/pt/#comments">No comments</a>
Want more on these topics ? Browse the archive of posts filed under <a title="View all posts in Conferences" rel="category tag" href="http://www.rafaeldohms.com.br/category/carreira/conferences/pt/">Conferences</a>.
<div class="feedflare"><a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=_DQobnBkxYc:gLdnHU9ZTWw:yIl2AUoC8zA"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=_DQobnBkxYc:gLdnHU9ZTWw:YwkR-u9nhCs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=_DQobnBkxYc:gLdnHU9ZTWw:qj6IDK7rITs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0" alt="" /></a></div>
<img src="http://feeds2.feedburner.com/~r/RafaelDohms/~4/_DQobnBkxYc" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/05/19/phptek09-dia-0/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php&#124;tek’09: Preparativos</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/H2j-YOq2hRo/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/H2j-YOq2hRo/#comments</comments>
		<pubDate>Fri, 15 May 2009 23:04:03 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=517</guid>
		<description><![CDATA[Este ano estarei presente na php&#124;tek, conferencia de PHP muito famosa que ocorre em Chicago nos Estados Unidos. A conferencia é organizada pela MTA, mesma empresa responsável pela PHP&#124;architect renomada revista impressa e digital de PHP.
Fique atento ao meu twitter e neste blog (ou no blog em inglês) pois estarei postando novidades nele ao longo [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">

Este ano estarei presente na <a href="http://tek.mtacon.com/">php|tek</a>, conferencia de PHP muito famosa que ocorre em Chicago nos Estados Unidos. A conferencia é organizada pela MTA, mesma empresa responsável pela <a href="http://www.phparch.com">PHP|architect</a> renomada revista impressa e digital de PHP.

Fique atento ao meu <a href="http://www.twitter.com/rdohms">twitter</a> e neste blog (ou no <a href="http://www.rafaeldohms.com.br/en">blog em inglês</a>) pois estarei postando novidades nele ao longo da viagem, que vai ocorrer de 18/05 a 22/05.

</div>
<!-- google_ad_section_end -->

<hr />© Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |
<a href="http://www.rafaeldohms.com.br/2009/05/15/phptek09-preparativos/pt/">Permalink</a> |
<a href="http://www.rafaeldohms.com.br/2009/05/15/phptek09-preparativos/pt/#comments">2 comments</a>
Want more on these topics ? Browse the archive of posts filed under <a title="View all posts in Conferences" rel="category tag" href="http://www.rafaeldohms.com.br/category/carreira/conferences/pt/">Conferences</a>,  <a title="View all posts in PHP" rel="category tag" href="http://www.rafaeldohms.com.br/category/php/pt/">PHP</a>.
<div class="feedflare"><a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=H2j-YOq2hRo:vIgSKn8PsbI:yIl2AUoC8zA"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=H2j-YOq2hRo:vIgSKn8PsbI:YwkR-u9nhCs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=H2j-YOq2hRo:vIgSKn8PsbI:qj6IDK7rITs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0" alt="" /></a></div>
<img src="http://feeds2.feedburner.com/~r/RafaelDohms/~4/H2j-YOq2hRo" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/05/15/phptek09-preparativos/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novidades no mundo PHP</title>
		<link>http://ivanrosolen.com/v3/2009/04/06/novidades-no-mundo-php/</link>
		<comments>http://ivanrosolen.com/v3/2009/04/06/novidades-no-mundo-php/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 10:33:48 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=237</guid>
		<description><![CDATA[PHP está cada vez mais ativo!
Gravamos o &#8220;segundo&#8221; PHPSPCast, tema segurança. Foi bem divertido gravar e, após a edição, será muito divertido ouvir.
Mas não estou aqui para falar sobre isso e sim sobre o Projeto PHP Counter - Censo de programadores PHP!
Uma ótima iniciativa de Er Galvão Abbott e Silvano Girardi Jr.
Quer saber mais?! Acesse [...]]]></description>
			<content:encoded><![CDATA[<strong>PHP</strong> está cada vez mais ativo!

Gravamos o “segundo” PHPSPCast, tema segurança. Foi bem divertido gravar e, após a edição, será muito divertido ouvir.

Mas não estou aqui para falar sobre isso e sim sobre o <strong>Projeto PHP Counter</strong> - Censo de programadores PHP!

Uma ótima iniciativa de <strong>Er Galvão Abbott</strong> e <strong>Silvano Girardi Jr.</strong>

Quer saber mais?! Acesse esse post do <a title="Grupo de Usuário PHP de São Paulo" href="http://phpsp.org.br/2009/04/06/projeto-php-counter/">PHP-SP</a> ou o site do projeto <a title="Projeto PHP Counter" href="http://www.phpcounter.org/">www.phpcounter.org/</a>]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2009/04/06/novidades-no-mundo-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPSPCast: Uma nova iniciativa</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/KYUr-CPrhxo/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/KYUr-CPrhxo/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 20:31:44 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=502</guid>
		<description><![CDATA[Desde que me mudei para São Paulo minha participação na comunidade PHP em geral esta cada vez mais emocionante. Desde que conversei com alguns amigos e decidimos organizar o PHPSP (Grupo de Desenvolvedores PHP de São Paulo) as ídeias não param de surgir, e muitas ideias já estão virando fatos concretos.
A algum tempo venho ouvindo [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">

<img class="alignright size-full wp-image-506" title="PHPSPCast" src="http://www.rafaeldohms.com.br/wp-content/uploads/generic.gif" alt="PHPSPCast" width="300" height="185" />Desde que me mudei para São Paulo minha participação na comunidade PHP em geral esta cada vez mais emocionante. Desde que conversei com alguns amigos e decidimos organizar o PHPSP (Grupo de Desenvolvedores PHP de São Paulo) as ídeias não param de surgir, e muitas ideias já estão virando fatos concretos.

A algum tempo venho ouvindo ótimos podcasts, tudo começou com o <a href="http://jovemnerd.ig.com.br/nerdcast/">Nerdcast</a> que tras um pouco de diversão ao meu dia toda manha no trem. Logo me vi procurando algo relacionado ao PHP e acabei esbarrando em dois podcasts, o PHP Abstract realizado por Cal Evans e o P3 da equipe do php|architect. Este projetos eram otimos e renderam alguns bons episódios e descobertas. Porém, perto do final de 2008 todos sumiram, sendo que o último P3 foi gravado ao redor de uma mesa em um evento descontraido de PHP, gerando um excelente episódio com o mesmo ambiente de descontração.

Continuei alimentando minha fome de podcasts ouvindo o Nerdcast, que para quem não conhece é um bate papo divertido entre amigos sobre diversos assuntos, algo muito próximo de um papo de mesa de bar. Este clima de mesa de bar rende momentos excelentes, muita risada e ao mesmo tempo uma absorção de conhecimento enorme, como dizem, você aprende sem perceber.

Por algum tempo pensei que o PHP precisava de um podcast, e após ouvir meu colega Luciano do site “<a href="http://www.asala.com.br">A Sala</a>” gravar o primeiro podcast junto com amigos (<a href="http://www.asala.com.br/?p=503">CineCast</a>), a idéia estalou. Por que não unir a diversão do Nerdcast com meu ganha pão, o PHP? Foi exatamente isso que fizemos.

Conversei com os coordenadores do PHPSP, respectivamente, O Augusto, Anderson e Ivan, e decidimos que a idaia tinha tudo para dar certo. Nem duas semanas depois do espório da ideia, já estavamos testando nossos softwares gravando o primeiro episódio. No momento da gravação este seria apenas um “teste de microfones” mas a facilidade que encontramos em começar a falar sobre o assunto nos levou a seguir em frente. Variando entre uma apresentação da iniciativa, falando sobre o PHPSP e apresentando projetos relacionados, como o PHPBC,  o podcast foi um excelente primeiro passo. Após a gravação possamos pela primeira grande dificuldade, a edição. Sem nenhuma pessoa com experiência em edição e audio em geral tivemos que nos virar com vinhetas e musicas, mas a experiencia foi muito divertida e o resultado final muito satisfatório.

Assim nasceu o PHPSPCast, que você pode ouvir <a href="http://phpsp.org.br/category/phpsp/phpspcast/">aqui</a>, especificamente o <a href="http://phpsp.org.br/2009/03/25/phpspcast-0/">primeiro episódio</a>. A recepção foi incrível com diversas mensagens de apoio e incentivo, além de centenas de downloads em poucos dias. Este resultado só que dizer uma coisa, acertamos e devemos seguir em frente.

O PHPSPCast #1 já esta sendo gravado, desta vez eu não estarei participando, pois estou atualmente na África do Sul a trabalho e sem uma conexão de internet decente o bastante para podermos gravar o cast, sem contar o fusu horário que me faria gravar no meio da madrugada. Este episódio será coordenado pelo Augusto e contará com dois convidados então fiquem de olho no resultado e aguarde novos episódios. Visite o site do PHPSPCast e descubra como enviar sugestões de assuntos, feedback e você poderá inclusive ter seu email lido no proximo episódio.

Espero que gotem do resultado e que possamos trazer mais informações para a comunidade PHP com este cast, 0 primeiro podcast de PHP na lingua portuguesa.

</div>
<div id="st_tags"><a rel="tag" href="http://www.rafaeldohms.com.br/tag/php/pt/">PHP</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/phpsp/pt/">phpsp</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/phpspcast/pt/">phpspcast</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/podcast/pt/">podcast</a></div>
<!-- google_ad_section_end -->

<hr />© Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |
<a href="http://www.rafaeldohms.com.br/2009/04/02/phpspcast-uma-nova-iniciativa/pt/">Permalink</a> |
<a href="http://www.rafaeldohms.com.br/2009/04/02/phpspcast-uma-nova-iniciativa/pt/#comments">5 comments</a>
Want more on these topics ? Browse the archive of posts filed under <a title="View all posts in PHP" rel="category tag" href="http://www.rafaeldohms.com.br/category/php/pt/">PHP</a>.
<div class="feedflare"><a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=KYUr-CPrhxo:CaqJQDA1P-Q:yIl2AUoC8zA"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=KYUr-CPrhxo:CaqJQDA1P-Q:YwkR-u9nhCs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=KYUr-CPrhxo:CaqJQDA1P-Q:qj6IDK7rITs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0" alt="" /></a></div>
<img src="http://feeds2.feedburner.com/~r/RafaelDohms/~4/KYUr-CPrhxo" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/04/02/phpspcast-uma-nova-iniciativa/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adeus Brasil, olá Nova Zelândia</title>
		<link>http://ivanrosolen.com/v3/2009/04/01/adeus-brasil-ola-nova-zelandia/</link>
		<comments>http://ivanrosolen.com/v3/2009/04/01/adeus-brasil-ola-nova-zelandia/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 13:41:44 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=229</guid>
		<description><![CDATA[Opa!
É com muita alegria que comunico a todos que vou finalmente realizar meu sonho de trabalhar na Nova Zelândia!
Estava curtindo absurdos na Arizona!
Entrei na empresa em Janeiro mas consegui aprender muito sobre o &#8216;meio&#8217; gráfico e impressão e aprimorar meus conhecimentos de integrar PHP com outras linguagens.
Tudo indo bem quando me aparece a oportunidade de [...]]]></description>
			<content:encoded><![CDATA[<img class="size-full wp-image-233 alignleft" title="All Blacks" src="http://ivanrosolen.com/wp-content/uploads/2009/04/all_blacks.jpeg" alt="All Blacks width=" width="135" height="110" />

Opa!

É com muita alegria que comunico a todos que vou finalmente realizar meu sonho de trabalhar na <strong>Nova Zelândia</strong>!

Estava curtindo absurdos na <strong>Arizona</strong>!

Entrei na empresa em Janeiro mas consegui aprender muito sobre o ‘meio’ gráfico e impressão e aprimorar meus conhecimentos de integrar PHP com outras linguagens.

Tudo indo bem quando me aparece a oportunidade de trabalhar em outro país e, para minha alegria, será em um lugar que sempre sonhei visitar.

Inicialmente vou trabalhar com PHP mesmo mas quem sabe não consigo outro trabalho com esportes radicais que tanto gosto!?!?

Já pensou assistir um jogo dos <strong>All Blacks</strong> ao vivo? Pular de ‘bungee’ todo dia? Demais né?

Claro que não vou sumir! Continuarei na coordenação do <strong>PHP SP</strong> e ajudarei remotamente.

Aguardem minha festa de despedida….vai ser ‘loka’!

<sub>[ para os mais 'lentos' olhem a data do post....1º de Abril ]</sub>]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2009/04/01/adeus-brasil-ola-nova-zelandia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projeto “Eu desenvolvo seu plugin para WordPress!”</title>
		<link>http://feedproxy.google.com/~r/RafaelDohms/~3/vB57AcgT_nQ/</link>
		<comments>http://feedproxy.google.com/~r/RafaelDohms/~3/vB57AcgT_nQ/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 13:28:23 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=495</guid>
		<description><![CDATA[Com o crescimento continuo da importancia do Wordpress no mundo Blogger um item está cad vez mais em destaque, os plugins para wordpress. Muitos defendem que o Wordpress já não é mais um simples sistema de blog e que pode virar  muito mais, como um CMS e diversos outros usos, vejamos por exemplo o [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">

Com o crescimento continuo da importancia do Wordpress no mundo Blogger um item está cad vez mais em destaque, os plugins para wordpress. Muitos defendem que o Wordpress já não é mais um simples sistema de blog e que pode virar  muito mais, como um CMS e diversos outros usos, vejamos por exemplo o Ministério da Cultura, cujo site é feito com base no WP.

O sistema, embora tenha diversas polêmicas sobre seu código, foi desenhado de forma a permitir diversos ganchos e pontos de conexão em sua API para podermos plugar nossos plugins, executando atividades nos mais diversos momentos da execução de um request, ou da exibição de um post. Algum tempo atrás me dediquei a escrever um <a href="http://www.rafaeldohms.com.br/2008/03/10/desenvolvendo-plugins-para-wordpress/pt/">artigo completo</a> sobre o desenvolvimento destes plugins, que é hoje o segundo post mais acessado no meu blog.

A algum tempo venho recebendo ideias e pedidos de pessoas que querem desenvolver plugins para seus blogs, eles tem um problema, inventam uma solução, mas esbarram no PHP ou no codigo fonte do WP e acabam deixando de lado. Muitas vezes já existe um plugin no repositório do WP que atende ao que é buscado, porém em alguns casos sua ideia tem um twist, uma diferença ou é simplesmente original, e nessas horas você precisa de alguma ajuda.

Venho querendo pegar projetos pontuais e pequenos para fazer, já que projetos grandes acabam de vez com meu tempo livre e me ocupam por muito tempo. Portanto estou abrindo aqui um espaço para <strong>ajudar estas pessoas</strong> aqui, e estarei disponibilizando uma oportunidade para <strong>criar plugins</strong> para os outros.

Esta iniciativa possui tres planos:
<ol>
	<li><strong>Plano Open Source</strong>: Você contribui com a ideia do plugin, eu desenvolvo ele, divulgo aqui no blog e publico no repositório do link. O código fica aberto a todos e o crédito do plugin é dividido entre você e eu.</li>
	<li><strong>Plano Pago</strong>: Você me fornece com o briefing do plugin, eu desenvolvo o plugin e lhe entrego todo o código para você usar ou divulgar como quiser. O plugin carregará apenas o seu nome nos créditos.</li>
	<li><strong>Plano Combinado</strong>: Este plano é uma mistura dos dois acima, novamente a ideia é sua, mas neste caso o código não é aberto (open source), pertencendo apenas a você, porém o crédito é novamente dividido entre você e eu. Neste caso o custo de desenvovimento é reduzido.</li>
</ol>
<em>O preço dos plugins será feito sobe encomenda de acordo com o nivel de complexidade do mesmo e de outros fatores, e será divulgado após o contato inicial para o orçamento. Somente no caso do Plano Open Source não existe nenhum custo</em>.

<strong>Vou desenvolver os plugins dentro do tempo livre</strong> que tiver então os prazos serão negociados cuidadosamente para evitar maiores problemas. Para acompanhar todo esse serviço, estarei utilizando o Redmine, um gerenciador de projetos, por isso vejam ele aqui:

<a href="http://dev.rafaeldohms.com.br/">DMS Systems - Gerenciador de Tarefas</a>

Usem esta página [<a href="http://dev.rafaeldohms.com.br/wiki/wp-plugins/Open-Source_Plugin_Ideas">http://dev.rafaeldohms.com.br/wiki/wp-plugins/Open-Source_Plugin_Ideas</a>] para cadastrar suas ideias de plugins Open Source, ou este email [<a href="mailto:rafael+plugins@rafaeldohms.com.br">rafael+plugins@rafaeldohms.com.br</a>] para pedir orçamentos de plugins nos planos Pago e Combinado

<strong>Observação!</strong> É importante notar que cadastrar sua ideia não tras garantia de que seu plugin será escolhido e desenvolvido, tudo irá depender do meu tempo livre e da quantidade de plugins que apareça por ai.

</div>
<div id="st_tags"><a rel="tag" href="http://www.rafaeldohms.com.br/tag/php/pt/">PHP</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/plugin/pt/">plugin</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/wordpress/pt/">Wordpress</a></div>
<!-- google_ad_section_end -->

<hr />© Rafael Dohms for <a href="http://www.rafaeldohms.com.br">Rafael Dohms</a>, 2009. |
<a href="http://www.rafaeldohms.com.br/2009/03/11/desenvolvo-seu-plugin-para-wordpress/pt/">Permalink</a> |
<a href="http://www.rafaeldohms.com.br/2009/03/11/desenvolvo-seu-plugin-para-wordpress/pt/#comments">One comment</a>
Want more on these topics ? Browse the archive of posts filed under <a title="View all posts in Desenvolvimento" rel="category tag" href="http://www.rafaeldohms.com.br/category/dev/pt/">Desenvolvimento</a>,  <a title="View all posts in PHP" rel="category tag" href="http://www.rafaeldohms.com.br/category/php/pt/">PHP</a>,  <a title="View all posts in Wordpress" rel="category tag" href="http://www.rafaeldohms.com.br/category/wordpress/pt/">Wordpress</a>,  <a title="View all posts in plug-in" rel="category tag" href="http://www.rafaeldohms.com.br/category/wordpress/plug-in/pt/">plug-in</a>.
<div class="feedflare"><a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=vB57AcgT_nQ:NMheAHIDgRU:yIl2AUoC8zA"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=yIl2AUoC8zA" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=vB57AcgT_nQ:NMheAHIDgRU:YwkR-u9nhCs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=YwkR-u9nhCs" border="0" alt="" /></a> <a href="http://feeds2.feedburner.com/~ff/RafaelDohms?a=vB57AcgT_nQ:NMheAHIDgRU:qj6IDK7rITs"><img src="http://feeds2.feedburner.com/~ff/RafaelDohms?d=qj6IDK7rITs" border="0" alt="" /></a></div>
<img src="http://feeds2.feedburner.com/~r/RafaelDohms/~4/vB57AcgT_nQ" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/03/11/desenvolvo-seu-plugin-para-wordpress/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parceria com a IW2</title>
		<link>http://phpsp.org.br/2009/03/parceria-com-a-iw2/</link>
		<comments>http://phpsp.org.br/2009/03/parceria-com-a-iw2/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 09:00:44 +0000</pubDate>
		<dc:creator>Augusto Pascutti</dc:creator>
				<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://phpsp.org.br/?p=278</guid>
		<description><![CDATA[O PHPSP têm uma nova e importante parceira: IW2. A parceria com a IW2 não rende somente frutos ao PHPSP, mas sim a comunidade que ganhará com promoções e prêmios como hospedagem gratuita e descontos. O PHPSP era antes hospedado em uma das contas dos coordenadores em um host norte-americano, hoje nosso site é hospedado [...]]]></description>
			<content:encoded><![CDATA[<p>O PHPSP têm uma nova e importante parceira: <a href="http://iw2servers.com.br/" target="_blank">IW2</a>.</p>
<p>A parceria com a IW2 não rende somente frutos ao PHPSP, mas sim a comunidade que ganhará com promoções e prêmios como hospedagem gratuita e descontos. O PHPSP era antes hospedado em uma das contas dos coordenadores em um host norte-americano, hoje nosso site é hospedado nos brasileiríssimos servidores da IW2.</p>
<p>De uma semana para cá nosso site ficou mais rápido, e paulista ! Nada melhor do que o grupo de PHP de São Paulo ser hospedado em um host paulista. Aguardem novidades ! Lembrando mais uma vez que o site do PHPSP também é de vocês ! Se cadastrem e postem conteúdo !</p>
<p>Aproveitamos este espaço e agradecemos a IW2 pelo apoio e ótimo serviço prestado ! Desejamos sucesso a vocês !</p>
<p>PS: entre as novidades estão o PHP TestFest&#8217;09, um contest de programação, o próximo encontro do grupo e maior integração com os blogs da comunidade.</p>
<div class="wp-about-author-containter-top" style="background-color:#FFF;"><div class="wp-about-author-pic"><img alt='' src='http://0.gravatar.com/avatar/89de242e444d231e9928320af0417571?s=100&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;r=G' class='avatar avatar-100 photo' height='100' width='100' /></div><div class="wp-about-author-text"><h3><a href='http://phpsp.org.br/author/augusto/' title='Augusto Pascutti'>Augusto Pascutti</a></h3><p>Augusto Pascutti é desenvolvedor PHP a 5 anos, trabalhou em projetos Open Source como CakePHP, Zend Framework e Habari. É evangelista PHP e de boas práticas, Zend Certified Engineer para PHP 5, fundador/coordenador do PHPSP, host do PHPSPCast e headbanger nas horas vagas.</p><p><a href='http://www.augustopascutti.com' title='Augusto Pascutti'>Website</a> - <a href='http://phpsp.org.br/author/augusto/' title='More posts by Augusto Pascutti'>More Posts</a> </p></div></div>]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2009/03/parceria-com-a-iw2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>5 coisas que um programador deve saber</title>
		<link>http://www.augustopascutti.com/dev/5-coisas-que-um-programador-deve-saber</link>
		<comments>http://www.augustopascutti.com/dev/5-coisas-que-um-programador-deve-saber#comments</comments>
		<pubDate>Wed, 18 Feb 2009 12:00:01 +0000</pubDate>
		<dc:creator>Augusto Pascutti</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://phpsp.org.br/2009/02/5-coisas-que-um-programador-deve-saber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Magazine #6</title>
		<link>http://feeds.feedburner.com/~r/RafaelDohms/~3/520786115/</link>
		<comments>http://feeds.feedburner.com/~r/RafaelDohms/~3/520786115/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:33:58 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=465</guid>
		<description><![CDATA[Está disponível para download a sexta edição da PHP Magazine, esta edição conta com os seguintes tópicos:
# Um gerenciador de Downloads em PHP-GTK
por Pablo Dall’Oglio
Neste artigo iremos desenvolver um pequeno utilitário em PHP-GTK para baixar arquivos remotos. Assim como nos artigos anteriores, nosso objetivo não é desenvolver nenhuma ferramenta profissional, mas mostrar de forma didática [...]]]></description>
			<content:encoded><![CDATA[Está disponível para download a sexta edição da PHP Magazine, esta edição conta com os seguintes tópicos:

<strong>Um gerenciador de Downloads em PHP-GTK</strong>
<em>por Pablo Dall’Oglio</em>
Neste artigo iremos desenvolver um pequeno utilitário em PHP-GTK para baixar arquivos remotos. Assim como nos artigos anteriores, nosso objetivo não é desenvolver nenhuma ferramenta profissional, mas mostrar de forma didática como utilizar os recursos do PHP em conjunto com o GTK.

<strong>Upload seguro de arquivos usando FTP verificando vírus</strong>
<em>por Helton Eduardo Ritter</em>
Este artigo apresenta uma técnica não usual de fazer upload de arquivos para o servidor. Essa forma não garante, mas auxilia a segurança do servidor. Da maneira proposta, o daemon do apache não precisa ter permissão de gravação em um diretório ou arquivo em uma URL pública para fazer a transferência.

<strong>Mapeamento objeto-relacional usando PHP e MySQL</strong>
<em>por Alexsandro Assis</em>
Conceituar e demonstrar o desenvolvimento e uso de classes em PHP para efetuar o mapeamento objeto-relacional, visando padronização, produtividade e portalibilidade entre diferentes bancos de dados. Tornando, dessa forma, o uso de programação orientada a objetos transparente nas tarefas de manutenção de registros em banco de dados.

<strong>Mapas temáticos gerados com PHP</strong>
<em>por Raquel Deizério Souto</em>
Neste artigo, por meio de um exemplo prático, demonstraremos como programar em PHP para geração de mapas temáticos. Diversos sistemas de informações geográficas já foram desenvolvidos e oferecem o recurso de geração de mapas temáticos. Entretanto, o tempo gasto na aprendizagem do funcionamento de tais sistemas pode ser economizado quando seguimos os passos simples deste breve tutorial.

<strong>Integrando Ferramentas na construção de um calendário</strong>
<em>por Leandro Schwarz</em>
Este artigo introdutório visa abordar todos os passos na criação de um módulo de calendário. O artigo é voltado para o público iniciante, através do desenvolvimento de um calendário simples. Leitores mais experientes poderiam continuar o desenvolvimento para tornar o script um módulo integrado a um sistema de gerenciamento comercial.

<a href="http://www.phpmagazine.org.br/portal/index.php">Faça do download aqui</a>

<img src="http://feeds.feedburner.com/~r/RafaelDohms/~4/520786115" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/01/23/php-magazine-6/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Análise: Essential PHP Security</title>
		<link>http://feeds.feedburner.com/~r/RafaelDohms/~3/523365667/</link>
		<comments>http://feeds.feedburner.com/~r/RafaelDohms/~3/523365667/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 11:16:57 +0000</pubDate>
		<dc:creator>Rafael Dohms</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Livros]]></category>
		<category><![CDATA[Review/Análise]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.rafaeldohms.com.br/?p=468</guid>
		<description><![CDATA[Embora publicado em 2005, o livro &#8220;Essential PHP Security&#8221; trata de um assunto que até hoje é muito atual. Escrito por Chris Shiflett o livro trata de todos aspectos de segurança relacionados a uma aplicação em PHP, por isso ainda hoje seu conteúdo pode ser considerado atualizado e aplicável a qualquer situação do dia a [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start -->
<div id="HOTWordsTxt">

<img class="alignright size-full wp-image-470" title="phpseccover" src="http://www.rafaeldohms.com.br/wp-content/uploads/phpseccover.gif" alt="phpseccover" width="180" height="236" />Embora publicado em 2005, o livro “Essential PHP Security” trata de um assunto que até hoje é muito atual. Escrito por Chris Shiflett o livro trata de todos aspectos de segurança relacionados a uma aplicação em PHP, por isso ainda hoje seu conteúdo pode ser considerado atualizado e aplicável a qualquer situação do dia a dia de um desenvolvedor.

O livro possui uma forma muito leve e exemplificada de expor os diversos aspectos de segurança que são tratados. Assuntos estes que são muito bem expostos e claramente separados em capítulos, tratando desde forms até includes e segurança em ambientes compartilhados. Cada tópico é analisado com detalhe e dividido internamente por formas de se burlar/atacar a falha de segurança, com isso o livro se torna também uma fácil fonte de consulta onde é possível se ir direto ao capítulo que trata do aspecto que esta sendo codado e verificar as falhas que se deve prestar atenção. Além disso, o capitulo introdutório também trata do assunto de segurança de uma forma mais geral, como técnicas de análise de risco e conceitos como “Defense in Depth” que ajudam a ver segurança como um processo bem maior que analisar um único ponto de falha da sua aplicação.

Mesmo sendo de 2005 o livro trata de assuntos como XSS que no atual momento da web e seu uso de AJAX deve ser sempre analisado cuidadosamente em novos e antigos projetos. Além disso velhos amigos como “Session Hijacking” e “SQL Injection” são analisados sobre diferentes pontos de vista, alinhados a segmentos específicos de um site. Esta estrutura proporciona uma leitura relaxante e de ritmo agradável que pode ser facilmente encaixada em momentos de descontração ou nas salas de espera das ocasionais idas ao médico (pelomenos funcionou para mim).

O livro merece com certeza fazer parte do histórico (ou prateleira) de qualquer desenvolvedor, pelomenos para servir como ponto de reflexão, mesmo em um novo mundo onde cada vez mais Framework aparecem internalizando todos aspectos de segurança, mas como sempre digo, nos desenvolvedores temos sempre de saber o que ocorre por trás das cortinas.<strong></strong>

<strong>Essential PHP Security A Guide to Building Secure Web Applications</strong>

By Chris Shiflett
October 2005
Pages: 124
ISBN 10: 0-596-00656-X | ISBN 13: 9780596006563admin</div>
<div id="st_tags"><a rel="tag" href="http://www.rafaeldohms.com.br/tag/php/pt/">PHP</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/review/pt/">review</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/seguranca/pt/">Segurança</a>, <a rel="tag" href="http://www.rafaeldohms.com.br/tag/shiflett/pt/">shiflett</a></div>
<img src="http://feeds.feedburner.com/~r/RafaelDohms/~4/523365667" alt="" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://www.rafaeldohms.com.br/2009/01/26/analise-essential-php-security/pt/feed/pt/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Futuro do MySQL</title>
		<link>http://ivanrosolen.com/v3/2008/12/17/futuro-mysql/</link>
		<comments>http://ivanrosolen.com/v3/2008/12/17/futuro-mysql/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 02:22:17 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=122</guid>
		<description><![CDATA[Acompanho o &#8216;feed&#8217; do pessoal responsável pelo site MySQL Performance Blog e um deles chamou minha atenção.
Pensei em traduzir porém quem não sabe inglês, principalmente na área de TI, tem que se virar   
Link para o artigo 7 Reasons why MySQL Quality will never be the same
Para complementar, o Augusto Pascutti fez um post [...]]]></description>
			<content:encoded><![CDATA[Acompanho o ‘feed’ do pessoal responsável pelo site <a title="MySQL Performance Blog" href="http://www.mysqlperformanceblog.com/"><strong>MySQL Performance Blog</strong></a> e um deles chamou minha atenção.

Pensei em traduzir porém quem não sabe inglês, principalmente na área de TI, tem que se virar  <img class="wp-smiley" src="http://ivanrosolen.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" />

Link para o artigo <a title="&amp; Razões" href="http://www.mysqlperformanceblog.com/2008/12/10/7-reasons-mysql-quality-will-never-be-the-same/"><strong>7 Reasons why MySQL Quality will never be the same</strong></a>

Para complementar, o <strong><a title="Augusto Pascutti" href="http://www.augustopascutti.com/dev/mysql-51-ga">Augusto Pascutti</a></strong> fez um post sobre o assunto e concordo com sua opinião.

Conversamos sobre o assunto e acho que agora é estudar Postgres e SQL Lite.]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2008/12/17/futuro-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status Correios</title>
		<link>http://ivanrosolen.com/v3/2008/12/12/status-correios/</link>
		<comments>http://ivanrosolen.com/v3/2008/12/12/status-correios/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 05:52:23 +0000</pubDate>
		<dc:creator>Ivan</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[php-sp-blogs]]></category>
		<category><![CDATA[PHPSP]]></category>

		<guid isPermaLink="false">http://ivanrosolen.com/v3/?p=73</guid>
		<description><![CDATA[Meu amigo precisava de uma ajuda para recuperar os status que o Correios gera para as encomendas.
Lembrei que havia feito isso na última empresa que trabalhei e agora resolvi compartilhar.
Não é 100% garantido, pois eu leio via REGEX o source da página ok?
Após recuperar o source HTML da página do Correios via cURL ou file_get_contents, [...]]]></description>
			<content:encoded><![CDATA[Meu amigo precisava de uma ajuda para recuperar os status que o Correios gera para as encomendas.

Lembrei que havia feito isso na última empresa que trabalhei e agora resolvi compartilhar.

Não é 100% garantido, pois eu leio via <strong>REGEX</strong> o source da página ok?

Após recuperar o source HTML da página do Correios via <strong>cURL</strong> ou <strong>file_get_contents</strong>, utilizo a seguinte função para tratar o conteúdo e retornar um array contendo os dados do Correios.

<span id="more-50"></span>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32</pre>
</td>
<td class="code">
<pre class="php php"><span>&lt;?php</span>
 <span>/**
 * Retorna todos os status do Correios para ID enviado
 *
 * @param  string $id_correios ID do Correios
 * @return array  $array_retorno
 */</span>
<span>function</span> status_correios<span>(</span> <span>$id_correios</span> <span>)</span> <span>{</span>

    <span>$conteudo</span> <span>=</span> <span>file_get_contents</span><span>(</span><span>'http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&amp;P_TIPO=001&amp;P_COD_UNI='</span><span>.</span><span>$id_correios</span><span>)</span>;

    <span>if</span> <span>(</span> <span>empty</span><span>(</span><span>$conteudo</span><span>)</span> <span>)</span> <span>return</span> <span>false</span>;

    <span>$array_retorno</span> <span>=</span> <span>array</span><span>(</span><span>)</span>;

    <span>preg_match_all</span><span>(</span> <span>'/&lt;tr&gt;\s*&lt;td[^&gt;]*&gt;(.*)&lt;\/td&gt;\s*&lt;\/tr&gt;/'</span> <span>,</span> <span>$conteudo</span> <span>,</span> <span>$array_regex</span> <span>)</span>;

    <span>if</span> <span>(</span> <span>!</span><span>is_array</span><span>(</span><span>$array_regex</span><span>)</span> || <span>count</span><span>(</span><span>$array_regex</span><span>)</span> <span>&lt;=</span> <span>0</span> <span>)</span> <span>return</span> <span>false</span>;

    <span>foreach</span> <span>(</span> <span>$array_regex</span><span>[</span> <span>1</span> <span>]</span> <span>as</span> <span>$key</span> <span>=&gt;</span> <span>$linha</span> <span>)</span> <span>{</span>

        <span>$foo</span> <span>=</span> <span>explode</span><span>(</span> <span>'&lt;/td&gt;&lt;td&gt;'</span> <span>,</span> <span>$linha</span> <span>)</span>;

        <span>if</span> <span>(</span> <span>strip_tags</span><span>(</span> <span>$foo</span><span>[</span> <span>2</span> <span>]</span> <span>)</span> <span>)</span> <span>{</span>
            <span>$array_retorno</span><span>[</span><span>]</span> <span>=</span> <span>array</span><span>(</span> <span>strip_tags</span><span>(</span> <span>$foo</span><span>[</span> <span>0</span> <span>]</span> <span>)</span><span>,</span> <span>strip_tags</span><span>(</span> <span>$foo</span><span>[</span> <span>1</span> <span>]</span> <span>)</span><span>,</span> <span>strip_tags</span><span>(</span> <span>$foo</span><span>[</span> <span>2</span> <span>]</span> <span>)</span> <span>)</span>;
        <span>}</span>
    <span>}</span>

    <span>return</span> <span>$array_retorno</span>;
<span>}</span>

<span>?&gt;</span></pre>
</td>
</tr>
</tbody></table>
</div>
<strong><a title="Arquivo Exemplo de Status Correios" href="http://www.ivanrosolen.com/v3/wp-content/uploads/2008/12/correios_php.zip"><img class="size-full wp-image-93" title="Status Correios PHP" src="http://ivanrosolen.com/v3/wp-content/uploads/2008/12/php_icon2.png" alt="Status Correios PHP" width="32" height="32" align="middle" /></a> <a title="Arquivo Exemplo de Status Correios" href="http://www.ivanrosolen.com/v3/wp-content/uploads/2008/12/correios_php.zip">Baixar Código Fonte Completo</a></strong>

ps.: tentei colocar o código fonte completo aqui mas foi humanamente impossível.

Utilizei esse método pois tratava o array com os dados e armazenava em um banco de dados. Caso queria apenas exibir o <a title="Jonao Vagner" href="http://www.joaovagner.com.br/">João Vagner</a> me mostrou esse <a title="Status Correios RSS" href="http://standardista.com.br/?p=6">link</a>.

Dúvidas? Só enviar um email ou perguntar nos comentários.]]></content:encoded>
			<wfw:commentRss>http://ivanrosolen.com/v3/2008/12/12/status-correios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

