<?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>Rafael Cambuí &#187; Ajax</title>
	<atom:link href="http://www.gilix.com.br/rafael_cambui/wordpress_2.7/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7</link>
	<description>Desenvolvimento web &#38; Coluna Informativa</description>
	<lastBuildDate>Fri, 13 Aug 2010 14:24:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Consultando LDAP com PHP</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 14:01:53 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[css + js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Php + Mysql]]></category>
		<category><![CDATA[a]]></category>
		<category><![CDATA[adp]]></category>
		<category><![CDATA[ad_pgp]]></category>
		<category><![CDATA[b]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[d]]></category>
		<category><![CDATA[e]]></category>
		<category><![CDATA[f]]></category>
		<category><![CDATA[g]]></category>
		<category><![CDATA[h]]></category>
		<category><![CDATA[i]]></category>
		<category><![CDATA[j]]></category>
		<category><![CDATA[k]]></category>
		<category><![CDATA[l]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[ldap_php]]></category>
		<category><![CDATA[m]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[n]]></category>
		<category><![CDATA[o]]></category>
		<category><![CDATA[p]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[q]]></category>
		<category><![CDATA[r]]></category>
		<category><![CDATA[s]]></category>
		<category><![CDATA[t]]></category>
		<category><![CDATA[u]]></category>
		<category><![CDATA[v]]></category>
		<category><![CDATA[x]]></category>
		<category><![CDATA[z]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=161</guid>
		<description><![CDATA[&#60;?php // Variaveis Globais $ldap_server = "seudominio.com.br"; /*Usamos o nome do dominio ou o nome do Servidor do dominio Casa seja 1 servidor Apenas*/ $dominio = "seudominio\\"; /*Aqui usaremos o nome Netbios do dominio*/ // Usuario para autenticacao na Base LDAP $auth_user = "seudominio\usuario_de_consulta"; /*nome Netbios\usuario*/ $auth_pass = "senha_do_usuario"; /*Senha do usuario do dominio*/ // [...]]]></description>
			<content:encoded><![CDATA[<pre class="php" style="border: 1px solid #d0d0d0; color: #000066; background-color: #f0f0f0;">&lt;?php
// Variaveis Globais
$ldap_server = "seudominio.com.br";
/*Usamos o nome do dominio ou o nome do Servidor do dominio Casa
seja 1 servidor Apenas*/
$dominio = "seudominio\\"; /*Aqui usaremos o nome Netbios do dominio*/

// Usuario para autenticacao na Base LDAP
$auth_user = "seudominio\usuario_de_consulta";
/*nome Netbios\usuario*/

$auth_pass = "senha_do_usuario";
/*Senha do usuario do dominio*/

// Caminho LDAP do Dominio
$base_dn = "OU=DOMINIO,DC=seudominio,DC=com,DC=br";
/*Nome do Dominio completo + OU principal*/

// Caminho LDAP do Grupo para consulta
$filter = "(&amp;(objectClass=user)(memberOf=CN=grupo,OU=ou_do_grupo,
OU=ou_principal,DC=seudominio,DC=com,DC=br))";

//Funcao para conectar na base LDAP listar os usuarios de um grupo.

if (($connect=@ldap_connect($ldap_server))) {
 if (($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
 if (($search=@ldap_search($connect, $base_dn, $filter))){
 $number_returned = ldap_count_entries($connect,$search);
 $info = ldap_get_entries($connect, $search);

   for ($i=0; $i &lt; $info["count"]; $i++){

     $user_pure = $info[$i]["samaccountname"][0];
     $user_up = strtoupper($user_pure);
     echo "Ususario - $user_up&lt;br&gt;";
   }

 }

 }

}
// Fecha a conexao LDAP.
ldap_close($connect);
?&gt;

Fonte: www.revistaphp.com.br</pre>
<p><strong>Mais informações sobre AD:<br />
</strong>http://www.learnthat.com/Software/learn/1295/Introduction-to-Active-Directory/</p>
<p><strong>Abaixo uma breve descrição das variáveis:</strong><br />
$ldap_server -&gt; essa variavel deve apontar para o servidor Active Directory, que pode ser preenchida com um nome FQDN ou o IP do servidor, ou seja, será a base onde consultaremos o(s) usuário(s).</p>
<p>$dominio -&gt; essa variável deve conter o nome NETBIOS do domínio que é o nome curto do domínio do seu Active Directory. Suponhamos que seu domínio fosse phpldap.com.br , o nome curto(NETBIOS) para esse domínio seria phpldap que atribuímos a variável ‘$dominio’.</p>
<p>$auth_user -&gt; esse variável deve conter o nome de um usuário existente na base do Active Diretory. Suponhamos que você tenha na sua base o usuário ‘teste’, nesse caso usando o exemplo acima com o nome do domínio phpldap a variável seria preenchida assim ‘phpldap\teste’. Esse usuário serva para se conectar a base de dados.<br />
$auth_pass -&gt; essa variável deve ser preenchida com a senha do usuário teste do Active Directory, conforme exemplo acima.</p>
<p>$base_dn -&gt; usando o exemplo do domínio phpldap.com.br essa variável ficaria da seguinte forma ‘OU=phpldap,DC=phpldap,DC=com,DC=br’.</p>
<p>$filter -&gt; deve ser preenchida com o caminho LDAP completo do grupo no qual você deseja pesquisar os usuários.</p>
<p>Obs: o código acima consulta usuários na base de dados de um servidor Active Directory, e também pode ser adaptado para consultar usuários em uma base de dados OPENLDAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/07/27/consultando-ldap-com-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Entendendo as Expressões Regulares</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/03/25/entendendo-as-expressoes-regulares/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/03/25/entendendo-as-expressoes-regulares/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 16:31:53 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[css + js]]></category>
		<category><![CDATA[Php + Mysql]]></category>
		<category><![CDATA[expressões regulares]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.7/?p=152</guid>
		<description><![CDATA[Prefácio E o assunto hoje é Expressões Regulares! Com algumas vasculhadas pela internet podemos encontrar inúmeras definições para expressões regulares, porém, vou ficar com a da Wikipédia de lingua portuguesa. Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de [...]]]></description>
			<content:encoded><![CDATA[<p><script src="js/mootools.js" type="text/javascript"></script><br />
 <script src="js/code.js" type="text/javascript"></script></p>
<p><!-- div.code{ 		border:1px solid #000; 		border-left:8px solid #000; 		padding:8px; 		background-color:#ccc; 	} --></p>
<div id="geral">
<div id="conteudo">
<div class="post">
<div>
<h3 class="tituloArtigo">Prefácio</h3>
<p>E o assunto hoje é Expressões Regulares!</p>
<p>Com algumas vasculhadas pela internet podemos encontrar inúmeras definições para expressões regulares, porém, vou ficar com a da Wikipédia de lingua portuguesa.</p>
<div class="code">Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.</p>
<p>Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expressão regular buscar por um padrão rr, obterá as palavras carro e terra.<br />
Existem diferentes formatos para definir-se expressões regulares, porém com algumas noções gerais é possível entender boa parte das expressões.</p>
</div>
<p>Fonte: Wikipédia &#8211; Expressão Regular</p>
<h3 class="tituloArtigo">Conceito</h3>
<p>As Expressões Regulares (ER, Ereg ou RegEx &#8211; para os mais íntimos), então, são um método rápido e simples de manipulação e combinação avançada de strings.</p>
<p>Vamos partir do princípio! Uma expressão regular é essencialmente um padrão. É com base nesse padrão que a expressão em questão será avaliada. Primeiro vamos aprender a sintaxe das expressões para depois aprender como fazê-las funcionar&#8230;</p>
<h3 class="tituloArtigo">Operador ^</h3>
<p>Este é o primeiro operador que vamos aprender. O ^ indica que a expressão deve iniciar com a string dada.</p>
<div class="code">^era</div>
<p>Esta sintaxe irá definir que a string dada deverá começar com &#8216;era&#8217;. No caso, &#8220;era uma vez&#8221; seria uma string concordante. Porém, se você tentar &#8220;Ele era triste&#8221;, não obterá sucesso.</p>
<h3 class="tituloArtigo">Operador $</h3>
<p>Já que temos o operador para definir o começo, temos que ter um para definir o final também! Com $ nós definimos a string que deverá conincidir com o final.</p>
<div class="code">fim$</div>
<p>Esta sintaxe irá definir que a string dada deverá terminar com &#8216;fim&#8217;. Tentando validar a string &#8220;E nunca terá fim&#8221; obteremos sucesso, o que não acontecerá com a string &#8220;O fim está próximo&#8221;.</p>
<h3 class="tituloArtigo">Caracteres em Branco e Caracteres de Escape</h3>
<p>Assim como no PHP, em expressões regulares nós temos também que nos utilizar de caracteres de escape, a saber: barra invertida (\).</p>
<p>Segue, então, a lista com os caracteres de espaço em branco e alguns caracteres que necessitam de escape.</p>
<div class="code">\t     &#8211; Caracter de tabulação</p>
<p>\n     &#8211; Nova linha<br />
\f     &#8211; Avanço de página<br />
\r     &#8211; Retorno de carro</p>
<p>\.     &#8211; Qualquer caractere<br />
\\     &#8211; Uma barra invertida literal<br />
\-     &#8211; Um hífen literal</p>
</div>
<p>&#8230; e com alguma garimpada pela rede você consegue encontrar uma lista mais completa!</p>
<h3 class="tituloArtigo">Classes de Caracteres</h3>
<p>Classes de caracteres são uma espécie de grupo que contêm todas as ocorrências que deverão (ou não deverão) constar em uma expressão&#8230;</p>
<p>Por exemplo&#8230; Para permitir apenas letras vogais, usaríamos:</p>
<div class="code">[AaEeIiOoUu]</div>
<p>Então com este código teríamos um padrão que só permitirá que apenas vogais estejam na string dada.</p>
<p>Vamos agora aprender intervalo de caracteres</p>
<div class="code">[a-z]     &#8211; Qualquer letra minúscula<br />
[A-Z]     &#8211; Qualquer letra maiúscula<br />
[a-zA-Z] &#8211; Qualquer letra maiúscula ou minúscula<br />
[0-9]      &#8211;  Qualquer número</p>
<p>[0-9\.\-] &#8211; Qualquer número, ponto ou sinal de subtração</p>
</div>
<p>Bom&#8230; Tudo muito legal, muito simples&#8230; Mas isto serve apenas para combinação de UM caractere.</p>
<div class="code">^[a-z][0-9]$</div>
<p>Neste caso teríamos uma expressão de apenas dois caracteres em que o primeiro tem necessariamente que ser uma letra minúscula e o segundo ser um número.</p>
<p>Agora vamos aprender outra função para o operador ^! Fora de uma classe de caracteres, ele serve para demonstrar o que deve haver no início, porém dentro, ele serve para mostrar o que não deve ocorrer.</p>
<div class="code">^[^0-9][0-9]$</div>
<p>Aqui nós definimos que a expressão deve começar com um caractere que não seja um número e seja imediatamente seguido por um caractere que será um número!</p>
<h3 class="tituloArtigo">Classes de Caracteres Pré-definidas</h3>
<p>Para evitar chateação, foram criadas as classes de caracteres pré-definidas que já vêm junto com o interpretador de ER que você estiver utilizando (lembrando que estão presentes apenas no método POSIX).</p>
<div class="code">[[:alpha:]] // Qualquer letra (alfabético)</p>
<p>[[:digit:]] // Qualquer número (dígito)<br />
[[:alnum:]] // Qualquer letra ou número (alfanumérico)<br />
[[:space:]] // Qualquer caractere de espaço<br />
[[:upper:]] // Qualquer letra maíuscula<br />
[[:lower:]] // Qualquer letra minúscula</p>
<p>[[:punct:]] // Qualquer caractere de pontuação<br />
[[:xdigit:]] // Qualquer dígito hexadecimal (Equivalente a: [0-9a-fA-F])</p>
</div>
<h3 class="tituloArtigo">Ocorrências Múltiplas</h3>
<p>Agora vamos pra parte em que realmente começa a fazer sentido usar-se expressões regulares.</p>
<div class="code">^[[:alpha:]]{3}$ // Qualquer palavra de três letras</p>
<p>^a{4}$ // Só fecha com a expressão &#8216;aaaa&#8217;<br />
^a{2,4}$ // Fecha com &#8216;aa&#8217;, &#8216;aaa&#8217; e &#8216;aaaa&#8217;<br />
^a{2,}$ // Fecha com &#8216;aa&#8217;, &#8216;aaa&#8217;, &#8216;aaaa&#8217;, &#8216;aaaaa&#8217; e assim por diante</p>
</div>
<p>Até aqui&#8230; Tudo tranquilo? Então vamos em frente!</p>
<p>Há outros modos de representar a repetição de caracteres!</p>
<div class="code">?     &#8211; Uma ocorrência ou nenhuma (Equivale a {0,1})<br />
*     &#8211; Nenhuma ocorrência, uma ocorrência, duas ocorrências e por aí vai (Equivale a {0,})<br />
+     &#8211; Uma ou mais ocorrências (Equivale a {1,})</div>
<p>Se até aqui foi tudo tranqüilo, estamos muito bem! <img src='http://www.gilix.com.br/rafael_cambui/wordpress_2.7/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Vamos então para o tópico final de expressões regulares</p>
<h3 class="tituloArtigo">Alternação e Parênteses</h3>
<p>A alternação se baseia no caractere de &#8220;pipe&#8221;, o famoso |. Ele é bem parecido com o operador lógico OR. Por exemplo&#8230;</p>
<div class="code">r|s é equivalente a [rs]</div>
<p>Para caracteres simples é com certeza mais conveniente utilizar as classes. A alternação é basicamente útil para utilizar alternância de palavras.</p>
<div class="code">João|Maria|José</div>
<p>Esta expressão só irá retornar verdadeiro se a string dada for &#8220;João&#8221; OU &#8220;Maria&#8221; OU &#8220;José&#8221;.</p>
<p>Agora vamos aos parênteses. Eles tem uma função muito importante.<br />
Caso você utilize</p>
<div class="code">feliz+</p>
<p>Somente fecharia com:<br />
feliz</p>
<p>felizz<br />
felizzz<br />
felizzzz<br />
&#8230;</p>
</div>
<p>Porém com os parênteses, temos um jeito mais interessante de interar com palavras repetidas.</p>
<div class="code">(feliz)+</p>
<p>Irá fechar com:<br />
feliz<br />
felizfeliz<br />
felizfelizfeliz<br />
&#8230;</p>
</div>
<p>Quando utilizados em conjunto, obtemos bastante flexibilidade para nossas expressões regulares.</p>
<div class="code">(fel|g|aprend)iz</p>
<p>Irá fechar com:<br />
feliz<br />
giz<br />
aprendiz</p>
<p>&#8212;&#8212;&#8212;&#8211;<br />
João|Maria$     &#8211; Fecha com &#8216;João&#8217; em qualquer parte da string ou com &#8216;Maria&#8217; no final</p>
<p>(João|Maria)$   &#8211; Fecha tanto com &#8220;João&#8221; quanto &#8220;Maria&#8221;, porém, no final da string<br />
([ab])([xy])    &#8211; Fecha com &#8216;ax&#8217;, &#8216;ay&#8217;, &#8216;bx&#8217; e &#8216;by&#8217;</p>
</div>
<p>E fim de papo!</p>
<h3 class="tituloArtigo">Utilizando expressões regulares no PHP</h3>
<p>Agora que já aprendemos essa porrada de regras, temos que saber como aplicá-las! (Lembrando que este é o método POSIX. Caso você vá utilizar ER em outra linguagem, pode ter de fazer algumas adaptações)</p>
<h3 class="tituloArtigo">ereg() e eregi()</h3>
<p>Vou ensinar apenas essas duas&#8230; Caso você queira se aprofundar mais, olhe no manual do php no capitulo de expressões regulares! <img src='http://www.gilix.com.br/rafael_cambui/wordpress_2.7/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>int ereg(string padrão, string fonte [, array registro]);</p>
<p>Esta função retorna TRUE se o padrão dado for encontrado na fonte e FALSE caso contrário.</p>
<div id="cop_3c4dfde4b117419f7e08f6a4de3ad9267f524c5f" class="copia"><code><span style="color: #000000;"></p>
<p><span style="color: #0000bb;">&lt;?php</span></p>
<p>$email</p>
<p></span><span style="color: #007700;">= </span><span style="color: #dd0000;">'mario@gmail.com'</span><span style="color: #007700;">;</p>
<p></span><span style="color: #0000bb;">$padrao </span><span style="color: #007700;">= </span><span style="color: #dd0000;">"^(.+)@(.+)\.(.+)$"</span><span style="color: #007700;">;</p>
<p>if (</p>
<p></span><span style="color: #0000bb;">ereg</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$padrao</span><span style="color: #007700;">,</span><span style="color: #0000bb;">$mail</span><span style="color: #007700;">)) {</p>
<p>print</p>
<p></span><span style="color: #dd0000;">'Seu email passou na validacao'</span><span style="color: #007700;">;</p>
<p>}</p>
<p>else {</p>
<p>print </span><span style="color: #dd0000;">'Seu email nao passou na validacao'</span><span style="color: #007700;">;</p>
<p>}</p>
<p></span><span style="color: #0000bb;">?&gt;</span></p>
<p></code></div>
<p>O que temos?<br />
A string dada deverá começar com algum caractere qualquer em qualquer quantidade, seguido de uma arroba, seguido de mais qualquer caractere em qualquer quantidade, seguido de um ponto literal, seguido de mais qualquer sequência de caracteres, que deverão então finalizar a string.</p>
<p>A função eregi() se comporta de modo semelhante, porém não diferencia maiúsculas e minúsculas.</p>
<h3 class="tituloArtigo">Conclusão</h3>
<p>O mundo das expressões regulares é muito grande e abrangente. Com certeza não vai ser com essa passada de olho que você vai se tornar um expert em ER, mas serve pra dar uma noção do que elas são e para que servem!</p>
<p>Fonte: www.phphit.com.br</p>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2010/03/25/entendendo-as-expressoes-regulares/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Select Dinâmico De Estados E Cidades</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/10/07/select-dinamico-de-estados-e-cidades/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/10/07/select-dinamico-de-estados-e-cidades/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 17:10:38 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[css + js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Php + Mysql]]></category>
		<category><![CDATA[cidade]]></category>
		<category><![CDATA[dinamico]]></category>
		<category><![CDATA[estados]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[Select Dinâmico De Estados E Cidades]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.0/?p=74</guid>
		<description><![CDATA[Dando uma passeiada a net encontrei alguns artigos sobre scripts pronto do google e achei um esquema no Blog de um amigo, melhorei o esquema e agora em poucas linhas vc obtem uma cidade a partir de um estado utilizando um select, isso sem precisar de saber coodar em Ajax. Codigo Fonte: &#60;html&#62; &#60;head&#62; &#60;title&#62;Documento [...]]]></description>
			<content:encoded><![CDATA[<p>Dando uma passeiada a net encontrei alguns artigos sobre scripts pronto do google e achei um esquema no Blog de um amigo, melhorei o esquema e agora em poucas linhas vc obtem uma cidade a partir de um estado utilizando um select, isso sem precisar de saber coodar em Ajax.</p>
<p>Codigo Fonte:</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Documento sem t&amp;iacute;tulo&lt;/title&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243;&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://cidades-estados-js.googlecode.com/files/cidades-estados-v0.2.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script&gt;<br />
window.onload = function()<br />
{<br />
new dgCidadesEstados(document.getElementById(&#8216;estado&#8217;), document.getElementById(&#8216;cidade&#8217;), true);<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;select id=&#8221;estado&#8221; name=&#8221;estado&#8221;&gt;&lt;/select&gt;<br />
&lt;select id=&#8221;cidade&#8221; name=&#8221;cidade&#8221;&gt;&lt;/select&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/10/07/select-dinamico-de-estados-e-cidades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validando login com Ajax</title>
		<link>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/05/10/validando-login-com-ajax/</link>
		<comments>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/05/10/validando-login-com-ajax/#comments</comments>
		<pubDate>Sat, 10 May 2008 21:02:38 +0000</pubDate>
		<dc:creator>Rafael</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Validando login com Ajax]]></category>

		<guid isPermaLink="false">http://www.gilix.com.br/rafael_cambui/wordpress_2.0/?p=34</guid>
		<description><![CDATA[Criei este sistema que valida se o usuário esta cadastrado antes mesmo de acabar de concluir o cadastro. Se tentarem se cadastrar com um nome de usuário que já existe aparecerá uma mensagem quando o campo nome perder o foco. O sistema é muito simples e não tem segredo e eu não fiquei perdendo tempo [...]]]></description>
			<content:encoded><![CDATA[<p>Criei este  <a href="http://www.htmlstaff.org/ver.php?id=8269#" onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " onmouseover="hw8946182671995(event, this, '-1274443753'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" onclick="hwClick8946182671995(-1274443753);return false;" style="border-bottom: 1px dotted; color: #ff0000; text-decoration: underline" oncontextmenu="return false;">sistema</a> que valida se o usuário esta cadastrado antes mesmo de acabar de concluir o cadastro.</p>
<p>Se tentarem se cadastrar com um nome de usuário que já existe aparecerá uma mensagem quando o campo nome perder o foco.</p>
<p>O sistema é muito simples e não tem segredo e eu não fiquei perdendo tempo enfeitando o código com  <a href="http://www.htmlstaff.org/ver.php?id=8269#" onmouseout="hideMaybe(event, this); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='dotted 1px'; " onmouseover="hw18867315322995(event, this, '-1274443753'); this.style.cursor='hand'; this.style.textDecoration='underline'; this.style.borderBottom='solid';" onclick="hwClick18867315322995(-1274443753);return false;" style="border-bottom: 1px dotted; color: #ff0000; text-decoration: underline" oncontextmenu="return false;">CSS</a> nem nada, o foco aqui é o AJAX e mostrar que ele retorna true ou false depois de digitar o nome de usuário.</p>
<p>Arquivo cadastro.html:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1257" /&gt;
    &lt;title&gt;Login&lt;/title&gt;
&lt;style&gt;
&lt;!--
html, body {
    margin:0;
    padding:0;
}    

fieldset {
    width:260px;
    margin:0 auto;
    padding:30px;
}

.texto {
    width:250px;
    border:1px solid gray;
}

.erro {
    width:250px;
    border:1px solid red;
}

.alerta2 {
    border:1px solid gray;
}
--&gt;
&lt;/style&gt;
&lt;script src="ajax.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="funcoes.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;fieldset&gt;
    &lt;legend&gt;Usuario&lt;/legend&gt;
        &lt;form id="form1" name="form1" method="post" action="login.php"&gt;
            &lt;div id="alerta"&gt;&lt;/div&gt;
            &lt;label&gt;Login&lt;/label&gt;&lt;br /&gt;
            &lt;input name="login" id="login" type="text" maxlength="30" class="texto" onblur="javascript: envia('receber.php', 'POST', false);" /&gt;&lt;br /&gt;
            &lt;labeL&gt;Senha&lt;/labeL&gt;&lt;br /&gt;
            &lt;input name="senha" id="senha" type="password" maxlength="30" class="texto" /&gt;&lt;br /&gt;
          &lt;input name="botao" type="submit" value="Enviar" /&gt;
    &lt;/form&gt;
&lt;/fieldset&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<pre>
Arquivo ajax.js:

function ajax() {
};
ajax.prototype.iniciar = function() {

    try{
        this.xmlhttp = new XMLHttpRequest();
    }catch(ee){
        try{
            this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
            try{
                this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(E){
                this.xmlhttp = false;
            }
        }
    }
    return true;
}

ajax.prototype.ocupado = function() {
    estadoAtual = this.xmlhttp.readyState;
    return (estadoAtual &amp;&amp; (estadoAtual &lt; 4));
}

ajax.prototype.processa = function() {
    if (this.xmlhttp.readyState == 4 &amp;&amp; this.xmlhttp.status == 200) {
        return true;
    }
}

ajax.prototype.enviar = function(url, metodo, modo) {
    if (!this.xmlhttp) {
        this.iniciar();
    }
    if (!this.ocupado()) {
        if(metodo == "GET") {
            this.xmlhttp.open("GET", url, modo);
            this.xmlhttp.send(null);
        } else {
            this.xmlhttp.open("POST", url, modo);
            this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            this.xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
            this.xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
            this.xmlhttp.setRequestHeader("Pragma", "no-cache");
            this.xmlhttp.send(url);
        }    

        if (this.processa) {
            return unescape(this.xmlhttp.responseText.replace(/\+/g," "));
        }
    }
    return false;</pre>
<pre> }</pre>
<pre>
Arquivo funcoes.js:

function envia(url, metodo, modo)
{
    var login = document.getElementById('form1').login.value;
    remoto  = new ajax();
    xmlhttp = remoto.enviar(url + "?login=" + login, metodo, modo );
    if(xmlhttp) {
        document.getElementById('login').className = 'erro';
        document.getElementById('alerta').className = 'alerta2';
        document.getElementById("alerta").innerHTML = 'Esse usuario ja esta cadastrado';
    } else {
        document.getElementById('login').className = 'texto';
        document.getElementById('alerta').className = '';
        document.getElementById("alerta").innerHTML = '';
    }
}

Arquivo receber.php:

&lt;?php
$texto = $_REQUEST["login"];
// no lugar do if basta fazer uma conexao com o banco e um select pesquisando o nome do usuario se ja existe
//acho que todos sabem fazer isso ne?
if($texto == "Fulano") {
    echo true;
} else {
    echo false;
}</pre>
<pre>
Tá ai só com o funcional para vocês adaptarem do jeito que achar melhor!
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gilix.com.br/rafael_cambui/wordpress_2.7/2008/05/10/validando-login-com-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

