<?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>Internet Paulista &#187; Php</title>
	<atom:link href="http://blog.internetpaulista.com/category/php/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.internetpaulista.com</link>
	<description>the best content</description>
	<lastBuildDate>Sat, 13 Mar 2010 04:00:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>“O código que escrevemos tem muito pouco impacto sobre as pessoas”</title>
		<link>http://blog.internetpaulista.com/internet/%e2%80%9co-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas%e2%80%9d</link>
		<comments>http://blog.internetpaulista.com/internet/%e2%80%9co-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas%e2%80%9d#comments</comments>
		<pubDate>Sat, 13 Mar 2010 03:43:22 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Asp]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dhtml]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[ICQ]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MSN]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=220</guid>
		<description><![CDATA[
As palavras que vemos no título desse post são do mestre Carlos Brando, especialista em Ruby on Rails. Carlos publicou em seu  blog um post polêmico, lançando a seguinte pergunta no início de seu texto “Quer se tornar um programador de sucesso? Pare de escrever código”. 
Brando contesta alguns programadores que focam demais no [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt">
<p>As palavras que vemos no título desse post são do mestre <a href="http://www.nomedojogo.com/sobre/" target="_blank"><strong>Carlos Brando</strong></a>, especialista em Ruby on Rails. Carlos publicou em seu  <a href="http://www.brunoavila.com.br/avante/mercado/o-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas.html#" target="_blank">blog</a> um post polêmico, lançando a seguinte pergunta no início de seu texto <a href="http://www.nomedojogo.com/2010/02/10/quer-se-tornar-um-programador-de-sucesso-pare-de-escrever-codigo/" target="_blank">“Quer se tornar um programador de sucesso? Pare de escrever código”. </a></p>
<p>Brando contesta alguns programadores que focam demais no código e esquecem o usuário. “O problema é que a maior parte dos programadores se preocupam demais com o código. Passam horas e mais horas tentando criar o algoritmo perfeito. Porém se esquecem que o melhor código do mundo é inútil se ninguém utilizar o software que o contém.”</p>
<p>No final, sugere que o programador deixe de focar apenas no código, participando mais ativamente de comunidades, realizando palestras e melhorando suas habilidades sociais. Sobre isso Brando diz “Não escreva apenas código. Estude, escreva e fale mais sobre código”</p>
<p>O que Brando diz é bastante pertinente. E podemos trazer isso para o campo do Web Design. A questão é: afinal, trabalhamos com quem? Apenas com máquinas? Não, a finalidade do nosso trabalho serão sempre as pessoas. Não são máquinas, mas seres humanos.</p>
<p>O  <a href="http://www.brunoavila.com.br/avante/mercado/o-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas.html#"  target="_blank">sucesso</a> de sites e softwares mora justamente na interação com as pessoas. Basta observar os sites, aplicativos e serviços que são sucesso no mundo. O orkut surgiu como uma grande novidade. Porém toda aquela <a href="http://www.brunoavila.com.br/avante/mercado/o-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas.html#" target="_blank">tecnologia</a> já existia, principalmente as comunidades, que nada mais são que fóruns com pouquíssimos recursos se comparados com outros fóruns que temos por aí. Mas se tornou sucesso, graças a forma que o site “conversa” com o usuário, uma aliança de design, tecnologia e comunicação.</p>
<p>E o twitter? Existe alguma tecnologia nova e tão especial rodando nele? Nada mais que uma página com textinhos de poucos caracteres, que mais parece um mural de recados, os comentários de um blog, um RSS ou um chat altamente simples. Não há nada de novo em sua tecnologia mas há sim na sua comunicação com o usuário. O formato escolhido, o processo de postagem e interação dos usuários, sua forma simples de operar, tudo isso fez dele um sucesso.</p>
<p>O MSN Messenger, agora Windows Live Messenger, é um caso clássico de sucesso de comunicação com o usuário. Desbancou o reinado do ICQ graças a uma foto e um enter. Antigamente não era possível colocar uma fotinha junto ao nosso contato de ICQ. Além disso para enviar uma mensagem era necessário clicar com o ponteiro do mouse no botão “enviar”. Bastou a Microsoft incluir a possibilidade de colocar uma foto do usuário e apenas teclar “enter” para enviar a mensagem que a migração do ICQ para o MSN ocorreu em massa. Um caso clássico do formato de comunicação exercendo papel fundamental no sucesso de um software. Acredito que foi iso que Carlos Brando quis dizer, pouco interessa se o código do ICQ era melhor construído que o do MSN, o que importa é que o MSN se comunicou melhor com o usuário do que o ICQ.</p>
<p>Para mim programador ou web designer de sucesso é aquele que se comunica melhor com o seu cliente, com o cliente dos seus clientes e com seus colegas de trabalho, focando seu trabalho nas pessoas. Criar um bom código é fundamental para um programador ser chamado de programador assim como criar um bom design é requisito básico para um web designer ser chamado de web designer. O que irá diferenciar esses profissionais dos demais sempre será no formato de comunicação que escolherem na criação de seus trabalhos.</p>
<p>O foco é: gente. Gente de verdade.</p>
<p>Para o alto e<strong> Avante!</strong></div>
<p>FONTE: http://www.brunoavila.com.br/avante/mercado/o-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas.html</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/internet/%e2%80%9co-codigo-que-escrevemos-tem-muito-pouco-impacto-sobre-as-pessoas%e2%80%9d/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Funções para tratamento de Arrays</title>
		<link>http://blog.internetpaulista.com/internet/funcoes-para-tratamento-de-arrays</link>
		<comments>http://blog.internetpaulista.com/internet/funcoes-para-tratamento-de-arrays#comments</comments>
		<pubDate>Sun, 11 Oct 2009 17:22:51 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[range]]></category>
		<category><![CDATA[shuffle]]></category>
		<category><![CDATA[sizeof]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=207</guid>
		<description><![CDATA[Funções Genéricas
Array
array array(&#8230;);
É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do [...]]]></description>
			<content:encoded><![CDATA[<p>Funções Genéricas</p>
<p>Array</p>
<p>array array(&#8230;);</p>
<p>É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. Vejamos alguns exemplos:</p>
<p>Exemplo 1<br />
$teste = array(&#8221;um&#8221;, &#8220;dois&#8221;,&#8221;tr&#8221;=&gt;&#8221;tres&#8221;,5=&gt;&#8221;quatro&#8221;,&#8221;cinco&#8221;);</p>
<p>Temos o seguinte mapeamento:<br />
0 =&gt; &#8220;um&#8221; (0 é o primeiro índice, se não houver um explicito)<br />
1 =&gt; &#8220;dois&#8221; (o inteiro seguinte)<br />
&#8220;tr&#8221; =&gt; &#8220;tres&#8221;<br />
5 =&gt; &#8220;quatro&#8221; (valor explicitado)<br />
6 =&gt; &#8220;cinco&#8221; (o inteiro seguinte ao último atribuído, e não o próximo valor, que seria 2)</p>
<p>Exemplo 2<br />
$teste = array(&#8221;um&#8221;, 6=&gt;&#8221;dois&#8221;,&#8221;tr&#8221;=&gt;&#8221;tres&#8221;,5=&gt;&#8221;quatro&#8221;,&#8221;cinco&#8221;);</p>
<p>Temos o seguinte mapeamento:<br />
0 =&gt; &#8220;um&#8221;<br />
6 =&gt; &#8220;dois&#8221;<br />
&#8220;tr&#8221; =&gt; tres<br />
5 =&gt; &#8220;quatro&#8221; (seria 7, se não fosse explicitado)<br />
7 =&gt; &#8220;cinco&#8221; (seria 6, se não estivesse ocupado)</p>
<p>Em geral, não é recomendável utilizar arrays com vários tipos de índices, já que isso pode confundir o programador. No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante atenção ao manipular os índices do array.</p>
<p>range</p>
<p>array range(int minimo, int maximo);</p>
<p>A função range cria um array cujos elementos são os inteiros pertencentes ao intervalo fornecido, inclusive. Se o valor do primeiro parâmetro for maior do que o do segundo, a função Devolve false (valor vazio).</p>
<p>shuffle</p>
<p>void shuffle(array &amp;arr);</p>
<p>Esta função &#8220;embaralha&#8221; o array, ou seja, troca as posições dos elementos aleatoriamente e não Devolve valor algum.</p>
<p>sizeof</p>
<p>int sizeof(array arr);</p>
<p>Devolve um valor inteiro contendo o número de elementos de um array. Se for utilizada com uma variável cujo valor não é do tipo array, Devolve 1. Se a variável não estiver setada ou for um array vazio, Devolve 0.</p>
<p>Funções de &#8220;navegação&#8221;</p>
<p>Toda variável do tipo array possui um ponteiro interno indicando o próximo elemento a ser acedido no caso de não ser especificado um índice. As funções seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu conteúdo (chaves e elementos).</p>
<p>reset</p>
<p>mixed reset(array arr);</p>
<p>O ponteiro interno aponta para o primeiro elemento do array, e devolve o conteúdo desse elemento.</p>
<p>end</p>
<p>mixed end(array arr);</p>
<p>O ponteiro interno aponta para o último elemento do array, e devolve o conteúdo desse elemento.</p>
<p>next</p>
<p>mixed next(array arr);</p>
<p>O ponteiro interno aponta para o próximo elemento do array, e devolve o conteúdo desse elemento.</p>
<p>Obs.: esta não é uma boa função para determinar se um elemento é o último do array, pois pode devolver false tanto no final do array como no caso de haver um elemento vazio.</p>
<p>prev</p>
<p>mixed prev(array arr);</p>
<p>O ponteiro interno aponta para o elemento anterior do array, e devolve o conteúdo desse elemento. Funciona de maneira inversa a next.</p>
<p>pos</p>
<p>mixed pos(array arr);</p>
<p>Devolve o conteúdo do elemento actual do array, indicado pelo ponteiro interno.</p>
<p>key</p>
<p>mixed key(array arr);</p>
<p>Funciona de maneira bastante semelhante a pos, mas em vez de devolver o elemento actual indicado pelo ponteiro interno do array, devolve o seu índice.</p>
<p>each</p>
<p>array each(array arr);</p>
<p>Devolve um array contendo o índice e o elemento actual indicado pelo ponteiro interno do array. o valor da devolução é um array de quatro elementos, cujos índices são 0, 1, &#8220;key&#8221; e &#8220;value&#8221;. Os elementos de índices 0 e &#8220;key&#8221; armazenam o índice do valor atual, e os elementos de índices 1 e &#8220;value&#8221; contém o valor do elemento atual indicado pelo ponteiro.<br />
Esta função pode ser utilizada para percorrer todos os elementos de um array e determinar se já foi encontrado o último elemento, pois no caso de haver um elemento vazio, a função não devolverá o valor false. A função each só devolve false depois q o último elemento do array foi encontrado.</p>
<p>Exemplo:</p>
<p>função que percorre todos os elementos de um array e imprime seus índices e valores</p>
<p>function imprime_array($arr) {<br />
reset($arr);<br />
while (list($chave,$valor) = each($arr))<br />
echo &#8220;Chave: $chave. Valor: $valor&#8221;;<br />
}</p>
<p>Funções de ordenação</p>
<p>São funções que servem para ordenar os elementos de um array de acordo com determinados critérios. Estes critérios são: manutenção ou não da associação entre índices e elementos; ordenação por elementos ou por índices; função de comparação entre dois elementos.</p>
<p>sort</p>
<p>void sort(array &amp;arr);</p>
<p>A função mais simples de ordenação de arrays. Ordena os elementos de um array em ordem crescente, sem manter os relacionamentos com os índices.</p>
<p>rsort</p>
<p>void rsort(array &amp;arr);</p>
<p>Funciona de maneira inversa à função sort. Ordena os elementos de um array em ordem decrescente, sem os manter os relacionamentos com os índices.</p>
<p>asort</p>
<p>void asort(array &amp;arr);</p>
<p>Tem o funcionamento bastante semelhante à função sort. Ordena os elementos de um array em ordem crescente, porém mantém os relacionamentos com os índices.</p>
<p>arsort</p>
<p>void arsort(array &amp;arr);</p>
<p>Funciona de maneira inversa à função asort. Ordena os elementos de um array em ordem decrescente e mantém os relacionamentos dos elementos com os índices.</p>
<p>ksort</p>
<p>void ksort(array &amp;arr);</p>
<p>Função de ordenação baseada nos índices. Ordena os elementos de um array de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.</p>
<p>usort</p>
<p>void usort(array &amp;arr, function compara);</p>
<p>Esta é uma função que utiliza outra função como parâmetro. Ordena os elementos de um array sem manter os relacionamentos com os índices, e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.</p>
<p>uasort</p>
<p>void uasort(array &amp;arr, function compara);</p>
<p>Esta função também utiliza outra função como parâmetro. Ordena os elementos de um array e mantém os relacionamentos com os índices, utilizando para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.</p>
<p>uksort</p>
<p>void uksort(array &amp;arr, function compara);</p>
<p>Esta função ordena o array através dos índices, mantendo os relacionamentos com os elementos., e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois índices do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.</p>
<p>FONTE: http://www.truquesedicas.com/tutoriais/php/apendices/00002a.htm</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/internet/funcoes-para-tratamento-de-arrays/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O desabafo de um Web Designer envergonhado</title>
		<link>http://blog.internetpaulista.com/internet/o-desabafo-de-um-web-designer-envergonhado</link>
		<comments>http://blog.internetpaulista.com/internet/o-desabafo-de-um-web-designer-envergonhado#comments</comments>
		<pubDate>Wed, 30 Sep 2009 18:34:00 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[cursos]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=160</guid>
		<description><![CDATA[Nesse vídeo mostro o relato do web designer W.L.D., de 23 anos, que pediu para não ser identificado. Um relato sincero e emocionado que quero compartilhar com todos vocês.

veja mais
FONTE: http://www.brunoavila.com.br/avante/cursos/o-desabafo-de-um-web-designer-envergonhado.html
]]></description>
			<content:encoded><![CDATA[<p>Nesse vídeo mostro o relato do web designer W.L.D., de 23 anos, que pediu para não ser identificado. Um relato sincero e emocionado que quero compartilhar com todos vocês.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/m711mKI54iI&amp;hl=pt-br&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/m711mKI54iI&amp;hl=pt-br&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://cursos.brunoavila.com.br/curso-php-para-web-designers.html" target="_blank"><strong>veja mais</strong></a></p>
<p>FONTE: http://www.brunoavila.com.br/avante/cursos/o-desabafo-de-um-web-designer-envergonhado.html</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/internet/o-desabafo-de-um-web-designer-envergonhado/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12 dicas para otimizar seus códigos PHP</title>
		<link>http://blog.internetpaulista.com/php/12-dicas-para-otimizar-seus-codigos-php</link>
		<comments>http://blog.internetpaulista.com/php/12-dicas-para-otimizar-seus-codigos-php#comments</comments>
		<pubDate>Tue, 08 Sep 2009 23:24:03 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[$_SERVER]]></category>
		<category><![CDATA[12 dicas]]></category>
		<category><![CDATA[require]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=125</guid>
		<description><![CDATA[É sempre útil ler algumas dicas rápidas para melhorar a sua codificação. Geralmente temos vícios que adquirimos no dia-a-dia que, sem sabermos, tornam o nosso código mais lento.
Seguem abaixo 12 dicas para melhorar o processamento dos seus códigos PHP.
1. Se um método pode ser static, declare-o como static! O desempenho aumenta 4 vezes;
2. Evite utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>É sempre útil ler algumas dicas rápidas para melhorar a sua codificação. Geralmente temos vícios que adquirimos no dia-a-dia que, sem sabermos, tornam o nosso código mais lento.</p>
<p>Seguem abaixo 12 dicas para melhorar o processamento dos seus códigos PHP.</p>
<p><strong>1.</strong> Se um método pode ser static, declare-o como static! O desempenho aumenta 4 vezes;</p>
<p><strong>2.</strong> Evite utilizar metódos mágicos como <strong>__get</strong>, <strong>__set</strong> e <strong>__autoload</strong>, se possível;</p>
<p><strong>3.</strong> <kbd>require_once()</kbd> é dispensável e demanda bastante memória;</p>
<p><strong>4.</strong> Use caminhos completos (<em>full path</em>) nos <em>includes </em>e <em>requires</em>, pois é gasto menos tempo resolvendo os caminhos do sistema operacional;</p>
<p><strong>5.</strong> Se você quer descobrir o tempo em que o script começou a ser executado, é preferível utilizar <strong>$_SERVER[´REQUEST_TIME´]</strong> do que <kbd>time()</kbd>;</p>
<p><strong>6.</strong> Veja se pode utilizar <strong>strncasecmp</strong>, <strong>strpbrk </strong>e <strong>stripos </strong>ao invés de <strong>regex</strong>;</p>
<p><strong>7.</strong> str_replace é mais rápido que preg_replace, mas strtr é 4 vezes mais rápido que str_replace;</p>
<p><strong>8.</strong> Se uma função, como de substituição de <em>strings</em>, aceitar tanto <em>arrays </em>como caracteres simples como argumentos, e se a sua lista de argumentos não é muito longa, considere fazer algumas declarações redundantes de substituição, passando um caractere por vez, ao invés de uma linha de código que aceita <em>arrays </em>como argumentos de busca e substituição;</p>
<p><strong>9.</strong> Supressão de erro com <strong>@</strong> é muito lento;</p>
<p><strong>10.</strong> <strong>$row[´id´]</strong> é 7 vezes mais rápido que <strong>$row[id]</strong>;</p>
<p><strong>11.</strong> Mensagens de erro demandam mais processamento;</p>
<p><strong>12.</strong> Não utilize funções dentro de <em>loops</em>, como por exemplo: <kbd>for ($x=0; $x &lt; count($array); $x)</kbd>. A função <kbd>count()</kbd> é chamada todas as vezes que o <em>loop </em>é executado.;</p>
<p>FONTE: http://imasters.uol.com.br/artigo/8962/php/12_dicas_para_otimizar_seus_codigos_php/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/php/12-dicas-para-otimizar-seus-codigos-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviar formulário com AJAX usando PHP</title>
		<link>http://blog.internetpaulista.com/php/enviar-formulario-com-ajax-usando-php</link>
		<comments>http://blog.internetpaulista.com/php/enviar-formulario-com-ajax-usando-php#comments</comments>
		<pubDate>Tue, 01 Sep 2009 04:57:58 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[formulário]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xmlhttp]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=65</guid>
		<description><![CDATA[Uma dica rápida mas muito útil para enviar formulários HTML através de AJAX.
São três arquivos:
* script.js: contém o javascript necessário para enviar o formulário;
* form.php: contém o código HTML do formulário;
* processar.php: processa o conteúdo recebido;
Note que no arquivo processar.php, o método de recebimento é GET, porém o AJAX envia através de POST, por isso, [...]]]></description>
			<content:encoded><![CDATA[<p>Uma dica rápida mas muito útil para enviar formulários HTML através de AJAX.</p>
<p>São três arquivos:</p>
<p>* <strong>script.js</strong>: contém o javascript necessário para enviar o formulário;<br />
* <strong>form.php</strong>: contém o código HTML do formulário;<br />
* <strong>processar.php</strong>: processa o conteúdo recebido;</p>
<p>Note que no arquivo processar.php, o método de recebimento é GET, porém o AJAX envia através de POST, por isso, ao enviar, não aparecem os campos enviados na barra de endereços do navegador.<br />
<strong>script.js</strong></p>
<pre class="brush: javascript">var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global 'navegador' (em caracteres minúsculos) o nome e a versão do navegador

//Cria uma variável global chamada 'xmlhttp'
var xmlhttp;

//Função que inicia o objeto XMLHttpRequest

function objetoXML() {

    if (navegador.indexOf('msie') != -1) { //Internet Explorer

        var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle'

        try {

            xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE

        } catch (e) { }

    } else { //Firefox, Safari, Mozilla

        xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla

    }

}

//Função que envia o formulário

function enviarForm(url, campos, destino) {

    //Atribui à variável 'elemento' o elemento que irá receber a página postada
    var elemento = document.getElementById(destino);

    //Executa a função objetoXML()
    objetoXML();

    //Se o objeto de 'xmlhttp' não estiver true
    if (!xmlhttp) {

        //Insere no 'elemento' o texto atribuído
        elemento.innerHTML = 'Impossível iniciar o objeto XMLHttpRequest.';

        return;

    } else {

        //Insere no 'elemento' o texto atribuído
        elemento.innerHTML = 'Carregando...';

    }

    xmlhttp.onreadystatechange = function () {

        //Se a requisição estiver completada
        if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {

            //Se o status da requisição estiver OK
            if (xmlhttp.status == 200) {

                //Insere no 'elemento' a página postada
                elemento.innerHTML = xmlhttp.responseText;

            } else {

                //Insere no 'elemento' o texto atribuído
                elemento.innerHMTL = 'Página não encontrada!';

            }

        }

    }

    //Abre a página que receberá os campos do formulário
    xmlhttp.open('POST', url+'?'+campos, true);

    //Envia o formulário com dados da variável 'campos' (passado por parâmetro)
    xmlhttp.send(campos);

}</pre>
<p><strong>form.php</strong></p>
<pre class="brush: php">&lt;html&gt;

&lt;head&gt;

&lt;title&gt;Enviando formulário com AJAX&lt;/title&gt;

&lt;!-- Carrega o arquivo 'script.js' ao iniciar a página! //--&gt;

&lt;script language="javascript" src="script.js" type="text/javascript"&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&lt;table cellpadding="2" cellspacing="0" width="50%"&gt;

&lt;form action="processar.php" method="post" onsubmit="setarCampos(); enviarForm('processar.php', campos, 'mensagem'); return false;"&gt;

&lt;tr&gt;&lt;td&gt;Nome&lt;/td&gt;&lt;td&gt;&lt;input name="nome" id="nome" type="text"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td&gt;Email&lt;/td&gt;&lt;td&gt;&lt;input name="email" id="email" type="text"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;input type="submit" value="Enviar"&gt;&amp;nbsp;&lt;input type="reset" value="Limpar"&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;/form&gt;

&lt;/table&gt;

&lt;div id="mensagem"/&gt;

&lt;script&gt;

//Cria a função com os campos para envio via parâmetro

function setarCampos() {

campos = "nome="+encodeURI(document.getElementById('nome').value).
toUpperCase()+"&amp;email="+encodeURI(document.getElementById('email').value);

}

&lt;/script&gt;

&lt;/body&gt;
&lt;/htm&gt;</pre>
<p><strong>processar.php</strong></p>
<pre class="brush: php">&lt;?php

//Determina o tipo da codificação da página
header("content-type: text/html; charset=iso-8859-1");

//Extrai os dados do formulário
extract($_GET);

//Verifica se algum nome foi digitado
$nome = ($nome != "") ? $nome : "desconhecido";

//Verifica se algum email foi digitado
$email = ($email != "") ? $email : "desconhecido";

//Retorna com a resposta
echo "Olá &lt;b&gt;".$nome."&lt;/b&gt;, seu email é: &lt;a href='mailto:".$email."'&gt;&lt;b&gt;".$email."&lt;/b&gt;&lt;/a&gt;";

?&gt;</pre>
<p>FONTE:  http://codigofonte.uol.com.br/codigo/js-dhtml/formulario/enviar-formulario-com-ajax-usando-php</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/php/enviar-formulario-com-ajax-usando-php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Criando Sub-dominio no Cpanel com PHP</title>
		<link>http://blog.internetpaulista.com/php/criando-sub-dominio-no-cpanel-com-php</link>
		<comments>http://blog.internetpaulista.com/php/criando-sub-dominio-no-cpanel-com-php#comments</comments>
		<pubDate>Tue, 01 Sep 2009 04:44:03 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[CPanel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[subdominio]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=62</guid>
		<description><![CDATA[Segue um simples script que acessa o Cpanel e cria um sub-dominio.
Esse script faz uso da biblioteca CURL que está disponível na maioria dos servidores PHP.

&#60;?php

//Configurações
$dominio = 'dominio.com';
$usuario_cpanel = 'UsuarioDpCpanel';
$senha_cpanel = 'SenhaDoCpanel';
$tema = 'x3'; // o "skin" ou "tema" padrão do Cpanel é o "x3".
$criar_subdominio = 'teste'; //Sub-dominio a ser criado. Nesse caso criará o [...]]]></description>
			<content:encoded><![CDATA[<p>Segue um simples script que acessa o Cpanel e cria um sub-dominio.<br />
Esse script faz uso da biblioteca CURL que está disponível na maioria dos servidores PHP.</p>
<pre class="brush: php">
&lt;?php

//Configurações
$dominio = 'dominio.com';
$usuario_cpanel = 'UsuarioDpCpanel';
$senha_cpanel = 'SenhaDoCpanel';
$tema = 'x3'; // o "skin" ou "tema" padrão do Cpanel é o "x3".
$criar_subdominio = 'teste'; //Sub-dominio a ser criado. Nesse caso criará o sub-domínio teste.dominio.com

$url = 'http://'.$usuario_cpanel.':'.$senha_cpanel.'@'.$dominio.':2082/frontend/'.$tema.'/subdomain/doadddomain.html?domain='.$criar_subdominio.'&amp;rootdomain='.$dominio.'&amp;dir=public_html%2F'.$criar_subdominio.'&amp;go=Criar';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec ($ch);
curl_close ($ch);

?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/php/criando-sub-dominio-no-cpanel-com-php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Classe Crawler PHP &#8211; Identificar links e imagens com PHP</title>
		<link>http://blog.internetpaulista.com/internet/classe-crawler-php</link>
		<comments>http://blog.internetpaulista.com/internet/classe-crawler-php#comments</comments>
		<pubDate>Tue, 01 Sep 2009 02:52:49 +0000</pubDate>
		<dc:creator>bill</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Crawler]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[imagens]]></category>
		<category><![CDATA[links]]></category>

		<guid isPermaLink="false">http://blog.internetpaulista.com/?p=23</guid>
		<description><![CDATA[Olá
Hoje vou postar uma classe para identificar links e imagens em sites.  Essa classe foi encontrada no phpclasses.org.
Primeiro, vamos ver um exemplo de como pegar os links:
&#60;?php include("Crawler.php");
$crawler = new Crawler();
$url = 'http://www.google.com/';
$link = $crawler-&#62;crawlLinks($url);

echo '&#60;table width="100%" border=\"1\"&#62;
&#60;tr&#62;
&#60;td width="30%"&#62;&#60;div align="center"&#62;&#60;b&#62;Texto&#60;/b&#62;&#60;/div&#62;&#60;/td&#62;
&#60;td width="30%"&#62;&#60;div align="center"&#62;&#60;b&#62;Link&#60;/b&#62;&#60;/div&#62;&#60;/td&#62;
&#60;td width="40%"&#62;&#60;div align="center"&#62;&#60;b&#62;Link Completo&#60;/b&#62; &#60;/div&#62;&#60;/td&#62;
&#60;/tr&#62;';

for($i=0; $i &#60; sizeof($link['link']); $i++){
echo '&#60;tr&#62;
&#60;td&#62;&#60;div align="center"&#62;'.$link['text'][$i].'&#60;/div&#62;&#60;/td&#62;
&#60;td&#62;&#60;div align="center"&#62;'.$link['link'][$i].'&#60;/div&#62;&#60;/td&#62;
&#60;td&#62;&#60;div align="center"&#62;&#60;a [...]]]></description>
			<content:encoded><![CDATA[<p>Olá<br />
Hoje vou postar uma classe para identificar links e imagens em sites.  Essa classe foi encontrada no phpclasses.org.<br />
Primeiro, vamos ver um exemplo de como pegar os links:</p>
<pre class="brush: php">&lt;?php include("Crawler.php");
$crawler = new Crawler();
$url = 'http://www.google.com/';
$link = $crawler-&gt;crawlLinks($url);

echo '&lt;table width="100%" border=\"1\"&gt;
&lt;tr&gt;
&lt;td width="30%"&gt;&lt;div align="center"&gt;&lt;b&gt;Texto&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="30%"&gt;&lt;div align="center"&gt;&lt;b&gt;Link&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="40%"&gt;&lt;div align="center"&gt;&lt;b&gt;Link Completo&lt;/b&gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;';

for($i=0; $i &lt; sizeof($link['link']); $i++){
echo '&lt;tr&gt;
&lt;td&gt;&lt;div align="center"&gt;'.$link['text'][$i].'&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div align="center"&gt;'.$link['link'][$i].'&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div align="center"&gt;&lt;a href="'.$link['link'][$i].'"&gt;'.$link['text'][$i].'&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;';

}

echo '&lt;/table&gt;';
?&gt;</pre>
<p>Abaixo você encontra um outro exemplo de como pegar imagens e links de sites:</p>
<pre class="brush: php">&lt;?php

include("Crawler.php");
$crawler = new Crawler();
$url = 'http://www.uol.com.br';
$imagem = $crawler-&gt;crawlImage($url);

echo '&lt;table width="100%" border="1"&gt;
&lt;tr&gt;
&lt;td width="30%"&gt;&lt;div align="center"&gt;&lt;b&gt;Imagem&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="30%"&gt;&lt;div align="center"&gt;&lt;b&gt;Link&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;
&lt;td width="40%"&gt;&lt;div align="center"&gt;&lt;b&gt;Link Completo&lt;/b&gt; &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;';

for($i=0; $i&lt;sizeof($imagem['link']); $i++){
echo '&lt;tr&gt;
&lt;td&gt;&lt;div align="center"&gt;&lt;img src="'.$imagem['src'][$i].'"/&gt;&lt;/div&gt;&lt;/td&gt;';

if(($imagem['link'][$i])==null){
echo '&lt;td width="30%"&gt;&lt;div align="center\"&gt;Sem link&lt;/div&gt;&lt;/td&gt;
&lt;td width="40%"&gt;&lt;div align="center\"&gt;Sem link&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;';

} else {

echo '&lt;td&gt;&lt;div align="center"&gt;'.$imagem['link'][$i].'&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div align="center"&gt;&lt;a href="'.$imagem['link'][$i].'"&gt;Ir para Link.&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;';

}
}

echo '&lt;/table&gt;';
?&gt;
</pre>
<p>Links para ver os scripts em funcionamento:<br />
<em><strong><a href="http://www.sobrephp.net/php/scripts/url.php" target="_blank">URL</a><br />
<a href="http://www.sobrephp.net/php/scripts/imagem.php" target="_blank">IMAGEM</a></strong></em><br />
Para fazer o download da classe “Crawler.php” e dos exemplo <a title="Download da classe crawler.php e de exemplos de scripts" href="http://www.sobrephp.net/php/codigos-php/classe-crawler.zip" target="_blank">clique aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.internetpaulista.com/internet/classe-crawler-php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
