<?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/"
	>

<channel>
	<title>Andresa.NET &#187; PHP</title>
	<atom:link href="http://blog.andresa.net/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.andresa.net</link>
	<description>Programação WEB com PHP e Fanta Mundo Tailândia!</description>
	<lastBuildDate>Wed, 01 Sep 2010 20:42:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Envio de dados com método POST usando AJAX e PHP</title>
		<link>http://blog.andresa.net/2009/05/20/envio-de-dados-com-metodo-post-usando-ajax-e-php/</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 249 vezes">Clique aqui para fazer o download completo contendo os 3 arquivos exibidos acima + os arquivos "processa_form.php" e "processa_link.php". (Baixado 249 vezes)</a>
]]></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>
		</item>
		<item>
		<title>O poder das variáveis superglobais do PHP &#8211; Parte II</title>
		<link>http://blog.andresa.net/2009/05/08/o-poder-das-variaveis-superglobais-do-php-parte-ii/</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 104 times" >Exemplo de sistema de cadastro e login com sessões e cookies (104)</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>
]]></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>
		</item>
		<item>
		<title>O poder das variáveis superglobais do PHP &#8211; Parte I</title>
		<link>http://blog.andresa.net/2009/04/28/o-poder-das-variaveis-superglobais-do-php-parte-i/</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 107 times" >Exemplo de formulário HTML usando método POST com PHP (107)</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>
]]></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>
		</item>
		<item>
		<title>Envio de dados com PHP utilizando método POST sem usar formulário HTML</title>
		<link>http://blog.andresa.net/2009/02/11/envio-de-dados-com-php-utilizando-metodo-post-sem-usar-formulario-html/</link>
		<comments>http://blog.andresa.net/2009/02/11/envio-de-dados-com-php-utilizando-metodo-post-sem-usar-formulario-html/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 05:48:55 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[envio de dados]]></category>
		<category><![CDATA[formulários]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[streams]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=114</guid>
		<description><![CDATA[Mais um probleminha que pode atrapalhar a vida de um programador PHP. Ao precisar enviar dados para uma página de um servidor remoto, normalmente para integrar seu sistema a algum outro sistema remoto geralmente feito em uma linguagem inferior (aka. ASP) e usando o método POST dentro do seu programa, sem poder utilizar um formulário e [...]]]></description>
			<content:encoded><![CDATA[<p>Mais um probleminha que pode atrapalhar a vida de um programador PHP. Ao precisar enviar dados para uma página de um servidor remoto, normalmente para integrar seu sistema a algum outro sistema remoto geralmente feito em uma linguagem inferior (aka. ASP) e usando o método POST dentro do seu programa, sem poder utilizar um formulário e mandar o usuário clicar, usando apenas uma URL.</p>
<p>Bem, a tarefa seria simples se pudéssemos utilizar o método GET. Usando o método GET, poderíamos simplesmente acessar a url remota usando <strong><span style="color: #008080;">header()</span></strong> e depois redirecionar novamente para o nosso sitema a partir do arquivo remoto. No meu caso eu tinha que mandar 3 variáveis (assunto,e-mail e texto) para um arquivo .asp em outro servidor &#8211; e claro, o programador deste quis tirar onda comigo mandando eu enviar com método POST. Enfim, é claro que eu resolvi o problema e deixei ele chupando o Bill Gates. <span id="more-114"></span></p>
<p>Após horas de pesquisas e após ler muito no manual do PHP, descobri que poderia usar a extensão <a title="Veja mais sobre o curl no manual do PHP" href="http://br.php.net/curl" target="_blank">curl</a> para tal, porém isso é complicado, pois nem sempre ela estará disponível no servidor do cliente. A solução que encontrei foi <a title="Veja como criar um contexto de stream no manual do PHP" href="http://br.php.net/manual/en/function.stream-context-create.php" target="_blank">criando um contexto de stream</a>, enviando-o em seguida ao servidor remoto usando <a title="fopen() serve para abrir um arquivo ou uma URL" href="http://br.php.net/manual/en/function.fopen.php" target="_blank">fopen()</a> e em seguinda, checando a resposta com <a title="Veja mais sobre a função no manual do PHP" href="http://br.php.net/manual/en/function.stream-get-contents.php" target="_blank">stream_get_contents() </a>pra saber se o conteúdo foi enviado corretamente ao servidor. Abaixo, a função concebida:</p>
<pre name="code" class="php">function POST($url, $dados, $headers = false)
{
     /*parâmetros necessários para criar um
        contexto de stream */
     $params = array('http' =&gt; array(
                     'method' =&gt; 'POST',
                     'content' =&gt; $dados ));
     //caso você precise enviar algum cabeçalho a mais
     if ($headers)
        $params['http']['header'] = $headers;
     //cria o contexto de stream
     $ctx = stream_context_create($params);

     //abre o arquivo remoto
     $fp = @fopen($url, 'rb', false, $ctx);
     //checa se o arquivo foi aberto com sucesso
     if (!$fp)
        throw new Exception("Problema com $url: -  $php_errormsg");
     //obtém a resposta
     $resp = @stream_get_contents($fp);

     /*checa se os dados do arquivo remoto
       foram lidos corretamente*/
     if ($resp === false)
        throw new Exception("Problema ao ler dados de $url: -  $php_errormsg");

     return $resp;
}
</pre>
<p><br class="spacer_" /></p>
<p>Exemplo de uso da função:</p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
$url='http://seusite.com.br/arquivo.php';
$variaveis='nome=Andresa&#038;time=palmeiras&#038;tarefa=salvar';

POST($url, $variaveis);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/02/11/envio-de-dados-com-php-utilizando-metodo-post-sem-usar-formulario-html/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Diferenças entre foreach() e for()</title>
		<link>http://blog.andresa.net/2009/01/20/diferencas-entre-foreach-e-for/</link>
		<comments>http://blog.andresa.net/2009/01/20/diferencas-entre-foreach-e-for/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 02:14:46 +0000</pubDate>
		<dc:creator>Andresa</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.andresa.net/?p=42</guid>
		<description><![CDATA[p>Tanto o foreach() quanto o for() são construtores de linguagem no PHP, e não funções como muitos leigos acabam dizendo por aí. Ao contrário do que muitos declaram, esses construtores não fazem a mesma coisa, muito pelo contrário, pois dependendo da situação, devemos escolher qual usar.
O foreach() é muito mais simples que o for(), e [...]]]></description>
			<content:encoded><![CDATA[<p>p>Tanto o foreach() quanto o for() são construtores de linguagem no PHP, e não funções como muitos leigos acabam dizendo por aí. Ao contrário do que muitos declaram, esses construtores não fazem a mesma coisa, muito pelo contrário, pois dependendo da situação, devemos escolher qual usar.</p>
<p>O foreach() é muito mais simples que o for(), e só pode ser utilizado para percorrer vetores e objetos. O for() é muito mais complexo, podendo ser usado para percorrer vetores, avaliando uma expressão e executando uma terceira expressão. Veja a seguir como ele funciona.<span id="more-42"></span></p>
<p><strong><span style="font-size: medium;">Como funciona o for()</span></strong></p>
<p>for(expressão1; expressão2; expressão3)</p>
<ol>
<li> A expressão1 é avaliada somente <strong>uma única vez</strong> na primeira iteração do laço</li>
<li>A expressão 3 é executada a cada iteração do laço. Ela <strong>não</strong> é executada na primeira iteração do laço. Logo após ela ser executada, a expressão2 é avaliada.</li>
<li>A expressão2 é a condição que faz o laço continuar ou parar. A cada iteração essa expressão é avaliada novamente. Se o resultado dela for verdadeiro (TRUE) então o laço continuará mais uma vez. Ela <strong>não</strong> é avaliada na primeira iteração, ou seja, o for sempre irá executar pelo menos 1 vez.</li>
</ol>
<p>O for() geralmente é usado para fazer cálculos matemáticos, repetir trechos de código HTML e interagir com vetores e matrizes (arrays). Aqui vão alguns exemplos do uso do for():</p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php
for($i=0; $i<10; $i++)
	echo $i . " ";
?></pre>
<p>Esse trecho de código deve ser lido da seguinte forma: &#8220;Para &#8216;i&#8217; igual à zero, enquanto &#8216;i&#8217; for menor que 10, incremente &#8216;i&#8217; em 1&#8243;.</p>
<p>Isto irá imprimir na tela:</p>
<p><strong>0 1 2 3 4 5 6 7 8 9</strong></p>
<p>Outro exemplo, agora utilizando vetores:</p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php //atribui valores ao vetor
$meu_vetor=array('lobo mau','coelho', 'gato', 'cachorro', 'porco', 'bambi');
	for($j=5; $j >=0; $j--)
		echo "O bicho nº $j é: ". $meu_vetor[$j] . "\n";
?> </pre>
<p>Esse trecho de código é lido como: &#8220;Para &#8216;j&#8217; igual à cinco, enquanto &#8216;j&#8217; for maior ou igual à zero, decremente &#8216;j&#8217; &#8220;. Nesse caso, a única diferença é que estou diminuindo o valor de &#8216;j&#8217; de um em um ao invés de aumentar, como fiz no primeiro exemplo. Outro detalhe é que o laço será executado até mesmo quando &#8216;j&#8217; for igual a 0, diferentemente do exemplo anterior onde &#8216;i&#8217; nunca chega a valer 10, parando no 9. A saída para esse código será:</p>
<p><strong><em>O bicho nº 5 é o bambi.<br /> O bicho nº 4 é o porco.<br /> O bicho nº 3 é o cachorro.<br /> O bicho nº 2 é o gato.<br /> O bicho nº 1 é o coelho.<br /> O bicho nº 0 é o lobo mau. </em></strong></p>
<p>Agora vamos para um exemplo mais complexo utilizando na expressão3 e expressão 1 expressões compostas, isso é, 2 ou expressões juntas separadas por uma vírgula:</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php
//atribui os valores aos vetores
$bichos=array('lobo mau','coelho', 'gato', 'cachorro', 'porco', 'bambi');
$comidas=array('cenoura', 'arroz', 'feijão', 'carne', 'alface', 'maçã');
for($x=0, $y=5; $x <=5; $x++, $y--)
{
	echo $bichos[$x] . " gosta de comer " . $comidas[$y] . "\n";
}
?> </pre>
<p>Isso é lido como &#8220;para x igual a zero e y igual a cinco, enquanto x for menor ou igual a cinco, incremente x e decremente y&#8221;. A saída será a seguinte:</p>
<p><strong><em>lobo mau gosta de comer maçã. <br /> coelho gosta de comer alface. <br /> gato gosta de comer carne. <br /> cachorro gosta de comer feijão. <br /> porco gosta de comer arroz. <br /> bambi gosta de comer cenoura.</em></strong></p>
<p>Note que, enquanto a variável x vai de zero a cinco, a variável y faz o contrário, indo de cinco a zero.</p>
<p>Agora vamos a um exemplo com cálculo: somaremos na variavel $resultado <strong>apenas os números pares</strong> contidos no vetor $numeros:</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php
//preenche o vetor com dados
$numeros=array(56, 2, 45, 78, 10, 11, 20, 34, 7);
//conta o total de números do vetor
$total_numeros=count($numeros);
$resultado=0;
for($i=0; $i<$total_numeros; $i++)
{ //testa se o número é par. Se for par, soma em $resultado
if($numeros[$i]%2==0)
	$resultado = $resultado + $numeros[$i];
}
echo "O resultado da soma é: " . $resultado; ?>
</pre>
<p>A saída para este programa será:</p>
<p><strong>O resultado da soma é: 200</strong></p>
<p>Agora que já sabemos muito sobre o for(), vamos entender o foreach() e para concluir, a diferença entre eles.</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><strong><span style="font-size: medium;">Como funciona o foreach()</span></strong></p>
<p>O foreach() possui duas sintaxes diferentes. A primeira é a seguinte:</p>
<p>foreach($vetor as $valor)</p>
<p>Isso deve ser lido da seguinte maneira &#8220;Para cada posição de vetor como valor faça&#8230;&#8221;</p>
<p>Assim, em cada iteração do laço, o ponteiro interno de $vetor vai avançar 1 posição, e vai atribuir o conteúdo desta posição para $valor, como veremos a seguir:</p>
<pre name="code" class="php">
<?php //preenche o vetor com valores
$animais=array('bambi', 'porco', 'peixe', 'gambá');
foreach($animais as $animal)
	echo $animal . "\n";
?></pre>
<p>Isso irá imprimir:</p>
<p>bambi<br /> porco<br /> peixe <br /> gambá </p>
<p>Não há muito o que explicar sobre isso, portanto vamos agura para a segunda sintaxe do foreach():</p>
<p>foreach($vetor as $posicao => $valor)</p>
<p>Nesse exemplo, o foreach avança o ponteiro interno do vetor $vetor a cada iteração e atribui a posição para $posição e o valor contido naquela posição para $valor:</p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php
$animais=array('bambi', 'porco', 'peixe', 'gambá');
foreach($animais as $i => $animal)
	echo $i . ") " . $animal . "\n";
?></pre>
<p>Resultado:</p>
<p>0) bambi<br /> 1) porco<br /> 2) peixe<br /> 3) gambá </p>
<p>Agora, utilizando um objeto:</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<pre name="code" class="php">
<?php //preencher alguns atributos para o objeto ->
$objeto->nome="Andresa";
$objeto->idade="20 anos";
$objeto->sexo="feminino";
$objeto->profissao="programadora";
$objeto->site="www.andresa.net"; 

foreach($objeto as $i => $valor)
	echo $i . ": " . $valor . "\n";
?> </pre>
<p>A saída para este programa será:</p>
<p><strong>nome: Andresa<br /> idade: 20 anos<br /> sexo: feminino<br /> profissao: programadora<br /> site: www.andresa.net</strong></p>
<p>Caso queira saber mais sobre objetos em php, dê uma olhadinha <a href="http://www.itmnetworks.com.br/suporte/manuais/php/language.oop5.html" target="_blank">aqui neste link.</a></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><strong><span style="font-size: medium;">Finalizando</span></strong></p>
<p>Como vocês puderam observar, o for() é um construtor muito mais completo que o foreach(), o que nos permite criar laços muito mais complexos com ele. Em contrapartida, o foreach() por ser mais simples, é mais fácil de ser compreendido e implementado, sendo muito mais indicado no caso de você apenas querer percorrer todas as posições de um vetor até o fim, sem depender de nenhuma condição para parar.</p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.andresa.net/2009/01/20/diferencas-entre-foreach-e-for/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
