<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Andresa.NET</title>
	
	<link>http://blog.andresa.net</link>
	<description>Programação WEB com PHP e Fanta Mundo Tailândia!</description>
	<lastBuildDate>Thu, 10 Jun 2010 13:41:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Andresanet" /><feedburner:info uri="andresanet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Andresanet" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FAndresanet" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Imagens de plano de fundo na página inicial do Google</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/9gyyWa9vx7w/</link>
		<comments>http://blog.andresa.net/2010/06/10/imagens-de-plano-de-fundo-no-google/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 13:41:52 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Bing]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Imagens]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[novidade]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/2010/06/10/imagens-de-plano-de-fundo-no-google/</guid>
		<description><![CDATA[Tive uma surpresa muito interessante ao abrir a página inicial do Google hoje pela manhã. Agora, é possível alterar o plano de fundo da página inicial do mecanismo de busca. 
&#160; A novidade não me empolga muito pois raramente visito a página inicial do Google, já que uso o atalho da caixa de busca do [...]]]></description>
			<content:encoded><![CDATA[<p>Tive uma surpresa muito interessante ao abrir a página inicial do Google hoje pela manhã. Agora, é possível alterar o plano de fundo da página inicial do mecanismo de busca. </p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2010/06/google_plano_de_fundo.jpg"  rel="lightbox" rel="lightbox[roadtrip]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="google_plano_de_fundo" border="0" alt="google_plano_de_fundo" src="http://blog.andresa.net/wp-content/uploads/2010/06/google_plano_de_fundo_thumb.jpg" width="450" height="289" /></a>&#160; <br />A novidade não me empolga muito pois raramente visito a página inicial do Google, já que uso o atalho da caixa de busca do Opera. E por falar em Opera, o novo recurso parece estar habilitado para funcionar somente no IE, Chrome e Firefox.</p>
<p>Para alterar a imagem do plano de fundo, basta clicar no link “Alterar plano de fundo”, localizado na parte inferior esquerda da página.</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2010/06/google_planos_de_fundo.jpg"  rel="lightbox" rel="lightbox[roadtrip]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="google_planos_de_fundo" border="0" alt="google_planos_de_fundo" src="http://blog.andresa.net/wp-content/uploads/2010/06/google_planos_de_fundo_thumb.jpg" width="450" height="289" /></a></p>
</p>
<p>O mecanismo de busca da Microsoft, o Bing, já tinha imagens de plano de fundo desde o seu lançamento.</p>
<p>A novidade não vai mudar a vida de ninguém, mas taí, só para registrar.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Vv24y1ZNDt_m53Yrf5T0KQbA7ps/0/da"><img src="http://feedads.g.doubleclick.net/~a/Vv24y1ZNDt_m53Yrf5T0KQbA7ps/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Vv24y1ZNDt_m53Yrf5T0KQbA7ps/1/da"><img src="http://feedads.g.doubleclick.net/~a/Vv24y1ZNDt_m53Yrf5T0KQbA7ps/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/9gyyWa9vx7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2010/06/10/imagens-de-plano-de-fundo-no-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2010/06/10/imagens-de-plano-de-fundo-no-google/</feedburner:origLink></item>
		<item>
		<title>Google comemora o 30º aniversário do PAC-MAN</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/qAzPshUJJII/</link>
		<comments>http://blog.andresa.net/2010/05/21/google-comemora-30-aniversario-do-pacman/#comments</comments>
		<pubDate>Fri, 21 May 2010 20:07:12 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Bandai]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Namco]]></category>
		<category><![CDATA[PAC-MAN]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/2010/05/21/google-comemora-30-aniversario-do-pacman/</guid>
		<description><![CDATA[Hoje visitei a página inicial do Google e me deparei com uma grande surpresa! Estamos comemorando o 30º aniversário do PAC-MAN, lembra dele?
O PAC-MAN foi criado em 1980 pela empresa japonesa NAMCO (atualmente NAMCO BANDAI Holdings, a antiga NAMCO foi comprada pela BANDAI) e foi um sucesso praticamente instantâneo no mundo todo.
Para nossa surpresa, o [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Hoje visitei a página inicial do Google e me deparei com uma grande surpresa! Estamos comemorando o 30º aniversário do PAC-MAN, lembra dele?</p>
<p align="justify">O PAC-MAN foi criado em 1980 pela empresa japonesa NAMCO (atualmente <a href="http://en.wikipedia.org/wiki/Namco_Bandai_Holdings" target="_blank">NAMCO BANDAI Holdings</a>, a antiga NAMCO foi comprada pela BANDAI) e foi um sucesso praticamente instantâneo no mundo todo.</p>
<p align="justify">Para nossa surpresa, o Google colocou uma versão clássica do jogo no lugar da sua logomarca (até a musiquinha do jogo é a mesma das antigas!) que ficará disponível por 2 dias (Veja o jogo na imagem abaixo).</p>
<p align="justify"><a href="http://blog.andresa.net/wp-content/uploads/2010/05/googleaniversario30anospacman.jpg"  rel="lightbox" rel="lightbox[roadtrip]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="google-aniversario-30-anos-pac-man" border="0" alt="google-aniversario-30-anos-pac-man" src="http://blog.andresa.net/wp-content/uploads/2010/05/googleaniversario30anospacman_thumb.jpg" width="260" height="171" /></a> </p>
<p align="justify">É possível chegar até o nível 250 no jogo. A critério de curiosidade, eu não passei do 1º (não aprendi a jogar em 22 anos e não vai ser agora que vou conseguir =P)</p>
<p align="justify">Bons tempos aqueles em que nos divertíamos sem precisar de placas de vídeo&#160; super-avançadas e computadores de última geração</p>

<p><a href="http://feedads.g.doubleclick.net/~a/KZ_GrhYhOiZhgNa_FucWvY-z3ec/0/da"><img src="http://feedads.g.doubleclick.net/~a/KZ_GrhYhOiZhgNa_FucWvY-z3ec/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KZ_GrhYhOiZhgNa_FucWvY-z3ec/1/da"><img src="http://feedads.g.doubleclick.net/~a/KZ_GrhYhOiZhgNa_FucWvY-z3ec/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/qAzPshUJJII" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2010/05/21/google-comemora-30-aniversario-do-pacman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2010/05/21/google-comemora-30-aniversario-do-pacman/</feedburner:origLink></item>
		<item>
		<title>1º dia com ASP.NET e C# – Novos conceitos em programação web</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/jX6j2bPiZLo/</link>
		<comments>http://blog.andresa.net/2010/01/04/primeiro-dia-com-asp-net-e-c-sharp/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 19:10:56 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[ASP.NET e C#]]></category>
		<category><![CDATA[Aprendendo C#]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[conceitos]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/2010/01/04/primeiro-dia-com-asp-net-e-c-sharp/</guid>
		<description><![CDATA[Hoje meus estudos sobre .NET foram totalmente teóricos. Comecei a ler a introdução dos livros e instalei o Visual Studio 2008 Professional Edition¹ no meu notebook.
***
O que é o .NET
 O .NET é um conjunto de tecnologias da Microsoft para desenvolver aplicativos, que vão desde aplicações para o Windows a aplicativos WEB. A parte do [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje meus estudos sobre .NET foram totalmente teóricos. Comecei a ler a introdução dos livros e instalei o Visual Studio 2008 Professional Edition¹ no meu notebook.</p>
<p align="center">***</p>
<h2>O que é o .NET</h2>
<p><a href="http://blog.andresa.net/wp-content/uploads/2010/01/aspnet.png"  rel="lightbox" rel="lightbox[roadtrip]"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="aspnet" border="0" alt="aspnet" align="left" src="http://blog.andresa.net/wp-content/uploads/2010/01/aspnet_thumb.png" width="240" height="129" /></a> O .NET é um conjunto de tecnologias da Microsoft para desenvolver aplicativos, que vão desde aplicações para o Windows a aplicativos WEB. A parte do .NET utilizada para desenvolver aplicativos WEB é chamada de ASP.NET. Ainda vou descobrir como isso funciona<strong>²</strong>, contudo no livro <em>Beginning ASP.NET 3.5 in C# From Novice to Professional</em>, o autor explica que não é necessário misturar outros códigos com o HTML, como fazemos no PHP.</p>
<blockquote><p>Para dominar o ASP.NET, você precisa aprender como usar uma ferramenta de design avançado (Visual Studio), um toolkit de objetos (o .NET Framework), e uma linguagem de programação orientada a objetos (como C# 2008). Em conjunto, estes tópicos fornecem mais do que o suficiente para suprir as necessidades de qualquer desenvolvedor web iniciante (MACDONALD, 2007).</p>
</blockquote>
<p> <span id="more-354"></span><br />
<blockquote>
</blockquote>
<h3>1ª grande descoberta</h3>
<p>A minha primeira grande descoberta é que o .NET é independente de linguagem. Não, isso não quer dizer que você pode programar em qualquer linguagem, mas provavelmente na maioria delas. Pelo que deu pra perceber, esse é o grande “tchan” do .NET e realmente é algo inovador. A Microsoft me convenceu dessa vez.</p>
<p>Há 3 linguagens principais para as quais o Visual Studio já vem habilitado: C#, VB (Visual Basic) e J#. Para cada uma dessas linguagens há um compilador que traduz toda a sua programação para uma <strong><u>Linguagem Intermediária</u></strong>. É essa linguagem intermediária que realmente faz a coisa funcionar, então tanto faz qual foi a linguagem de programação que você utilizou. Além disso, você pode adicionar outras linguagens ao Visual Studio, basta instalar seus respectivos compiladores. Para ver uma lista atualizada das linguagens que podem ser utilizadas com .NET, <a href="http://www.dotnetpowered.com/languages.aspx" target="_blank">clique aqui.</a></p>
<p>O C# é a linguagem principal da plataforma .NET, e foi desenvolvida pela Microsoft exclusivamente para ela, baseando-se nas sintaxes do C e do Java. O fato de ela ser baseada nestas 2 linguagens faz com que a migração de um programador familiarizado com estas sintaxes seja bem mais simples, o que vai me ajudar bastante.</p>
<h3>Sobre os livros</h3>
<p>Gostei mais do livro <em>Beginning ASP.NET 3.5 in C# From Novice to Professional (Editora Apress)</em>, pois ele é mais objetivo. O o livro <em>Professional ASP.NET 3.5 In C# and VB</em> (editora WROX)&#160; tem o dobro do tamanho, e por isso enche muita lingüiça. Vide a introdução que conta a história do .NET de forma melosa e chupando a Microsoft (FAIL). Contudo, neste segundo livro não é abordado apenas o C# como também o VB, o que pode ser mais interessante caso você já esteja familiarizado com a segunda linguagem.</p>
<p>Se você for comprar um desses livros, com certeza compre o livro da editora APRESS, mas é sempre bom ter mais de um&#160; livro, pois é bem difícil encontrar um livro que possa suprir toda sua necessidade de conhecimento.</p>
<h3>Conclusão</h3>
<p>Bastante inovadora esta forma de trabalhar do .NET e deve ser bem mais fácil também. Digo mais fácil no sentido de requerer um nível menos avançado de programação, já que a tecnologia também se apóia em um toolkit de objetos e um editor visual específico, que devem funcionar mais ou menos da mesma forma que o Delphi.</p>
<p>Pelo que ambos os livros passaram, acredito que não será trabalhoso migrar para o C#.</p>
<p>No segundo dia, começarei a aprender a linguagem feita para o .NET: o C# (lê-se “C SHARP”).</p>
<p align="center">***</p>
<p>1. Eu não precisaria necessariamente utilizar o Visual Studio, mas ele é o aplicativo mais utilizado pelos desenvolvedores da área.&#160; <br />2. Não vou aprender agora, pretendo ir no ritmo do livro.</p>
<p>&#160;</p>
<h5>Referências Bibliográficas:</h5>
<p><strong>MACDONALDO, Matthew.</strong> Beginning ASP.NET 3.5 in C# From Novice to Professional 2nd Edition. Editora Apress, 2007.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/_Nrii9U2ZS9C8WuTT2Gbi0-cVsw/0/da"><img src="http://feedads.g.doubleclick.net/~a/_Nrii9U2ZS9C8WuTT2Gbi0-cVsw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_Nrii9U2ZS9C8WuTT2Gbi0-cVsw/1/da"><img src="http://feedads.g.doubleclick.net/~a/_Nrii9U2ZS9C8WuTT2Gbi0-cVsw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/jX6j2bPiZLo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2010/01/04/primeiro-dia-com-asp-net-e-c-sharp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2010/01/04/primeiro-dia-com-asp-net-e-c-sharp/</feedburner:origLink></item>
		<item>
		<title>Lição de Casa: 15 dias estudando ASP.NET com C#</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/Et41u8afZ58/</link>
		<comments>http://blog.andresa.net/2010/01/02/lio-de-casa-15-dias-estudando-asp-net-com-c/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 03:32:15 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[ASP.NET e C#]]></category>
		<category><![CDATA[Aprendendo C#]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/2010/01/02/lio-de-casa-15-dias-estudando-asp-net-com-c/</guid>
		<description><![CDATA[ Em 2009 perdi uma boa oportunidade de trabalho porque ainda não utilizo .NET, então decidi que essa seria a minha lição de casa para estas férias. 
Não, não estou traindo o PHP e muito menos os ideais do Open Source. Acredito que é imprescindível conhecer tudo o que se refere a sua área de [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><a href="http://blog.andresa.net/wp-content/uploads/2010/01/image.png"  rel="lightbox" rel="lightbox[roadtrip]"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.andresa.net/wp-content/uploads/2010/01/image_thumb.png" width="240" height="129" /></a> Em 2009 perdi uma boa oportunidade de trabalho porque ainda não utilizo .NET, então decidi que essa seria a minha lição de casa para estas férias. </p>
<p align="justify">Não, não estou traindo o PHP e muito menos os ideais do Open Source. Acredito que é imprescindível conhecer tudo o que se refere a sua área de trabalho, a minha é programação WEB e infelizmente a Microsoft faz parte dela.</p>
<p> <span id="more-351"></span>
<p align="justify"></p>
<p align="justify">Estarei relatando dia após dia a minha evolução e as minhas impressões sobre trabalhar com esta tecnologia, informando sobre as minhas descobertas e destacando os diferenciais, sejam eles pró ou contra.</p>
<p align="justify">Eu disse que serão 15 dias, mas podem ser mais ou menos do que isso, dependendo do meu interesse e de o quanto vou querer me aprofundar. Creio que os dias mais importantes serão os 5 primeiros, pois serão dias de “choques culturais” onde ainda estarei me acostumando com a forma de trabalhar e com a sintaxe da linguagem C#.</p>
<p>Meus materiais de estudo serão, além de pesquisas na internet, os livros <em>Beginning ASP.NET 3.5 in C# From Novice to Professional 2nd Edition</em> e <em>Professional ASP.NET 3.5 In C# and VB.</em></p>
<h3>Faça sua lição de casa também</h3>
<p>Aproveite estas férias e aprenda algo novo que possa lhe ajudar profissionalmente. </p>
<p>Se você ainda não fala inglês fluente, sugiro que se apresse em aprender, pois não há lugar nas grandes empresas para quem não fala inglês, isso sem contar que as tecnologias “nascem” em inglês, e você não pode ficar fora disso. Está sem dinheiro para pagar um curso? Bem, se você for do tipo que consegue aprender as coisas sozinho e consegue se concentrar para estudar diariamente por algumas horas consecutivas, eu recomendo o <a href="http://thepiratebay.org/torrent/4116213/Speedy_English_-_Completo_(Apostilas_legA_veis)" target="_blank">método Speedy English</a>. Se você não é do tipo que senta e estuda sozinho, se vire e vá para uma escola de inglês.</p>
<p>Se você é um programador fluente em inglês, aprenda outra linguagem, de preferência uma de um segmento totalmente diferente do seu, ou a concorrente de sua linguagem principal, assim como eu estou fazendo. Você nunca sabe o dia de amanhã.</p>
<p>Outra excelente pedida é se aprofundar na sua linguagem principal e tirar a certificação dela, caso você ainda não a possua. A certificação lhe fornece uma postura mais confortável como profissional, colocando-o num patamar superior aos demais.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ZItIva_JJyejlQVMBYPS9XHx4NU/0/da"><img src="http://feedads.g.doubleclick.net/~a/ZItIva_JJyejlQVMBYPS9XHx4NU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZItIva_JJyejlQVMBYPS9XHx4NU/1/da"><img src="http://feedads.g.doubleclick.net/~a/ZItIva_JJyejlQVMBYPS9XHx4NU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/Et41u8afZ58" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2010/01/02/lio-de-casa-15-dias-estudando-asp-net-com-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2010/01/02/lio-de-casa-15-dias-estudando-asp-net-com-c/</feedburner:origLink></item>
		<item>
		<title>“Fanta Mundo Tailândia de volta após quase 1 ano fora das prateleiras”</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/HPZ7CXLWA-c/</link>
		<comments>http://blog.andresa.net/2009/12/28/fanta-mundo-tailndia-de-volta-aps-quase-1-ano-fora-das-prateleiras/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 20:34:22 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Comunicados]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[fanta]]></category>
		<category><![CDATA[natal]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/2009/12/28/fanta-mundo-tailndia-de-volta-aps-quase-1-ano-fora-das-prateleiras/</guid>
		<description><![CDATA[Esse foi o presente de natal que pedi para o Papai Noel, mas como ele prefere tomar Coca-Cola, por enquanto me consolarei com a versão tradicional da amiga Fanta.
A verdadeira notícia é que após mais de meio ano de inatividade, estarei escrevendo bastante no blog e continuarei a responder dúvidas como antes. A faculdade estava [...]]]></description>
			<content:encoded><![CDATA[<p>Esse foi o presente de natal que pedi para o Papai Noel, mas como ele prefere tomar Coca-Cola, por enquanto me consolarei com a versão tradicional da amiga Fanta.</p>
<p>A verdadeira notícia é que após mais de meio ano de inatividade, estarei escrevendo bastante no blog e continuarei a responder dúvidas como antes. A faculdade estava me matando. Vocês poderão acompanhar minha pesquisa científica sobre uma nova tecnlogia que está assanhando muita gente por aí. Aguardem grandes novidades.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/isoUHyxc3SHYH0p4LYDggno4Ph8/0/da"><img src="http://feedads.g.doubleclick.net/~a/isoUHyxc3SHYH0p4LYDggno4Ph8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/isoUHyxc3SHYH0p4LYDggno4Ph8/1/da"><img src="http://feedads.g.doubleclick.net/~a/isoUHyxc3SHYH0p4LYDggno4Ph8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/HPZ7CXLWA-c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/12/28/fanta-mundo-tailndia-de-volta-aps-quase-1-ano-fora-das-prateleiras/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/12/28/fanta-mundo-tailndia-de-volta-aps-quase-1-ano-fora-das-prateleiras/</feedburner:origLink></item>
		<item>
		<title>Envio de dados com método POST usando AJAX e PHP</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/tIZqUcohVHQ/</link>
		<comments>http://blog.andresa.net/2009/05/20/envio-de-dados-com-metodo-post-usando-ajax-e-php/#comments</comments>
		<pubDate>Wed, 20 May 2009 14:53:51 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[envio de dados]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=273</guid>
		<description><![CDATA[
Esta seria a &#8220;versão em ajax&#8221; para a função POST() que escrevi em PHP no artigo &#8220;Envio de dados com PHP utilizando método POST sem usar formulário HTML&#8221;. Com este exemplo você poderá enviar dados utilizando o método POST para um arquivo  PHP, para que estes dados possam ser processados e retornar (ou não) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.andresa.net/wp-content/uploads/2009/05/ajax-icone.png" alt="AJAX" title="AJAX" width="60" height="150" class="alignright size-full wp-image-309" /></p>
<p>Esta seria a &#8220;versão em ajax&#8221; para a função POST() que escrevi em PHP no artigo <a href="http://blog.andresa.net/2009/02/11/envio-de-dados-com-php-utilizando-metodo-post-sem-usar-formulario-html/">&#8220;Envio de dados com PHP utilizando método POST sem usar formulário HTML&#8221;</a>. Com este exemplo você poderá enviar dados utilizando o método POST para um arquivo  PHP, para que estes dados possam ser processados e retornar (ou não) uma resposta a ser exibida na tela. Para isto, utilizaremos 2 funções simples desenvolvidas por mim e totalmente explicadas aqui.</p>
<p><span id="more-273"></span>Também mostrarei os 2 exemplos de envio, 1 utilizando formulário e outro utilizando links.</p>
<p><b>1. Arquivo &#8220;post.js&#8221;</b></p>
<p>Nada melhor do que ensinar comentando o código, então veja abaixo o arquivo post.js. Este arquivo contém as 2 funções para trabalhar com o AJAX. A primeira função, enviaAjax(), serve para enviar um formulário utilizando o método POST. Essa função irá criar uma URL (uma query string, pra ser mais exata) utilizando os nomes e os valores dos campos do formulário. </p>
<pre name="code" class="js">
/*
1. frmNome - Nome do formulário
2. url - arquivo para onde será enviado o POST
3. destino (opcional) - conteiner para onde ira a resposta
vinda do arquivo "url"
*/
function enviaAjax(frmNome, url, destino)
{
	f = document.getElementById(frmNome);
	query="";
	j=0;
	for(i=0; i < f.elements.length;i++)
	{
		if((f.elements[i].type=='radio' || f.elements[i].type=='checkbox' )&#038;&#038; !(f.elements[i].checked))
		{
			f.elements[i].value='';

			if(f.elements[i].value!='')
			{
				query += j==0 ? '' : '&#038;';
				query += f.elements[i].name + '=' + f.elements[i].value;
				j++;
			}
		}
		else
		{
			query += j==0 ? '' : '&#038;';
			query += f.elements[i].name + '=' + f.elements[i].value;
			j++;
		}
	}
	//chama a função postajax() para enviar os dados
	//ao arquivo .php que fará o processamento
	postajax(url, query, destino);
}
</pre>
<p>Depois de criar a query string, esta função chama a nossa segunda função, postajax(). Essa é a função responsável pelo truque de enviar a requisição para o servidor via POST e receber os dados retornados pela página .php que fez o processamento dos dados enviados. A resposta enviada pelo servidor será depositada no conteiner (geralmente uma DIV) informado no parâmetro "destino" da função anterior.</p>
<pre name="code" class="js">
function postajax(url, query, destino)
{
    var status = false;
    var tipo_conteudo = "application/x-www-form-urlencoded; charset=UTF-8";

	if(typeof destino !=='undefined')
		div_resposta = document.getElementById(destino);

    // Tenta criar objeto XMLHttpRequest NATIVO
    if (window.XMLHttpRequest) {
        requisicao = new XMLHttpRequest();
		requisicao.onreadystatechange=function()
		{
			if(requisicao.readyState==4)
			{
				if(typeof destino !=='undefined')
				{
					//Aqui vai o processamento a ser feito
					//quando o arquivo .php retornar o resultado
					/*
						Recebe a resposta e coloca ela no conteiner
						pêgo pela variável "destino"
					*/
					texto=unescape(requisicao.responseText.replace(/+/g," "));
					div_resposta.innerHTML=texto;
					div_resposta.style.visibility="visible";
					//exibe mensagem de sucesso na tela
					alert("Dados enviados com sucesso!");
				}
			}
		}
		//Abre a conexão
		requisicao.open("post", url, true);
		//Envia os cabeçalhos
		requisicao.setRequestHeader("Content-Type", tipo_conteudo);
		//Envia a requisicao
		requisicao.send(query);
		//Status da requisicao
		status = true;
    } //Senão, tenta criar objeto XMLHttpRequest ActiveX (Internet Explorer)
	else if (window.ActiveXObject)
	{
        requisicao = new ActiveXObject("Microsoft.XMLHTTP");
        if (requisicao)
		{
            requisicao.onreadystatechange=function()
			{
				if(requisicao.readyState==4)
				{
					if(typeof destino !='undefined')
					{
						//Aqui vai o processamento a ser feito
						//quando o arquivo .php retornar o resultado
						/*
							Recebe a resposta e coloca ela no conteiner
							pêgo pela variável "destino"
						*/
						texto=unescape(requisicao.responseText.replace(/+/g," "));
						div_resposta.innerHTML=texto;
						div_resposta.style.visibility="visible";
						//exibe mensagem de sucesso na tela
						alert("Dados enviados com sucesso!");
					}
				}
			}
			//Abre a conexão
            requisicao.open("post", url, true);
			//Envia os cabeçalhos
            requisicao.setRequestHeader("Content-Type", tipo_conteudo);
			//Envia a requisicao
            requisicao.send(query);
			//Status da requisicao
            status = true;
        }
    }

    return status;
}
</pre>
<p><b>2. Arquivo "exemplo_form.html"</b></p>
<p>Agora que já temos as duas funções que executam o truque, vamos ver o nosso primeiro exemplo, enviando um formulário. </p>
<pre name="code" class="html">
<html>
<head>

<!-- Importa funções do AJAX -->
<script src="post.js" type="text/javascript"></script>
</head>
<body>
<!-- Começa o formulário -->
<form id="form1" name="form1" method="post" action="">

    Nome:
<input name="teste1" type="text" id="teste1" />

    E-mail: 
<input name="teste2" type="text" id="teste2" />
<input type="button" name="btn" value="Enviar" onClick="enviaAjax('form1', 'processa_form.php', 'resultado');"/>
</form>

<!-- Termina o formulário -->

<!-- DIV onde será exibido o resultado do processamento -->
<div id="resultado"></div>

</body>
</html>
</pre>
<p>Acima temos um formulário HTML normal, e o nome e a id do formulário são "form1". Dentro do formulário, dois campos chamados "nome" e "email", e também um botão do tipo "button". Neste botão, no evento onclick, eu chamo a função enviaAjax('form', 'processa_form.php', 'resultado'), onde "form1" é a id do meu formulário, 'processa_form.php' é o arquivo de destino dos daddos e 'resultado' é a ID da DIV para onde o resultado do processamento será retornado. É essencial que este botão seja do tipo "button" e não "submit", pois o botão do tipo "submit" poderia ignorar a chamada da função enviaAjax() e simplesmente enviar o formulário normalmente, sem usar AJAX.</p>
<p>É no arquivo processa_form.php que você fará o que quiser com os dados do seu formulário. Para provar que ele realmente funciona, no final deste post, fiz um pacotinho com um exemplo onde os dados enviados pelo formulário são gravados em um arquivo chamado "log.txt", apenas para mostrar que realmenet funciona.</p>
<p><b>3. Arquivo "exemplo_link.html"</b></p>
<p>Podemos usar as mesmas funções para enviar esses dados utilizando simplesmente um link. O exemplo abaixo mostra um quiz onde uma pergunta sobre uma imagem *duvidosa* é feita, e o usuário deve clicar no link para responder. Abaixo dos links, aparecerá uma mensagem informando ao usuário se a resposta que ele informou está certa ou errada.</p>
<pre name="code" class="html">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script src="post.js" type="text/javascript"></script>
</head>

<body>
<center><img src="imagem.jpg" /><BR /></center>
<ol>
<li><a href="#" onclick="postajax('processa_link.php', 'resposta=circulo', 'resultado')">Isto é um círculo</a></li>
<li><a href="#" onclick="postajax('processa_link.php', 'resposta=quadrado', 'resultado')">Isto é um quadrado</a></li>
<li><a href="#" onclick="postajax('processa_link.php', 'resposta=viado', 'resultado')">Isto é um viado</a></li>
<li><a href="#" onclick="postajax('processa_link.php', 'resposta=bambi','resultado')">Isto é um torcedor do São Paulo</a></li>
</ol>
<div id="resultado" style=" background-color:#F36; padding:12px; visibility:hidden; display:block; width:700px; "></div>

</body>
</html>
</pre>
<p>Note que desta vez estou chamando a função postajax() diretamente, sem utilizar a enviaAjax(), pois esta só servia para criar uma query string a partir dos campos do formulário. Desta vez, eu mesma estou informando a query string (segundo parâmetro) a ser enviada para o arquivo "processa_link.php" (primeiro parâmetro). O resultado retornado aparecerá na div "resultado" (terceiro parâmetro), que fica posicionada no final da página.</p>
<a href="http://blog.andresa.net/wp-content/plugins/download-monitor/download.php?id=5" title="Baixado 234 vezes">Clique aqui para fazer o download completo contendo os 3 arquivos exibidos acima + os arquivos "processa_form.php" e "processa_link.php". (Baixado 234 vezes)</a>

<p><a href="http://feedads.g.doubleclick.net/~a/x9-Nk-UIEAkXHf54aFRiyB0HYmM/0/da"><img src="http://feedads.g.doubleclick.net/~a/x9-Nk-UIEAkXHf54aFRiyB0HYmM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/x9-Nk-UIEAkXHf54aFRiyB0HYmM/1/da"><img src="http://feedads.g.doubleclick.net/~a/x9-Nk-UIEAkXHf54aFRiyB0HYmM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/tIZqUcohVHQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/05/20/envio-de-dados-com-metodo-post-usando-ajax-e-php/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/05/20/envio-de-dados-com-metodo-post-usando-ajax-e-php/</feedburner:origLink></item>
		<item>
		<title>Internet Explorer 8: “Surpreendente”</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/buobLWmnhDE/</link>
		<comments>http://blog.andresa.net/2009/05/13/internet-explorer-8-final-surpreendente/#comments</comments>
		<pubDate>Wed, 13 May 2009 16:41:56 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=245</guid>
		<description><![CDATA[Depois de ver o Marcos defendendo 3 pênaltis contra o Sport na Ilha do Retiro, pensei que nada mais me surpreenderia. Isso até o momento em que chequei a lista das atualizações no meu Windows Vista há algumas horas atrás. Saiu a versão final do Internet Explorer 8 e tenho apenas uma palavra para ele: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/ie8-logo.png"  rel="lightbox[roadtrip]"><img class="alignleft size-full wp-image-263" title="ie8-logo" src="http://blog.andresa.net/wp-content/uploads/2009/05/ie8-logo.png" alt="ie8-logo" width="100" height="65" /></a>Depois de ver o Marcos defendendo 3 pênaltis contra o Sport na Ilha do Retiro, pensei que nada mais me surpreenderia. Isso até o momento em que chequei a lista das atualizações no meu Windows Vista há algumas horas atrás. Saiu a versão final do Internet Explorer 8 e tenho apenas uma palavra para ele: surpreendeu.<span id="more-245"></span></p>
<p>Para nós, desenvolvedores web, o Internet Explorer sempre foi um maldito fantasma que cismava em retornar e assombrar ainda mais nossas que ja são complicadas o suficiente, mas parece que isto está mudando. Posso até dizer que eles deveriam ter mudado o nome do navegador nesta versão pelo tamanho gigantesco da mudança. Com algumas inovações e muito mais segurança, vamos falar sobre o Internet Explorer 8.</p>
<p><strong>Algumas inovações</strong></p>
<p>Quando abrimos uma aba em branco, muitas opções interessantes aparecem:</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-nova-aba.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-253" title="Nova aba no Internet Explorer 8" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-nova-aba-350x218.jpg" alt="Nova aba no Internet Explorer 8" width="350" height="218" /></a></p>
<p>A primeira que me chamou a atenção foi a &#8220;Reopen Closed Tabs&#8221; que funciona de forma similar à lixeira do Opera. Ali aparecem os links das páginas para as últimas abas que você fechou. Isso ajuda muito pois é possível reabrir uma aba fechada acidentalmente. Ainda na tela da aba em branco, encontramos a única novidade realmente inovadora do Internet Explorer 8: o InPrivate:</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-in-private.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-254" title="Internet Explorer 8: InPrivate" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-in-private-350x218.jpg" alt="Internet Explorer 8: InPrivate" width="350" height="218" /></a></p>
<p>O InPrivate é um modo onde o Internet Explorer não salvará quaisquer dados da sua navegação no computador, e isso obviamente se refere a downloads, cache, histórico de páginas visitadas e senhas. As barras de ferramentas também são desativadas. Isso é simplesmente perfeito para quem quer navegar com segurança em um computador público ou onde outras pessoas têm acesso à máquina. Nos outros navegadores (pelo menos no Opera e no Firefox) já é possível excluir os dados da navegação automaticamente ao encerrar o navegador, mas isso só é possível se o usuário entrar nas configurações e marcar a opção adequada para isso. Obviamente, não é legal mexer nas configurações do navegador de outra pessoa, você não acha? Simplesmente clicar em um link e abrir o navegador em um modo de navegação privada, sem precisar configurar nada foi uma grande sacada, hein Microsoft! Essa eu tiro o chapéu.</p>
<p>Nas configurações, agora encontramos um menu chamado &#8220;Safety&#8221; e uma opção me chamou muito a atenção: &#8220;InPrivate Filtering&#8221; . Com ele é possível configurar as informações que os provedores poderão colher de nós quando visitamos os websites deles, tais como os tipos de websites que visitamos. Os provedores usam essas informações para traçar um perfil de usuário e, por exemplo, exibir propagandas de acordo com nossas preferências. Outro ponto para a Microsoft. Até onde eu sei, nunca vi um navegador fazer isso.</p>
<p>Uma outra melhoria muito útil é a pesquisa no histórico a partir da barra de endereços, o que já existe no Opera há muito tempo! Mas parabéns pra eles por perceberem o quão fabulosa foi essa idéia e por resolverem copiá-la.</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-pesquisa-historico.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-255" title="Internet Explorer 8: pesquisa no histórico" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-pesquisa-historico-350x126.jpg" alt="Internet Explorer 8: pesquisa no histórico" width="350" height="126" /></a></p>
<p><strong>Modo de compatibilidade</strong></p>
<p>É possível alternar para um modo de compatibilidade, onde é possivel exibir de maneira mais correta sites feitos para navegadores antigos. Isso corrige diversos problemas, como menus que não funciona, imagens fora do lugar, etc. Mais um pontinho pra eles.</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-modo-compatibilidade.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-258" title="Internet Explorer 8: Modo de compatibilidade" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-modo-compatibilidade-350x80.jpg" alt="Internet Explorer 8: Modo de compatibilidade" width="350" height="80" /></a></p>
<p><strong>A interface</strong></p>
<p>Como você pôde ver nas screenshots acima, o Internet Explorer está muito mais bonito e continua a usar tons de azul, sua marca registrada. Muito mais do que bonita, a interface dele está muito mais rápida, sem os delays que haviam na versão 7 quando eu abria uma aba ou clicava em algum menu.</p>
<p><strong>Bugs (como esperado de um produto vindo da Micro$oft)</strong></p>
<p>Imaginem qual foi a minha cara de surpresa ao me deparar com a seguinte cena:</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-orkut.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-256" title="Internet Explorer 8 não entra no Orkut!" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-orkut-350x218.jpg" alt="Internet Explorer 8 não entra no Orkut!" width="350" height="218" /></a></p>
<p>Sim! Não estou conseguindo utilizar o Orkut! E mesmo após limpar todo o cache, e muitos minutos depois tentando atualizar a página:</p>
<p><a href="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-orkut-2.jpg"  rel="lightbox[roadtrip]"><img class="aligncenter size-medium wp-image-257" title="Internet Explorer 8 não entra no Orkut de jeito nenhum!" src="http://blog.andresa.net/wp-content/uploads/2009/05/internet-explorer-8-orkut-2-350x218.jpg" alt="Internet Explorer 8 não entra no Orkut de jeito nenhum!" width="350" height="218" /></a></p>
<p>Seria esse um boicote da Micro$oft ao Google? Jamais saberemos, mas tem cara de coisa mal feita mesmo.</p>
<p>Também tenho algumas páginas com ícones .png com fundo transparente que estão sendo exibidos com serrilhado. Isso é um bug muito antigo que se extendeu até o Internet Explorer 6, sendo solucionado somente no 7, e agora deixaram ele escapar de novo. Que coisa feia, hein gente! E mesmo com o novo &#8220;modo de compatibilidade&#8221; ativado, continua exibindo errado.</p>
<p><strong>Muito mais veloz</strong></p>
<p>Ainda não fiz testes de velocidade, mas no uso de websites que usam ajax, vou pegar como exemplo o Gmail, o IE8 demonstrou claramente estar mais veloz que o Firefox, mas ainda perdendo para o Opera e o Google Chrome. O tempo de carregamento das imagens diminuiu de forma impressionante, é muito notável. Apenas abra uma página com muitas imagens e você vai perceber a diferença.</p>
<p><strong>Segurança: o foco da Microsoft</strong></p>
<p>Mais mudanças na área de segurança do que nas funcionalidades. O Internet Explorer 8 deixou bem claro que o foco da Microsoft nos seus novos produtos é a segurança, critério no qual sempre foi (e com razão) muito criticada. Todas as novas opções de segurança do Internet Explorer 8 por enquanto parecem funcionar perfeitamente e sanam as deficiências da versão anterior.</p>
<p>Bem, vamos ver até quando.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/l1NtwIupm0o8KsmEXUc85m_wGpg/0/da"><img src="http://feedads.g.doubleclick.net/~a/l1NtwIupm0o8KsmEXUc85m_wGpg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/l1NtwIupm0o8KsmEXUc85m_wGpg/1/da"><img src="http://feedads.g.doubleclick.net/~a/l1NtwIupm0o8KsmEXUc85m_wGpg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/buobLWmnhDE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/05/13/internet-explorer-8-final-surpreendente/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/05/13/internet-explorer-8-final-surpreendente/</feedburner:origLink></item>
		<item>
		<title>O poder das variáveis superglobais do PHP – Parte II</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/l35ifBu7P7w/</link>
		<comments>http://blog.andresa.net/2009/05/08/o-poder-das-variaveis-superglobais-do-php-parte-ii/#comments</comments>
		<pubDate>Fri, 08 May 2009 17:29:18 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=228</guid>
		<description><![CDATA[Nesta segunda parte do artigo, vamos trabalhar com as matrizes superglobais que contém informações sobre o ambiente, sobre o servidor, sobre a sessão e ainda veremos as versões ultrapassadas de todas as variáveis superglobais, e o porquê de não utilizá-las mais.


Acessando informações do ambiente e do servidor
Manipulando variáveis de sessão com $_SESSION
Versões ultrapassadas das variáveis [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-214" title="elephpant2" src="http://blog.andresa.net/wp-content/uploads/2009/04/elephpant2.png" alt="elephpant2" width="160" height="101" />Nesta segunda parte do artigo, vamos trabalhar com as matrizes superglobais que contém informações sobre o ambiente, sobre o servidor, sobre a sessão e ainda veremos as versões ultrapassadas de todas as variáveis superglobais, e o porquê de não utilizá-las mais.<span id="more-228"></span></p>
<p><br class="spacer_" /></p>
<ol>
<li><a href="#topico04">Acessando informações do ambiente e do servidor</a></li>
<li><a href="#topico5">Manipulando variáveis de sessão com $_SESSION</a></li>
<li><a href="#topico6">Versões ultrapassadas das variáveis superglobais</a></li>
</ol>
<p><br class="spacer_" /></p>
<p><strong><a name="topico04"></a>1. Acessando informações do ambiente e do servidor</strong></p>
<p>Usando os vetores associativos $_SERVER e $_ENV podemos, respectivamente, obter dados do servidor e do ambiente. Vamos começar com os valores contidos em $_SERVER.</p>
<p>$_SERVER é um vetor que contém diversas informações sobre o servidor onde o arquivo está sendo executado, como caminhos, CHARSET, idioma, informações sobre o webserver, etc. Como este vetor é preenchido pelo webserver, algumas informações podem ser omitidas, ou podem haver informações a mais das que eu estarei exibindo para vocês. Abaixo, as principais informações fornecidas pelo meu servidor local:</p>
<p><strong>HTTP_USER_AGENT</strong></p>
<p>Contém informações sobre a máquina do usuário que requisitou a página (navegador e Sistema Operacional). Para mim, a informação é a seguinte: <em>Opera/9.64 (Windows NT 6.0; U; pt-BR) Presto/2.1.1</em></p>
<p><strong>HTTP_HOST</strong></p>
<p>Nome do servidor para o qual foi feita a requisição. No meu caso, <em>&#8220;localhost&#8221;.</em></p>
<p><strong>HTTP_ACCEPT</strong></p>
<p>Se a requisição contiver um cabeçalho, este índice terá o seu valor. O valor que eu obtive, já que eu não coloquei nenhum cabeçalho no meu arquivo, foi o seguinte: <em>text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1</em></p>
<p><strong>HTTP_ACCEPT_LANGUAGE</strong></p>
<p>Esse conteúdo também vem do cabeçalho, referindo-se à linguagem do documento. Como não informei nenhum cabeçalho usando header(), o valor para mim foi <em>pt-BR,pt;q=0.9,en;q=0.8 </em></p>
<p><strong>HTTP_ACCEPT_CHARSET</strong></p>
<p>Charset da página, se informado no cabeçalho. Novamente, eu não informei, e o padrão para meu webserver é: <em>iso-8859-1, utf-8, utf-16, *;q=0.1</em></p>
<p><strong>HTTP_COOKIE</strong></p>
<p>Exibe as informações do cookie da sessão atual com o servidor.</p>
<p><strong>SystemRoot</strong></p>
<p>Exibe o caminho para o diretório root do sistema operacional. Como estou usando o Windows Vista Home Premium, o caminho exibido é &#8220;C:/Windows&#8221;</p>
<p><strong>SERVER_SOFTWARE</strong></p>
<p>Exibe o nome e versão do webserver instalado no servidor, bem como a versão do PHP que ele está executando. Estou usando o Apache com o PHP 5.2.8 e o valor para este índice é &#8220;Apache/2.2.11 (Win32) PHP/5.2.8&#8243;.</p>
<p><strong>SERVER_NAME</strong></p>
<p>Nome do servidor onde o Webserver está instalado. No meu caso, é o &#8220;localhost&#8221;. No servidor onde está este blog, o resultado para o nome do servidor seria &#8220;andresa.net&#8221;</p>
<p><strong>SERVER_ADDR</strong></p>
<p>Endereço IP do servidor onde o webserver (no meu caso, o Apache) está instalado junto ao PHP.</p>
<p><strong>SERVER_PORT</strong></p>
<p>Porta padrão do servidor para requisições HTTP. A porta padrão do Apache é a porta 80.</p>
<p><strong>REMOTE_ADDR</strong></p>
<p>Endereço IP do usuário que está acessando o arquivo.</p>
<p><strong>DOCUMENT_ROOT</strong></p>
<p>Caminho padrão para a pasta raiz da navegação no webserver. No Apache, é o caminho completo para o famoso diretório &#8220;www&#8221;, que é onde todos os arquivos do site devem ser postos.<br />
<strong><br />
SCRIPT_FILENAME</strong></p>
<p>Caminho absoluto completo para o arquivo .php em execução.</p>
<p><strong>SERVER_PROTOCOL</strong></p>
<p>Versão do protocolo que está sendo utilizado na requisição.</p>
<p><strong>REQUEST_METHOD</strong></p>
<p>Método pelo qual o arquivo foi requisitado. Pode ser GET ou POST, como visto na primeira parte deste artigo.</p>
<p><strong>QUERY_STRING</strong></p>
<p>A Query String refere-se às variáveis passadas via GET logo após o nome do arquivo .php. Por exemplo, para a seguinte URL:</p>
<p>www.exemplo.com.br/site/index.php?modulo=noticias&amp;id=1</p>
<p>a query_string é &#8220;modulo=noticias&amp;id=1&#8243;.</p>
<p><strong>REQUEST_URI</strong></p>
<p>A URI é composta do nome do servidor + caminho relativo para o arquivo requisitado + query string. Por exemplo, para a seguinte URL:</p>
<p>www.exemplo.com.br/site/index.php?modulo=noticias&amp;id=1</p>
<p>O REQUEST_URI será &#8220;/site/index.php?modulo=noticias&amp;id=1&#8243;.</p>
<p><strong>PHP_SELF</strong></p>
<p>Caminho relativo para o arquivo .php que está sendo executado. Por exemplo, para a url &#8220;www.exemplo.com.br/site/index.php?modulo=noticias&amp;id=1&#8243;, o PHP_SELF será &#8220;/site/teste.php&#8221;</p>
<p><strong>REQUEST_TIME</strong></p>
<p>Timestamp representando o momento exato da requisição.</p>
<p><br class="spacer_" /></p>
<p>Caso precise exibir todos os valores contidos em $_SERVER no seu servidor, crie um arquivo .php e use o seguinte código:</p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
print_r($_SERVER);
</pre>
<p>Para imprimir valores individualmente ou manipulá-los, apenas coloque o índice desejado no vetor $_SERVER. Ex:</p>
<pre name="code" class="php">
echo $_SERVER['PHP_SELF'];
</pre>
<p><strong><a name="topico5"></a>2. Manipulando sessões com o $_SESSION e $_COOKIE</strong></p>
<p>Quando você vai ao massagista (você já foi? eu nunca fui XD), o tempo em que você entra em contato com ele e desfruta dos serviços dele, até o momento ao qual você sai do local do atendimento dele, é chamado de &#8220;sessão&#8221;. Sessão portanto é o nome dado a um intervalo de tempo no qual você está recebendo (ou fornecendo) um determinado serviço. Em se tratando de aplicações WEB com PHP, é quase a mesma coisa: a sessão é dada como o espaço de tempo em que o usuário está interagindo com a aplicação, desde o momento em que ele visitou a primeira página do site até o momento em que ele fechar o navegador dele. Contudo, as sessões no PHP possuem outras habilidades especiais. A partir do momento em que uma sessão entre o programa e o usuário é iniciada, é possível guardar dados do usuário, e esses dados podem ser únicos, podendo ser uma forma de diferenciar o usuário e lembrar-se dele e de suas preferências no site.</p>
<p>Cookies são (se você já sabe, pode pular para o próximo parágrafo deste texto =D) pequenos arquivos de texto que podem ser armazenados no cache do navegador do usuário. Esses arquivos têm como objetivo guardar pequenas informações para que estas sejam relembradas da próxima vez em que o usuário visitar o site. Um cookie tem um tempo de vida definido pelo programador da aplicação, mas também pode ser excluído manualmente pelo usuário. Os cookies são indispensáveis quando se trata do uso de sessões, já que sem eles, a sessão é simplesmente destruída assim que o navegador é fechado. A seguir, veremos como ambos trabalham em conjunto.</p>
<p>Quando uma sessão é iniciada, uma identificação única (ID) é criada para ela, permitindo assim associar um único usuário a uma única sessão. Para iniciar uma sessão no PHP, usamos a seguinte função:</p>
<pre name="code" class="php">
session_start();
</pre>
<p>Essa função não possui parâmetros, portanto, as configurações da sessão devem ser feitas antes dela ser iniciada. Uma sessão pode ter um nome, e este é definido antes de iniciarmos a sessão, como você pode ver abaixo:</p>
<pre name="code" class="php">session_name('seusite');
session_start();
</pre>
<p>Também é possível definir a quantidade de tempo que o cache da sessão permanecerá no servidor onde o site está hospedado. Esse limite de tempo representa o tempo de vida da sessão. Da mesma forma, temos que definir a quantidade de tempo que o cookie da sessão permanecerá vivo na máquina do usuário:</p>
<pre name="code" class="php">/*
Tempo de vida do cache da sessão
em MINUTOS */

//o login será válido por 2 dias
$dias=2;
//Sessão válida por 2 dias
session_cache_expire(3600*24*$dias);

//Cookie válido por 2 dias
session_set_cookie_params(3600 * 60*24*$dias, "/");

//Nome da sessão
session_name('seusite');
//Inicia a sessão
session_start();
</pre>
<p>Caso o valor de $dias seja definido como 0 (zero), a sessão &#8220;morrerá&#8221; quando o navegador do usuário for fechado.<br />
Agora que possuímos a sessão aberta, podemos gravar dados nas &#8220;variáveis de sessão&#8221;, da seguinte forma:</p>
<pre name="code" class="php">
session_name("seusite");
session_start();

$_SESSION['usuario']="admin";
$_SESSION['nome']="Andresa Martins";
$_SESSION['sexo']="a";

session_write_close();

//vai imprimir "Seja bem-vinda, Andresa Martins";
echo "Seja bem-vind".$_SESSION['sexo'].", ".$_SESSION['nome'].".";
</pre>
<p>Agora você gravou uma sessão, e o PHP associa a sessão ao cookie com o nome &#8220;seusite&#8221;. Se você usar o comando echo em $_COOKIE['seusite'], ele irá imprimir na tela a id da sessão.</p>
<p>O principal motivo de utilizarmos sessões no PHP é permitir ao usuário &#8220;fazer login&#8221; no site e ter acesso a conteúdos restritos. Esta matéria ficaria muito extensa para se escrever nas páginas, portanto criei um exemplo de sistema de cadastro e login utilizando sessões. Ele está totalmente explicado nos comentários, e, se você estudou corretamente a primeira parte deste artigo, vai entender perfeitamente o código todo.</p>
<p style="text-align: center;"><strong>Clique aqui para baixar o <a class="downloadlink" href="http://blog.andresa.net/wp-content/plugins/download-monitor/download.php?id=4" title=" downloaded 91 times" >Exemplo de sistema de cadastro e login com sessões e cookies (91)</a>.</strong></p>
<p><strong><a name="topico6"></a>3.Versões ultrapassadas das variáveis superglobais</strong></p>
<p>Você já deve ter visto por aí variáveis com a sintaxe $HTTP_GET_VARS['nome_da_variavel']. Se não viu, ótimo, mas é bom aprender para o caso de pegar um programa antigo para mexer. Hoje, para acessar valores externos, nós usamos as matrizes superglobais, como já visto neste artigo. Contudo, antes da versão 4.1.0 do PHP, eram usadas as variáveis pré-definidas, e elas possuem a seguinte sintaxe:</p>
<p><strong><span style="color: #99cc00;">$HTTP_XXX_VARS</span></strong></p>
<p>onde XXX pode ser GET, POST, SERVER, SESSION, entre outros, exatamente como fazemos hoje com as matrizes superglobais, que são definidas da seguinte forma:</p>
<p><strong><span style="color: #99cc00;">$_XXX</span></strong></p>
<p>No PHP 5 as variáveis pré-definidas são desativadas por padrão pois são obsoletas, mas você pode ativá-las no php.ini, mudando register_long_arrays para &#8220;On&#8221;. No PHP6 o suporte a elas já foi totalmente removido, portanto, nem pense em usá-las agora.</p>
<p>Embora pareça que a diferença está somente na nomenclatura, as variáveis pré-definidas possuem uma diferença muito importante para as superglobais. Estas últimas, como o próprio nome já diz, são globais em qualquer lugar do escopo do programa, mesmo dentro de funções ou classes. As pré-definidas NÃO são globais, portanto, você deve definí-las como globais para poder usar seus valores dentro de uma função (a não ser que o register_globals esteja ativado). Observe o exemplo abaixo:</p>
<pre name="code" class="php">
/*
URL da requisição:

http://localhost/teste.php?nome=Andresa

*/
function mostrar_get()
{
	echo $HTTP_GET_VARS['nome'];
}

function mostrar_get2()
{
	echo $_GET['nome']
}
mostrar_get();
mostrar_get2();
</pre>
<p>A primeira função retornará um erro, já que a variável $HTTP_GET_VARS não existe dentro da função, somente fora dela. Já a segunda função irá imprimir &#8220;Andresa&#8221; na tela, pois $_GET é global em todo o escopo de variáveis. Para funcionar corretamente com o $HTTP_GET_VARS, seria necessário declará-lo como global, da seguinte forma:</p>
<pre name="code" class="php">

function mostrar_get()
{
	global $HTTP_GET_VARS;
	echo $HTTP_GET_VARS['nome'];
}

mostrar_get();
</pre>
<p><strong>IMPORTANTE: </strong>se você estiver usando uma versão do PHP acima de 4.1.0 e quiser testar esses códigos acima, não se esqueça de habilitar a opção register_long_arrays no php.ini, como dito acima.</p>
<p>
<p>Esta foi a segunda parte e o fim deste artigo. Espero que lhes tenha sido útil. Escrevi ele inspirada pelo meu amigo Vinícius Assi, que está fazendo um TCC na área de WEB, já estamos no meio do ano, e ele ainda não sabe nadinha de programação =)</p>
</p>
<p>Estuda, Vinícius! (e vocês também, queridos leitores ^__^)</p>

<p><a href="http://feedads.g.doubleclick.net/~a/0_S5BRmCf0vJKEQ4obdKChYbAvk/0/da"><img src="http://feedads.g.doubleclick.net/~a/0_S5BRmCf0vJKEQ4obdKChYbAvk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0_S5BRmCf0vJKEQ4obdKChYbAvk/1/da"><img src="http://feedads.g.doubleclick.net/~a/0_S5BRmCf0vJKEQ4obdKChYbAvk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/l35ifBu7P7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/05/08/o-poder-das-variaveis-superglobais-do-php-parte-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/05/08/o-poder-das-variaveis-superglobais-do-php-parte-ii/</feedburner:origLink></item>
		<item>
		<title>O poder das variáveis superglobais do PHP – Parte I</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/XIoRjwVeQtg/</link>
		<comments>http://blog.andresa.net/2009/04/28/o-poder-das-variaveis-superglobais-do-php-parte-i/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 18:04:23 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=123</guid>
		<description><![CDATA[Um dos aspectos mais interessantes no PHP sem dúvida são suas variáveis superglobais. Elas são acessíveis em qualquer script PHP e em qualquer lugar do escopo de variáveis. Elas na verdade são vetores (arrays) predefinidos que provém diversos tipos de informações. Vamos estudá-las e aprender a utilizá-las corretamente, de forma a melhorar e agilizar nosso [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-214" title="elephpant2" src="http://blog.andresa.net/wp-content/uploads/2009/04/elephpant2.png" alt="elephpant2" width="160" height="101" />Um dos aspectos mais interessantes no PHP sem dúvida são suas variáveis superglobais. Elas são acessíveis em qualquer script PHP e em qualquer lugar do escopo de variáveis. Elas na verdade são vetores (arrays) predefinidos que provém diversos tipos de informações. Vamos estudá-las e aprender a utilizá-las corretamente, de forma a melhorar e agilizar nosso modo de programar.<span id="more-123"></span></p>
<p>Este artigo será dividido em 2 partes, como mostrado a seguir:</p>
<p><strong>Parte I:</strong></p>
<ol>
<li><a href="#tabela">Tabela das variáveis superglobais do PHP</a></li>
<li><a href="#2-analisando">Analisando a entrada de dados do usuário com variáveis superglobais</a></li>
<li><a href="#topico03">Usando $GLOBALS para acessar variáveis do escopo global</a></li>
</ol>
<p><strong>Parte II:</strong></p>
<ol>
<li>Acessando informações do ambiente e do servidor</li>
<li>Manipulando variáveis de sessão com $_SESSION</li>
<li>Versões ultrapassadas das variáveis superglobais</li>
</ol>
<p>Por agora, vamos começar com a Parte I deste artigo.</p>
<p><a name="tabela"></a><strong><span style="font-size: small;">1. Tabela das variáveis superglobais do PHP</span></strong></p>
<table style="width: 500px; height: 286px;" border="0">
<tbody>
<tr style="background-color: #b4e14a;">
<td><strong>Variável</strong></td>
<td><strong>Descrição</strong></td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$GLOBALS</td>
<td>Permite acessar qualquer variável que esteja no escopo global do nosso script PHP. As chaves de $GLOBALS devem ter o mesmo nome da variável que se deseja acessar.</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_SERVER</td>
<td>Exibe uma ampla gama de informações sobre o servidor, tais como cabeçalhos, caminhos e localização dos scripts.</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_GET</td>
<td>Fornece o acesso às variáveis HTTP enviadas pelo usuário através da URL. A chave de $_GET deve ser o nome da variável contida na URL que se deseja acessar.</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_POST</td>
<td>Fornece o acesso às variáveis HTTP enviadas pelo usuário fazendo uso de um formulário com método POST. A chave de $_POST deve ser o nome da variável contida no formulário enviado que se deseja acessar.</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_COOKIE</td>
<td></td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_REQUEST</td>
<td>Por padrão, contém acesso aos valores contidos em $_GET, $_POST e $_COOKIE</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_SESSION</td>
<td>Este array superglobal tem a habilidade de permitir que você acesse as variáveis de sessão do servidor, criadas na sessão ou login do usuário com seu script PHP.</td>
</tr>
<tr>
<td style="background-color: #f2f2f2;">$_ENV</td>
<td>Este é um vetor associativo que contém em cada uma de suas chaves informações de ambiente</td>
</tr>
</tbody>
</table>
<p><a name="2-analisando"></a><strong>2. Analisando a entrada de dados do usuário com variáveis superglobais</strong></p>
<p>As variáveis $_GET, $_POST e $_REQUEST servem para tratar os dados enviados pelo usuário via URL ou por um fomrulário. $_GET trata as variáveis enviadas pela url (método GET) e $_POST as enviadas por um formulário (método POST). $_REQUEST possui uma função muito especial: ela contém os valores de $_GET, $_POST e $_COOKIE, respeitando esta ordem de precedência.</p>
<p>$_REQUEST não é tratada como uma referência, mas sim como uma cópia de $_GET, $_POST e $_COOKIE, portanto, alterar o valor de $_GET['nome'] durante a execução do programa não irá alterar o valor de $_REQUEST['nome']. Veja um exemplo abaixo:</p>
<p>URI da requisição ao servidor: <a href="http://www.andresa.net/exemplo.php?nome=Andresa&amp;time=Palmeiras">http://www.andresa.net/exemplo.php?nome=Andresa&amp;time=Palmeiras</a></p>
<pre name="code" class="php">$_GET['nome']="Richarlyson";

//vai imprimir "Meu nome é Andresa e meu time é o Palmeiras
echo'Meu nome é' . $_REQUEST['nome']. ' e meu time é o ' . $_REQUEST['time'];

//vai imprimir "O Richarlyson não é gay, seus chatos =("
echo 'O ',$_GET['nome'],' NÃO É GAY, seus chatos =(';
</pre>
<p>NOTA: O operador de concatenação de string do PHP é o &#8216; . &#8216; (ponto), mas você também pode utilizar a &#8216; , &#8216; (vírgula). Note que no primeiro comando echo() eu usei o ponto e no segundo a vírgula. Ambos devem funcionar normalmente.</p>
<p>Como você já viu, com $_GET nós pegamos os dados vindos da URL. Quando variáveis são enviadas pelo formulário usando o método POST, as variáveis só são acessíveis utilizando $_POST ou $_REQUEST. Da mesma maneira, se eu modificar o valor de $_POST, nada será alterado em $_REQUEST.</p>
<p><P>O $_POST é usado para trabalhar com variáveis enviadas via POST por um formulário em HTML. Caso você ainda não saiba usar formulários HTML junto com o PHP, então faça o download de <a class="downloadlink" href="http://blog.andresa.net/wp-content/plugins/download-monitor/download.php?id=3" title=" downloaded 95 times" >Exemplo de formulário HTML usando método POST com PHP (95)</a></p>
<p><br class="spacer_" /></p>
<p><strong><a name="topico03"></a>3. Usando $GLOBALS para acessar variáveis do escopo global</strong></p>
<p>Assim como todas (todas?) as linguagens, o PHP também diferencia as variáveis através do escopo. Veja no exemplo abaixo:</p>
<pre name="code" class="php">$fruta="Maçã";

function mostrarFruta()
{
     $fruta="uva";
     return $fruta;

}
//Imprime "Maçã";
echo $fruta;
//Imprime "uva"
echo mostrarFruta();
</pre>
<p>Note que dentro da função mostrarFruta(), a variável $fruta tem um valor, e fora da função, no escopo global, ela possui outra. Mas e se eu precisar acessar uma variável que esteja fora da função? Para executar essa tarefa há 2 maneiras, e uma delas e com uma variável super global. Veja abaixo:</p>
<pre name="code" class="php">$fruta="maçã";

function mostrarFruta1()
{
	global $fruta;
	echo $fruta;
}

function mostrarFruta2()
{
	$fruta="uva";
	echo $GLOBALS['fruta'];
	echo $fruta;
}
//Imprime "maçã"
mostrarFruta1();

//Imprime "maçã" e depois "uva"
mostrarFruta2();
</pre>
<p>Os dois exemplos funcionam para o meu propósito. Na primeira, é utilizada a variável $fruta do escopo global até o fim da função, enquanto na segunda, o valor global só é utilizado no momento em que eu uso o $GLOBALS.</p>
<p>Vamos ficando por aqui, mas a segunda parte do artigo já está praticamente pronta! Aguardem e não se esqueçam: comentem!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tMPNeU4eDIyN5OBbxOCVhZ_Fzc8/0/da"><img src="http://feedads.g.doubleclick.net/~a/tMPNeU4eDIyN5OBbxOCVhZ_Fzc8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tMPNeU4eDIyN5OBbxOCVhZ_Fzc8/1/da"><img src="http://feedads.g.doubleclick.net/~a/tMPNeU4eDIyN5OBbxOCVhZ_Fzc8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/XIoRjwVeQtg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/04/28/o-poder-das-variaveis-superglobais-do-php-parte-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/04/28/o-poder-das-variaveis-superglobais-do-php-parte-i/</feedburner:origLink></item>
		<item>
		<title>Avatares globalmente reconhecidos com o Gravatar</title>
		<link>http://feedproxy.google.com/~r/Andresanet/~3/DBJu3a-BEXE/</link>
		<comments>http://blog.andresa.net/2009/04/20/avatares-globalmente-reconhecidos-com-o-gravatar/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 19:33:52 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=195</guid>
		<description><![CDATA[Você já viu que alguns comentários daqui deste blog têm avatares personalizados mesmo sem ter qualquer tipo de cadastro de usuário? Tirando o Andresa.net, você já notou que isso acontece em vários outros blogs também? E só o seu comentário aparece com a carinha de um monstrinho, não é? Os seus problemas acabaram, pois esse [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.andresa.net/wp-content/uploads/2009/04/logo-gravatar.gif"  rel="lightbox[roadtrip]"><img class="size-full wp-image-198 alignright" style="margin-left: 3px; margin-right: 3px;" title="Logo do Gravatar" src="http://blog.andresa.net/wp-content/uploads/2009/04/logo-gravatar.gif" alt="Logo do Gravatar" width="106" height="106" /></a>Você já viu que alguns comentários daqui deste blog têm avatares personalizados mesmo sem ter qualquer tipo de cadastro de usuário? Tirando o Andresa.net, você já notou que isso acontece em vários outros blogs também? E só o seu comentário aparece com a carinha de um monstrinho, não é? Os seus problemas acabaram, pois esse recurso é feito utilizando um sistema chamdo <a href="http://www.gravatar.com" target="_blank">Gravatar</a>, que permite que você tenha um avatar global para todos os sites e blogs que você visitar e que tenham suporte ao sistema do Gravatar.<span id="more-195"></span>O sistema do gravatar é muito simples e requer apenas que o usuário se cadastre em <a href="http://www.gravatar.com" target="_blank">www.gravatar.com</a>, informe o seu endereço de e-mail e a sua imagem. Cada vez que um comentário for feito usando este endereço de e-mail, o seu avatar automaticamente aparecerá no seu comentário. Obviamente, você pode alterar sua imagem de cadastro no sistema do Gravatar e ela será alterada em todos os comentários que você já fez.</p>
<p>Também é possível cadastrar vários endereços de e-mail e utilizar o mesmo avatar com eles, da mesma forma é possível utilizar avatares diferentes para cada um deles.</p>
<p>Sistemas de blog como o Wordpress já vem com o Gravatar ativado por padrão. <a href="http://pt.gravatar.com/site/implement" target="_blank">Nesta página aqui </a>há uma grande lista de plugins para vários sistemas, incluindo famosos como Joomla, Wordpress, IP.Board e Geeklog. Caso você queira implementar o gravatar no seu próprio sistema, <a href="http://en.gravatar.com/site/implement/url" target="_blank">nesta página aqui</a> há um tutorial que demonstra como é simples o processo da construção da URL do Gravatar.</p>
<p>Não quero mais ninguém com comentário sem Gravatar hein! Vou deletar tudo! <br />
 (brincadeira, mas sugiro que usem, é muito bom!)</p>
<p><br class="spacer_" /></p>
<p><span style="text-decoration: line-through;">PS: por que será que o Google ainda não comprou o Gravatar? xD </span></p>

<p><a href="http://feedads.g.doubleclick.net/~a/huLC3pciORm7-P6PRHm2hyFEFD8/0/da"><img src="http://feedads.g.doubleclick.net/~a/huLC3pciORm7-P6PRHm2hyFEFD8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/huLC3pciORm7-P6PRHm2hyFEFD8/1/da"><img src="http://feedads.g.doubleclick.net/~a/huLC3pciORm7-P6PRHm2hyFEFD8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Andresanet/~4/DBJu3a-BEXE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/04/20/avatares-globalmente-reconhecidos-com-o-gravatar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.andresa.net/2009/04/20/avatares-globalmente-reconhecidos-com-o-gravatar/</feedburner:origLink></item>
	</channel>
</rss>
