<?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>BRASIL TUTORIAIS - Tudo sobre tutoriais &#187; PHP</title>
	<atom:link href="http://brasiltutoriais.com.br/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://brasiltutoriais.com.br</link>
	<description>Apostilas, CSS, PHP, jogos, JAVA, Wordpress</description>
	<lastBuildDate>Fri, 19 Aug 2011 13:16:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Script gratis de Loja Virtual</title>
		<link>http://brasiltutoriais.com.br/script-gratis-de-loja-virtual/</link>
		<comments>http://brasiltutoriais.com.br/script-gratis-de-loja-virtual/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 01:14:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=506</guid>
		<description><![CDATA[Este sem duvida é um dos mais procurados na internet. Todo mundo hoje procura por scripts bons que atendam a real necessidade de cada um. A boa noticia é que, existem uma grande quantidade de sistemas que realmente funcionam e podem lhe render uma boa renda se o seu produto for interessante e exclusivo. Abaixo [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/script-php-webmail-gratis/' rel='bookmark' title='Permanent Link: SCRIPT PHP WEBMAIL GRÁTIS'>SCRIPT PHP WEBMAIL GRÁTIS</a></li>
<li><a href='http://brasiltutoriais.com.br/script-para-fazer-fotoblog/' rel='bookmark' title='Permanent Link: SCRIPT PARA FAZER FOTOBLOG'>SCRIPT PARA FAZER FOTOBLOG</a></li>
<li><a href='http://brasiltutoriais.com.br/baixar-templates-para-blogspot-e-blogger/' rel='bookmark' title='Permanent Link: Baixar Templates para BlogSpot e Blogger'>Baixar Templates para BlogSpot e Blogger</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Este sem duvida é um dos mais procurados na internet. Todo mundo hoje procura por scripts bons que atendam a real necessidade de cada um.<br />
<span id="more-506"></span></p>
<p>A boa noticia é que, existem uma grande quantidade de sistemas que realmente funcionam e podem lhe render uma boa renda se o seu produto for interessante e exclusivo.</p>
<p>Abaixo tentarei listar alguns sistemas que realmente funcionam e podem atender as suas necessidades:</p>
<p><a href="http://www.prestashop.com/" target="_blank">Prestashop</a> –  Uma solução relativamente nova mas que encontrou muitos seguidores no  Brasil e em Portugal. por ser mais atual possui recursos mais avançados e  fáceis de utilizar seguindo a tendência das aplicações web 2.0. Você  precisa de plano de hospedagem com PHP 5 e Mysql 5 para trabalhar com o  Prestashop. [<a href="http://forum.prestashopbr.com/" target="_blank">Comunidade Brasil</a>] [<a href="http://prestashoppt.com/" target="_blank">Comunidade Portugal</a>] [<a href="http://visie.com.br/pagseguro/prestashop.php" target="_blank">Pagseguro</a>]</p>
<p><a href="http://www.magentocommerce.com/" target="_blank">Magento</a> – Uma plataforma para criar lojas virtuais que não fica parada no  tempo. É um software recente e moderno muito utilizado por empresas de  hospedagem que oferecem planos específicos para lojas de comércio  eletrônico. Tem suporte para o português, e utiliza técnicas de SEO para  que sua loja virtual fique bem posicionada nos sites de busca. Possui  módulo para o Pagseguro.</p>
<p><a href="http://www.cubecart.com/" target="_blank">CubeCart</a> – Um  script gratuito para servidores PHP com Mysql. Existe uma versão paga do  script que serve apenas para remover a mensagem de copyright que  aparece nas páginas do script mas que não irá incomodar a maioria dos  usuários. Suas principais vantagens é a personalização através de  templates, ferramenta amigável de busca e url amigaveis, muitos módulos  gratuitos que podem ser instalados com muita facilidade, ferramenta de  email marketing para contato com os clientes e um sistema de entrega  para quem pretende vender conteúdo digital como ebooks, softwares e  outros produtos que são enviados por e-mail ou download. Ele tem suporte  para o português. [<a href="http://www.cubecart.com/demos/" target="_blank">Demo</a>] [<a href="http://www.cubecart.com/downloads/" target="_blank">Download</a>] [<a href="http://www.google.com.br/search?hl=pt-BR&amp;safe=off&amp;q=cubecart+templates+free&amp;btnG=Pesquisar&amp;meta=" target="_blank">Templates</a>]</p>
<p><a href="http://www.zen-cart.com/" target="_blank">ZenCart</a> – Quem  está acostumado com o OsCommerce vai gostar do ZenCart por ser muito  parecido. Ele é gratuito e tem código aberto. Ele é considerado um  software de instalação fácil. Tem como características a organização de  loja por categorias de produto, possibilidade de criar promoções e  descontos, suporte para vários idiomas, calculo de taxas e custos de  frete, sistema de gerenciamento de clientes e utilização de templates  que podem ser modificados com facilidade por qualquer pessoa que entenda  de webdesigner. Existem centenas de <a href="http://www.zen-cart.com/index.php?main_page=index&amp;cPath=40" target="_blank">módulos gratuitos</a> que você pode baixar e instalar na sua loja. [<a href="http://tutorials.zen-cart.com/index.php" target="_blank">Documentação</a>] [<a href="http://br.groups.yahoo.com/group/zen-cart-pt/" target="_blank">Lista de discussão</a>] [<a href="http://www.google.com.br/search?hl=pt-BR&amp;safe=off&amp;q=zen+Cart+Templates+free&amp;btnG=Pesquisar&amp;meta=" target="_blank">Templates free</a>]</p>
<p><a href="http://virtuemart.net/" target="_blank">Virtuemart</a> – É a solução de loja eletrônica para quem possui site desenvolvido no <a href="http://www.joomla.org/" target="_blank">Joomla</a>.  Ele é fácil de instalar e configurar. Possui versão em português  sendo  gratuito. Existem formas de integrar o VirtueMart com o sistema de  pagamentos do Pagseguro. [<a href="http://virtuemart.net/index.php?option=com_content&amp;task=view&amp;id=54&amp;Itemid=147" target="_blank">Download</a>] [<a href="http://virtuemart.net/index.php?option=com_content&amp;task=view&amp;id=145&amp;Itemid=97" target="_blank">Demo</a>]</p>
<p><a href="http://www.ubercart.org/" target="_blank">Ubercart</a> – Esta é a solução de comércio eletrônico para quem possui site criado no <a href="http://drupal.org/" target="_blank">Drupal</a>.  Ele trabalha de forma integrada e pode ser instalado com facilidade. O  código é aberto e pode ser modificado por programadores mais  experientes. Possui recursos para venda de produtos digitais que são  entregues por download como ebooks, músicas e softwares.</p>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/script-php-webmail-gratis/' rel='bookmark' title='Permanent Link: SCRIPT PHP WEBMAIL GRÁTIS'>SCRIPT PHP WEBMAIL GRÁTIS</a></li>
<li><a href='http://brasiltutoriais.com.br/script-para-fazer-fotoblog/' rel='bookmark' title='Permanent Link: SCRIPT PARA FAZER FOTOBLOG'>SCRIPT PARA FAZER FOTOBLOG</a></li>
<li><a href='http://brasiltutoriais.com.br/baixar-templates-para-blogspot-e-blogger/' rel='bookmark' title='Permanent Link: Baixar Templates para BlogSpot e Blogger'>Baixar Templates para BlogSpot e Blogger</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/script-gratis-de-loja-virtual/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conheça o construtor de sites Google Sites</title>
		<link>http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/</link>
		<comments>http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:30:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=447</guid>
		<description><![CDATA[Uma ótima ferramenta online para construir seus sites. O melhor de tudo, sem aquelas propagandas que ninguem quer em seu site. O construtor de sites Google Sites é um serviço de criação online de sites oferecido pelo Google onde  você pode criar seu site sem ter conhecimento avançado sobre editores de sites e programação. A criação [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/' rel='bookmark' title='Permanent Link: Como criar um site de Graça com WebNode?'>Como criar um site de Graça com WebNode?</a></li>
<li><a href='http://brasiltutoriais.com.br/conheca-a-nova-versao-do-google-adsense/' rel='bookmark' title='Permanent Link: Conheça a Nova versão do Google Adsense'>Conheça a Nova versão do Google Adsense</a></li>
<li><a href='http://brasiltutoriais.com.br/criador-de-sites-simples-para-iniciantes/' rel='bookmark' title='Permanent Link: CRIADOR DE SITES SIMPLES PARA INICIANTES'>CRIADOR DE SITES SIMPLES PARA INICIANTES</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Uma ótima ferramenta online para construir seus sites. O melhor de tudo, sem aquelas propagandas que ninguem quer em seu site.</p>
<p><span id="more-447"></span></p>
<p>O construtor de sites Google Sites é um serviço de criação online de sites oferecido pelo Google onde  você pode criar seu site sem ter conhecimento avançado sobre editores de sites e programação.</p>
<p>A criação e edição de páginas é muito simples, basta que você clique sobre um botão que aparece na parte superior do site para adicionar novas páginas ou editar uma página existente.</p>
<p>As configurações de aparência e funcionamento interno são feitas através de um painel de controle (um pouco confuso) onde você poderá organizar a maneira que seu site será exibido para os visitantes, trocar o template, editar as cores, adicionar anúncios do Adsense para ganhar dinheiro com seu site, entre outras coisas.</p>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/' rel='bookmark' title='Permanent Link: Como criar um site de Graça com WebNode?'>Como criar um site de Graça com WebNode?</a></li>
<li><a href='http://brasiltutoriais.com.br/conheca-a-nova-versao-do-google-adsense/' rel='bookmark' title='Permanent Link: Conheça a Nova versão do Google Adsense'>Conheça a Nova versão do Google Adsense</a></li>
<li><a href='http://brasiltutoriais.com.br/criador-de-sites-simples-para-iniciantes/' rel='bookmark' title='Permanent Link: CRIADOR DE SITES SIMPLES PARA INICIANTES'>CRIADOR DE SITES SIMPLES PARA INICIANTES</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como criar um site de Graça com WebNode?</title>
		<link>http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/</link>
		<comments>http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 17:10:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=442</guid>
		<description><![CDATA[Ferramentas para criar sites de graça. O WebNode é um serviço de criação de sites que permite criar em pouco tempo, sites incríveis com dezenas de páginas, blog, galeria de fotos, livro de visitas, enquetes e até fórum. Tudo de graça. Tudo é feito através de um painel de controle onde você pode arrastar os [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/' rel='bookmark' title='Permanent Link: Conheça o construtor de sites Google Sites'>Conheça o construtor de sites Google Sites</a></li>
<li><a href='http://brasiltutoriais.com.br/criar-formulario-de-e-mail-para-seu-site/' rel='bookmark' title='Permanent Link: criar formulário de e-mail para seu site'>criar formulário de e-mail para seu site</a></li>
<li><a href='http://brasiltutoriais.com.br/como-desbloquear-celular-motorola-de-graca/' rel='bookmark' title='Permanent Link: Como desbloquear celular Motorola de graça'>Como desbloquear celular Motorola de graça</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Ferramentas para criar sites de graça. O WebNode é um serviço de criação de sites que permite criar em pouco tempo, sites incríveis com dezenas de páginas, blog, galeria de fotos, livro de visitas, enquetes e até fórum. Tudo de graça.</p>
<p><span id="more-442"></span></p>
<div id="TixyyLink">
<p>Tudo é feito através de um painel de controle onde você pode arrastar os elementos, editar textos, adicionar imagens, criar e editar novas páginas.</p>
<p>Link: <a title="WebNode" rel="nofollow" href="http://www.webnode.com/r/criarsites">WebNode</a></p>
</div>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/' rel='bookmark' title='Permanent Link: Conheça o construtor de sites Google Sites'>Conheça o construtor de sites Google Sites</a></li>
<li><a href='http://brasiltutoriais.com.br/criar-formulario-de-e-mail-para-seu-site/' rel='bookmark' title='Permanent Link: criar formulário de e-mail para seu site'>criar formulário de e-mail para seu site</a></li>
<li><a href='http://brasiltutoriais.com.br/como-desbloquear-celular-motorola-de-graca/' rel='bookmark' title='Permanent Link: Como desbloquear celular Motorola de graça'>Como desbloquear celular Motorola de graça</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simples sistema de notícias que não possui Banco de Dados MySql</title>
		<link>http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/</link>
		<comments>http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 01:07:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=427</guid>
		<description><![CDATA[Um otimo sistema para aqueles que não tem muito conhecimento com Banco de dados e Mysql. Vale a pena conferir este sistema. Apresentamos o  CuteNews , um sistema de Notícias gratuito que não precisa de banco de dados, a única exigência é que o servidor onde o sistema será instalado suporte PHP. Todos os dados referentes [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/' rel='bookmark' title='Permanent Link: Criando um portal de notícias com área administrativa em PHP com MySQL'>Criando um portal de notícias com área administrativa em PHP com MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Um otimo sistema para aqueles que não tem muito conhecimento com Banco de dados e Mysql. Vale a pena conferir este sistema.</p>
<p><span id="more-427"></span></p>
<div id="TixyyLink">
<p>Apresentamos o  <strong><a title="CuteNews" rel="nofollow" href="http://cutephp.com/">CuteNews</a></strong> , um sistema de Notícias gratuito que não precisa de banco de dados, a única exigência é que o servidor onde o sistema será instalado suporte PHP.</p>
<p>Todos os dados referentes as notícias, são gravados em arquivos presentes dentro da pasta em que o CuteNews for instalado.</p>
<p>Esta é uma ótima opção para webmasters e blogueiros que precisam de um sistema dinâmico para publicar notícias ou novidades rapidamente.</p>
</div>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/' rel='bookmark' title='Permanent Link: Criando um portal de notícias com área administrativa em PHP com MySQL'>Criando um portal de notícias com área administrativa em PHP com MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</title>
		<link>http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/</link>
		<comments>http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 12:01:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=372</guid>
		<description><![CDATA[Com a crescente do PHP e das soluções abertas nos ultimos anos, vem ccada vez mais se tornando comum desenvolvedores adotarem a plataforma Linux em seu ambiente de produção recorendo a distro Ubuntu uma das mais populares portas de entrada no mundo Linux. Esse tutorial visa ensinar a quem está descobrindo esse novo mundo como [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/' rel='bookmark' title='Permanent Link: Mudando a senha padrão do MySQL'>Mudando a senha padrão do MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/' rel='bookmark' title='Permanent Link: Mudando a senha padrão do MySQL'>Mudando a senha padrão do MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/' rel='bookmark' title='Permanent Link: Iniciando o uso do MySQL'>Iniciando o uso do MySQL</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Com a crescente do PHP e das soluções abertas nos ultimos anos, vem ccada vez mais se tornando comum desenvolvedores adotarem a plataforma Linux em seu ambiente de produção recorendo a distro Ubuntu uma das mais populares portas de entrada no mundo Linux.</p>
<p><span id="more-372"></span></p>
<p>Esse tutorial visa ensinar a quem está descobrindo esse novo mundo como subir um servidor Apache com PHP e MySQl integrados facilmente.</p>
<p>A primeira vista ao falar de Linux as pessoas se lembram de algo complicado, programas que têm de ser instalado na unha e etc. Nada como o Windows que em um clique se resolve tudo instalando um daqueles pacotes de servidores web.</p>
<p>Mas se engana quem acha que os pacotes prontos são exclusividade do Windows, cada vez mais está mais fácil instalar programas no Linux e com a ajuda do XAMPP você conseguirá subir um servidor web completo, com apache, php, mysql, myphpadmin, e ftp, em poucos segundos, vamos aos passos:</p>
<ol>
<li>Baixe o <a href="http://www.sistemasgerenciais.com/index.php?page=download&amp;op=getFile&amp;title=Xampp+para+Linux+1.7+(APACHE+%2B+PHP+%2B+MYSQL)">Xammp 1.7</a> para Linux a partir do site SistemasGerenciais.com. Salve o mesmo na pasta home/(seu_nome_de_usuario)</li>
<p> </p>
<li>Entre com o usuário ROOT no console do Ubuntu (terminal ou shell dependendo da sua versão):</li>
<p> </p>
<p>Clique em:</p>
<p> </p>
<p><em>Aplicações&gt;&gt;Acessorios&gt;&gt;Console </em></p>
<p> </p>
<p>e caso não saiba a senha do ROOT digite:</p>
<p> </p>
<p><em>sudo passwd</em></p>
<p>Digite a senha do seu usuário administrador e em seguida digite a nova senha do ROOT<br />
 </p>
<li>Digite o comando &#8220;su&#8221;, aperte enter e digite a senha do ROOT. Isso vai alterar seu usuário para ROOT</li>
<p> </p>
<li>Copie os arquivos compactados para pasta \opt:</li>
<p>No console caminhe até a pasta onde você salvou os arquivos cd /home/(usuario)/ e digite o comando de extração de arquivos TAR</p>
<p> </p>
<p><strong>tar xvfz</strong><em> xampp-linux-1.7.tar.gz -C ../../opt</em><br />
 </p>
<li>Chame o lampp com o parametro start:</li>
<p> </p>
<p><em>/opt/lampp/lampp start</em></p>
<p>Pronto, tá ai seu servidor mais fácil que no Windows.</p>
<p>Agora para testar basta digitar http://localhost no nagevador, ou o ip/nome da sua máquina.</p>
<p> </p>
<p>Fonte: <a href="http://www.sistemasgerenciais.com/index.php?page=news&amp;op=readNews&amp;title=Instalar+PHP%2C+MySQL%2C+PHPMyAdmin+e+FTP+no+Ubuntu" target="_blank">sistemasgerenciais</a></ol>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/' rel='bookmark' title='Permanent Link: Mudando a senha padrão do MySQL'>Mudando a senha padrão do MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/' rel='bookmark' title='Permanent Link: Mudando a senha padrão do MySQL'>Mudando a senha padrão do MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/' rel='bookmark' title='Permanent Link: Iniciando o uso do MySQL'>Iniciando o uso do MySQL</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hotlink &#8211; Evite o roubo de suas imagens</title>
		<link>http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/</link>
		<comments>http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 03:17:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=263</guid>
		<description><![CDATA[Fiquei bastante tempo sem postar nada, mas hoje consegui um tempinho pra trazer mais um tutorial pra vocês: Evitando o roubo de imagens (o famoso Hotlink). Vamos dar o exemplo de uma situação fictícia: Você tem um site de fotos de bolas modelos e percebe que outros sites/blogs estão usando essas fotos… São tags  usando [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Fiquei bastante tempo sem postar nada, mas hoje consegui um tempinho pra trazer mais um tutorial pra vocês: Evitando o roubo de imagens (o famoso <strong><em>Hotlink</em></strong>).</p>
<p><span id="more-263"></span></p>
<p>Vamos dar o exemplo de uma situação fictícia: Você tem um site de fotos de bolas modelos e percebe que outros sites/blogs estão usando essas fotos… São tags  usando o caminho absoluto da foto (dentro do seu site) no SRC da imagem.</p>
<p>Isso faz com que os sites exibam o seu conteúdo mas não percam <strong>bandwidth</strong> (ou taxa de transferência mensal)… E sabe quem vai perder o bandwidth dessas imagens? Você.</p>
<p>Para evitar isso você precisa adicionar algumas regrinhas ao seu <strong>.htaccess</strong> (arquivo de configurações e diretrizes do Apache) que fica, geralmente, na raiz do seu site</p>
<pre>RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?meusite\.com\.br/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagens/proibido.jpg [L]</pre>
<p>Esse código fará com que, caso um outro site que não esteja dentro do domínio <strong>meusite.com.br</strong> tente chamar uma imagem do seu site, receberá uma outra imagem “<strong>imagens/proibido.jpg</strong>“… Isso fará o outro site passar uma boa vergonha.</p>
<p>Mas suponhamos que você queira ser legal com o resto do mundo e chato apenas com um outro site… o meuinimigo.com.br. Você pode fazer assim:</p>
<pre>RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?meuinimigo\.com\.br/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?meuinimigo\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?meuinimigo\.org/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /imagens/proibido.jpg [L]</pre>
<p>Com isso, qualquer site irá poder usar as suas imagens, menos os domínios <strong>meuinimigo.com.br</strong>, <strong>meuinimigo.net</strong> e <strong>meuinimigo.org</strong>.</p>
<p>Mas e se você não quer colocar outra imagem no lugar e simplesmente exibir uma página “forbidden” (acesso negado)? É só trocar a última linha:</p>
<p><span style="MARGIN-LEFT: 0px !important"><code>RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]</code></span></p>
<p><span style="MARGIN-LEFT: 0px !important"><code>Fonte: <a href="http://thiagobelem.net/blog/tutoriais/2009/10/19/evitando-o-roubo-de-imagens-hotlink-650/">ThiagoBelem</a></code></span></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que são e como usar as Cron Jobs?</title>
		<link>http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/</link>
		<comments>http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:51:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=239</guid>
		<description><![CDATA[Hoje vi uma pergunta no fórum do iMasters bem simples mas que me deu vontade de criar um tópico aqui para respondê-la: Cron jobs, o que é? O que são as Cron Jobs? As Cron Jobs são como as Terefas Agendadas do Windows: são tarefas executadas automaticamente de X em X tempos… Fazendo uma analogia [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-usar-captcha-no-seu-php-ou-wordpress/' rel='bookmark' title='Permanent Link: Como usar CAPTCHA no seu PHP ou WordPress'>Como usar CAPTCHA no seu PHP ou WordPress</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hoje vi uma pergunta no fórum do iMasters bem simples mas que me deu vontade de criar um tópico aqui para respondê-la: <a href="http://forum.imasters.uol.com.br/index.php?/topic/357214-cron-jobs-o-que-e/" target="_blank"><span style="color: #33707e;">Cron jobs, o que é?</span></a></p>
<p><span id="more-239"></span></p>
<p>O que são as Cron Jobs?</p>
<p>As <em>Cron Jobs</em> são como as Terefas Agendadas do Windows: são tarefas executadas automaticamente de X em X tempos… Fazendo uma analogia à vida real é quando você tira o lixo pra fora ou arruma seu quarto, provavelmente você faz isso seguindo sempre um mesmo intervalo de tempo… De 2 em 2 dias, de 1 em 1 semana e por ai vai.</p>
<p>O termo “<em>Cron Job</em>” (também só chamado de <strong>cron</strong>) está mais ligado a sistemas <strong>UNIX</strong> do que <strong>Windows</strong> mesmo… Por isso o que vou falar aqui só se encaixa no <strong>Linux</strong>. Se você usa <strong>Windows</strong> é só dar uma olhada nas tarefas agendadas que você vai ter uma interface completa para trabalhar com as <strong>Tarefas Agendadas</strong>.</p>
<h3>Pra que usar uma Cron Job em um site/sistema online?</h3>
<p>Acho que o propósito mais comum de uma Cron Job seja a rotina de backup… Scripts que rodam diariamente (ou até mais demorados) e que fazem o backup do site e do banco de dados.</p>
<p>Você pode criar uma cron para quase qualquer coisa, mas geralmente são para atualização, limpeza, backup e etc.</p>
<p>Mas chega de lero lero…</p>
<h3>Como criar uma Cron Job?</h3>
<p>Se o seu site roda em algum servidor especializado e você tem um painel de controle como o cPanel recomendo que dê uma olhada lá pois existe uma interface web prontinha para gerenciar as crons… se você não tem esse painel ou não tem acesso à ele vai ter que ir direto ao shell / terminal do seu servidor e começar a gastar o dedo.</p>
<p>A definição de uma cron job consiste em uma linha com 6 valores separados por espaço, assim:</p>
<div id="highlighter_184258" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">minuto hora dia mes dia-da-semana linha-de-comando</code></span></span></div>
</div>
</div>
<p>Vamos a alguns exemplos de configuração de tempo antes de criar a cron em si:</p>
<h4>Cron Job que rode todo dia as 06:00am</h4>
<div id="highlighter_429465" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">0 6 * * * linha-de-comando</code></span></span></div>
</div>
</div>
<h4>Cron Job que rode as 12:30am de segunda e sexta</h4>
<div id="highlighter_682669" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">30 12 * * 1,5 linha-de-comando</code></span></span></div>
</div>
</div>
<h4>Cron Job que rode a meia-noite de três em três dias</h4>
<div id="highlighter_937000" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">0 0 */3 * * linha-de-comando</code></span></span></div>
</div>
</div>
<h4>Cron Job que rode todo dia a cada duas horas</h4>
<div id="highlighter_916392" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">0 */2 * * * linha-de-comando</code></span></span></div>
</div>
</div>
<p>Se você ficou com dificuldade nessa parte do tempo existem alguns <a href="http://www.google.com.br/search?q=cron+job+generator" target="_blank"><span style="color: #33707e;">geradores online de cron jobs</span></a> que pode te ajudar como <a href="http://www.generateit.net/cron-job/" target="_blank"><span style="color: #33707e;">esse aqui</span></a>. <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
<p> </p>
<h3>A linha-de-comando</h3>
<p>É um comando que você usaria normalmente para iniciar um script ou chamar um wget. <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
<h3>Instalando suas Cron Jobs</h3>
<p>Agora é só salvar o conteúdo das suas crons, uma por linha em um arquivo chamado cron.txt e colocar uma linha assim no começo (primeira linha) do arquivo:</p>
<div id="highlighter_192138" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">MAILTO=meuemail@meudominio.com</code></span></span></div>
</div>
</div>
<p>Isso fará com que os erros sejam enviados para o e-mail determinado.</p>
<p>Depois é só ir no terminal/shell e chamar o comando:</p>
<div id="highlighter_205023" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">crontab cron.txt</code></span></span></div>
</div>
</div>
<p>Se nada der errado a cron foi instalada com sucesso e você pode vê-la na lista de crons que estão rodando:</p>
<div id="highlighter_910144" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">crontab -l</code></span></span></div>
</div>
</div>
<p>Pra quem gostou e/ou quer saber mais ficam aqui alguns links:<br />
» <a href="http://www.thesitewizard.com/general/set-cron-job.shtml" target="_blank"><span style="color: #33707e;">http://www.thesitewizard.com/general/set-cron-job.shtml</span></a><br />
» <a href="http://www.aota.net/Script_Installation_Tips/cronhelp.php3" target="_blank"><span style="color: #33707e;">http://www.aota.net/Script_Installation_Tips/cronhelp.php3</span></a></p>
<p>Fonte: <a href="http://thiagobelem.net/blog/">ThiagoBelem</a></p>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-usar-captcha-no-seu-php-ou-wordpress/' rel='bookmark' title='Permanent Link: Como usar CAPTCHA no seu PHP ou WordPress'>Como usar CAPTCHA no seu PHP ou WordPress</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twittando pelo PHP</title>
		<link>http://brasiltutoriais.com.br/twittando-pelo-php/</link>
		<comments>http://brasiltutoriais.com.br/twittando-pelo-php/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 14:42:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=233</guid>
		<description><![CDATA[Hoje em dia o Twitter está em todos os lugares e sites… E em breve vai ser lançada uma regra que diga que “todo site/portal da web 2.0 deve ter integração com o Twitter“. Vim aqui mostrar pra vocês como é ridiculamente simples criar um Tweet via PHP sem usar nenhuma classe complicada ou API… [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/' rel='bookmark' title='Permanent Link: Bloqueando visitantes pelo IP com MySQL e PHP'>Bloqueando visitantes pelo IP com MySQL e PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hoje em dia o Twitter está em todos os lugares e sites… E em breve vai ser lançada uma regra que diga que “<em>todo site/portal da web 2.0 deve ter integração com o Twitter</em>“.</p>
<p><span id="more-233"></span></p>
<p>Vim aqui mostrar pra vocês como é ridiculamente simples criar um Tweet via PHP sem usar nenhuma classe complicada ou API… Você vai usar apenas a função <strong>file_get_contents()</strong> do PHP.</p>
<p>Veja o código da função criada para isso:</p>
<div id="highlighter_123758" class="syntaxhighlighter syntaxhighl">
<div class="bar         ">
<div class="toolbar"> </div>
<div class="item copyToClipboard">
<pre>&lt;?php
function tweet($mensagem, $usuario, $senha) {
$contexto = stream_context_create(array(
'http' =&gt; array(
'method'  =&gt; 'POST',
'header'  =&gt; sprintf("Authorization: Basic %s\r\n", base64_encode($usuario.':'.$senha)).
"Content-type: application/x-www-form-urlencoded\r\n",
'content' =&gt; http_build_query(array('status' =&gt; $mensagem)),
'timeout' =&gt; 10
),
));
$ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $contexto);

return (false !== $ret);
}
?&gt;</pre>
</div>
</div>
</div>
<div class="lines"></div>
<div class="lines">
<div class="line alt1">Viu como a função é simples? Para usá-la é só fazer assim:</div>
</div>
<div id="highlighter_176785" class="syntaxhighlighter syntaxhighl">
<div class="bar ">
<div class="toolbar"> </div>
</div>
<div class="lines">
<pre>&lt;?php
$usuario = 'SEU_USUARIO';
$senha = 'SUA_SENHA';
// Cria o tweet
tweet('Testando a função', $usuario, $senha);
?&gt;</pre>
<p> </p></div>
</div>
<p>Se você quiser, pode fazer o <a href="http://thiagobelem.net/blog/arquivos/2009/06/funcao-tweet.txt" target="_blank"><span style="color: #33707e;">download do arquivo (.txt) com a função pronta para uso</span></a>.</p>
<p>Em alguns servidores WEB a função file_get_contents não permite que você acesse endereços/sites/arquivos externos (usando http e etc)… E, geralmente, nesses servidores existe a biblioteca cURL ativada, então existe também uma versão cURL da função:</p>
<div id="highlighter_85383" class="syntaxhighlighter syntaxhighl">
<div class="bar        ">
<div class="toolbar"> </div>
</div>
<div class="lines">
<pre>&lt;?php
function tweet($mensagem, $usuario, $senha)
{
$url = 'http://twitter.com/statuses/update.json';
$fld = http_build_query(array('status' =&gt; $mensagem));
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $usuario.':'.$senha);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fld);

$ret = curl_exec($ch);

return false !== $ret;
}
?&gt;</pre>
<p>Fonte: <a href="http://thiagobelem.net/blog/">ThiagoBelem</a></div>
</div>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/' rel='bookmark' title='Permanent Link: Bloqueando visitantes pelo IP com MySQL e PHP'>Bloqueando visitantes pelo IP com MySQL e PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/twittando-pelo-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como criar um Sistema de Login com Níveis de Permissão</title>
		<link>http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/</link>
		<comments>http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:39:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=228</guid>
		<description><![CDATA[O nosso sistema consistirá em um login simples, validado por usuário e senha (encriptada) contra uma tabela no banco de dados e armazenando os dados na sessão. Haverão dois níveis de acesso para os nossos usuários: normal (1) e administrador (2). Criando a Tabela MySQL Você pode executar esse código MySQL para criar a nossa [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/sistema-de-login-utilizando-flash-e-xml/' rel='bookmark' title='Permanent Link: Sistema de Login utilizando Flash e XML'>Sistema de Login utilizando Flash e XML</a></li>
<li><a href='http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/' rel='bookmark' title='Permanent Link: Bloqueando visitantes pelo IP com MySQL e PHP'>Bloqueando visitantes pelo IP com MySQL e PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>O nosso sistema consistirá em um login simples, validado por usuário e senha (encriptada) contra uma tabela no banco de dados e armazenando os dados na sessão. Haverão dois níveis de acesso para os nossos usuários: normal (1) e administrador (2).</p>
<p><span id="more-228"></span></p>
<p>Criando a Tabela MySQL</p>
<p>Você pode executar esse código MySQL para criar a nossa tabela de usuários que tem 7 campos: id, nome, usuario, senha, niveis, ativo e cadastro:</p>
<div id="highlighter_317337" class="syntaxhighlighter syntaxhighl">
<div class="bar     ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_317337_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_317337_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">CREATE</code> <code class="keyword">TABLE</code> <code class="plain">IF </code><code class="color1">NOT</code> <code class="plain">EXISTS `usuarios` ( </code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`id` </code><code class="keyword">INT</code><code class="plain">(11) UNSIGNED </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">AUTO_INCREMENT, </code></span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`nome` </code><code class="keyword">VARCHAR</code><code class="plain">( 50 ) </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">, </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`usuario` </code><code class="keyword">VARCHAR</code><code class="plain">( 25 ) </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">, </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`senha` </code><code class="keyword">VARCHAR</code><code class="plain">( 40 ) </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">, </code></span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`email` </code><code class="keyword">VARCHAR</code><code class="plain">( 100 ) </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">, </code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`nivel` </code><code class="keyword">INT</code><code class="plain">(1) UNSIGNED </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="keyword">DEFAULT</code> <code class="string">'1'</code><code class="plain">, </code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`ativo` BOOL </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="keyword">DEFAULT</code> <code class="string">'1'</code><code class="plain">, </code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">`cadastro` DATETIME </code><code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">, </code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword">PRIMARY</code> <code class="keyword">KEY</code> <code class="plain">(`id`), </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword">UNIQUE</code> <code class="keyword">KEY</code> <code class="plain">`usuario` (`usuario`), </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword">KEY</code> <code class="plain">`nivel` (`nivel`) </code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">) ENGINE=MyISAM ;</code></span></span></div>
</div>
</div>
<p>Com isso você já tem uma tabela pronta para o nosso tutorial… Rode esse script se quiser alimentar a tabela com alguns usuários de teste:</p>
<div id="highlighter_418825" class="syntaxhighlighter syntaxhighl">
<div class="bar  ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_418825_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_418825_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">`usuarios` </code><code class="keyword">VALUES</code> <code class="plain">(</code><code class="color1">NULL</code><code class="plain">, </code><code class="string">'Usuário Teste'</code><code class="plain">, </code><code class="string">'demo'</code><code class="plain">, SHA1( </code><code class="string">'demo'</code> <code class="plain">), </code><code class="string">'usuario@demo.com.br'</code><code class="plain">, 1, 1, NOW( )); </code></span></span></div>
<div class="line alt2"><code class="number">2.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">`usuarios` </code><code class="keyword">VALUES</code> <code class="plain">(</code><code class="color1">NULL</code><code class="plain">, </code><code class="string">'Administrador Teste'</code><code class="plain">, </code><code class="string">'admin'</code><code class="plain">, SHA1( </code><code class="string">'admin'</code> <code class="plain">), </code><code class="string">'admin@demo.com.br'</code><code class="plain">, 2, 1, NOW( ));</code></span></span></div>
</div>
</div>
<p>Como vocês podem perceber, o nosso campo de senha tem 40 caracteres e quando cadastramos os usuários testes usamos <strong style="background: gray; color: white;">SHA1(’{senha}’)</strong> isso significa que usaremos uma senha encriptada… Se você quiser saber mais sobre sha1 veja esse artigo: <a href="http://thiagobelem.net/blog/php/2009/03/11/criptografia-no-php-usando-md5-sha1-e-base64-323/" target="_blank">Criptografia no PHP usando md5, sha1 e base64</a>.</p>
<p> </p>
<h3>O formulário de Login em XHTML</h3>
<p>Vamos criar agora o nosso formulário que será onde o visitante entrará com os dados e será mandado para a pagina validacao.php onde os dados serão validados (ohh).</p>
<div id="highlighter_591353" class="syntaxhighlighter syntaxhighl">
<div class="bar  ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_591353_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_591353_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">&lt;!-- Formulário de Login --&gt;</code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;</code><code class="keyword">form</code> <code class="color1">action</code><code class="plain">=</code><code class="string">"validacao.php"</code> <code class="color1">method</code><code class="plain">=</code><code class="string">"post"</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;</code><code class="keyword">fieldset</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;</code><code class="keyword">legend</code><code class="plain">&gt;Dados de Login&lt;/</code><code class="keyword">legend</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">&lt;</code><code class="keyword">label</code> <code class="color1">for</code><code class="plain">=</code><code class="string">"txUsuario"</code><code class="plain">&gt;Usuário&lt;/</code><code class="keyword">label</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">&lt;</code><code class="keyword">input</code> <code class="color1">type</code><code class="plain">=</code><code class="string">"text"</code> <code class="color1">name</code><code class="plain">=</code><code class="string">"usuario"</code> <code class="color1">id</code><code class="plain">=</code><code class="string">"txUsuario"</code> <code class="color1">maxlength</code><code class="plain">=</code><code class="string">"25"</code> <code class="plain">/&gt; </code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">&lt;</code><code class="keyword">label</code> <code class="color1">for</code><code class="plain">=</code><code class="string">"txSenha"</code><code class="plain">&gt;Senha&lt;/</code><code class="keyword">label</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">&lt;</code><code class="keyword">input</code> <code class="color1">type</code><code class="plain">=</code><code class="string">"password"</code> <code class="color1">name</code><code class="plain">=</code><code class="string">"senha"</code> <code class="color1">id</code><code class="plain">=</code><code class="string">"txSenha"</code> <code class="plain">/&gt; </code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">&lt;</code><code class="keyword">input</code> <code class="color1">type</code><code class="plain">=</code><code class="string">"submit"</code> <code class="color1">value</code><code class="plain">=</code><code class="string">"Entrar"</code> <code class="plain">/&gt; </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;/</code><code class="keyword">fieldset</code><code class="plain">&gt; </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;/</code><code class="keyword">form</code><code class="plain">&gt;</code></span></span></div>
</div>
</div>
<p>Como esse artigo não é uma aula sobre formulários e método POST eu vou pular a parte que fala sobre os names desses inputs e a relação deles com o PHP em si.</p>
<p> </p>
<h3>A validação dos dados</h3>
<p>Já temos o banco de dados e o formulário de login… Agora vamos começar a fazer a validação. Os próximos códigos deverão ser colocados dentro do <strong style="background: gray; color: white;">validacao.php</strong> que irá tratar os dados recebidos do formulário:</p>
<p>Primeiro de tudo nós precisamos verificar se o usuário de fato preencheu algo no formulário, caso contrário mandamos ele de volta para o <strong style="background: gray; color: white;">index.php</strong>:</p>
<div id="highlighter_72903" class="syntaxhighlighter syntaxhighl">
<div class="bar ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_72903_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_72903_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">2.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">3.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s) </code></span></span></div>
<div class="line alt2"><code class="number">4.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">) AND (</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'usuario'</code><code class="plain">]) OR </code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'senha'</code><code class="plain">]))) { </code></span></span></div>
<div class="line alt1"><code class="number">5.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">6.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">7.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">8.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Com isso, todo código que vier depois desse if estará seguro de que os dados foram preenchidos no formulário.</p>
<p>Agora nós iremos abrir uma conexão com o MySQL mas essa conexão pode ser feita de outra forma, até antes do if se você preferir… Depois de abrir a conexão nós iremos transmitir os dois valores inseridos pelo visitante (usuário e senha) para novas variáveis e usaremos o <strong style="background: gray; color: orange;">mysql_real_escape_string()</strong> para evitar erros no MySQL.</p>
<div id="highlighter_696194" class="syntaxhighlighter syntaxhighl">
<div class="bar    ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_696194_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_696194_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s) </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">) AND (</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'usuario'</code><code class="plain">]) OR </code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'senha'</code><code class="plain">]))) { </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Tenta se conectar ao servidor MySQL </code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">mysql_connect(</code><code class="string">'localhost'</code><code class="plain">, </code><code class="string">'root'</code><code class="plain">, </code><code class="string">''</code><code class="plain">) </code><code class="keyword">or</code> <code class="plain">trigger_error(mysql_error()); </code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Tenta se conectar a um banco de dados MySQL </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">mysql_select_db(</code><code class="string">'usuarios'</code><code class="plain">) </code><code class="keyword">or</code> <code class="plain">trigger_error(mysql_error()); </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$usuario</code> <code class="plain">= mysql_real_escape_string(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'usuario'</code><code class="plain">]); </code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$senha</code> <code class="plain">= mysql_real_escape_string(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'senha'</code><code class="plain">]); </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Agora é hora de validar os dados contra a tabela de usuários:</p>
<div id="highlighter_968470" class="syntaxhighlighter syntaxhighl">
<div class="bar    ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_968470_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_968470_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s) </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">) AND (</code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'usuario'</code><code class="plain">]) OR </code><code class="functions">empty</code><code class="plain">(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'senha'</code><code class="plain">]))) { </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Tenta se conectar ao servidor MySQL </code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">mysql_connect(</code><code class="string">'localhost'</code><code class="plain">, </code><code class="string">'root'</code><code class="plain">, </code><code class="string">''</code><code class="plain">) </code><code class="keyword">or</code> <code class="plain">trigger_error(mysql_error()); </code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Tenta se conectar a um banco de dados MySQL </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">mysql_select_db(</code><code class="string">'usuarios'</code><code class="plain">) </code><code class="keyword">or</code> <code class="plain">trigger_error(mysql_error()); </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$usuario</code> <code class="plain">= mysql_real_escape_string(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'usuario'</code><code class="plain">]); </code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$senha</code> <code class="plain">= mysql_real_escape_string(</code><code class="variable">$_POST</code><code class="plain">[</code><code class="string">'senha'</code><code class="plain">]); </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Validação do usuário/senha digitados </code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$sql</code> <code class="plain">= </code><code class="string">"SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '"</code><code class="plain">. </code><code class="variable">$usuario</code> <code class="plain">.</code><code class="string">"') AND (`senha` = '"</code><code class="plain">. sha1(</code><code class="variable">$senha</code><code class="plain">) .</code><code class="string">"') AND (`ativo` = 1) LIMIT 1"</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">18.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$query</code> <code class="plain">= mysql_query(</code><code class="variable">$sql</code><code class="plain">); </code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(mysql_num_rows(</code><code class="variable">$query</code><code class="plain">) != 1) { </code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado </code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">"Login inválido!"</code><code class="plain">; </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code><code class="keyword">else</code> <code class="plain">{ </code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Salva os dados encontados na variável $resultado </code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="variable">$resultado</code> <code class="plain">= mysql_fetch_assoc(</code><code class="variable">$query</code><code class="plain">); </code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">27.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Repare que estamos buscando registros que tenham o usuário igual ao digitado pelo visitante e que tenham uma senha igual a versão SHA1 da senha digitada pelo visitante… Também buscamos apenas por registros de usuários que estejam ativos, assim quando você precisar remover um usuário do sistema, mas não pode simplesmente excluir o registro é só trocar o valor da coluna ativo pra zero. <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" /></p>
<p>A consulta gerada fica mais ou menos assim:</p>
<div id="highlighter_895119" class="syntaxhighlighter nogutter syntaxhighl">
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">SELECT</code> <code class="plain">`id`, `nome`, `nivel` </code><code class="keyword">FROM</code> <code class="plain">`usuarios` </code><code class="keyword">WHERE</code> <code class="plain">(`usuario` = </code><code class="string">'a'</code><code class="plain">) </code><code class="color1">AND</code> <code class="plain">(`senha` = </code><code class="string">'e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98'</code><code class="plain">) </code><code class="color1">AND</code> <code class="plain">(`ativo` = 1) LIMIT 1</code></span></span></div>
</div>
</div>
<p>Depois de rodar a consulta (query) nós verificamos se o número de resultados encontrados (ou não) é diferente de um, caso seja é exibida uma mensagem de erro acompanhada de um exit que finaliza o script… Caso ele encontre apenas um resultado nós temos o nosso usuário e já puxamos o seu ID, nome e nível de acesso do banco de dados.</p>
<p> </p>
<h3>Salvando os dados na sessão</h3>
<p>Agora nós precisamos salvar os dados encontrados na sessão pois eles serão utilizados mais tarde, em outras páginas e eles precisam “persistir” até lá… Depois de salvar os dados na sessão nós iremos redirecionar o visitante para uma página restrita:</p>
<div id="highlighter_899835" class="syntaxhighlighter syntaxhighl">
<div class="bar   ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_899835_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_899835_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">19.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(mysql_num_rows(</code><code class="variable">$query</code><code class="plain">) != 1) { </code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado </code></span></span></div>
<div class="line alt1"><code class="number">21.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">"Login inválido!"</code><code class="plain">; </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code><code class="keyword">else</code> <code class="plain">{ </code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Salva os dados encontados na variável $resultado </code></span></span></div>
<div class="line alt2"><code class="number">24.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="variable">$resultado</code> <code class="plain">= mysql_fetch_assoc(</code><code class="variable">$query</code><code class="plain">); </code></span></span></div>
<div class="line alt1"><code class="number">25.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">26.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Se a sessão não existir, inicia uma </code></span></span></div>
<div class="line alt1"><code class="number">27.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword">if</code> <code class="plain">(!isset(</code><code class="variable">$_SESSION</code><code class="plain">)) session_start(); </code></span></span></div>
<div class="line alt2"><code class="number">28.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">29.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Salva os dados encontrados na sessão </code></span></span></div>
<div class="line alt2"><code class="number">30.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioID'</code><code class="plain">] = </code><code class="variable">$resultado</code><code class="plain">[</code><code class="string">'id'</code><code class="plain">]; </code></span></span></div>
<div class="line alt1"><code class="number">31.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioNome'</code><code class="plain">] = </code><code class="variable">$resultado</code><code class="plain">[</code><code class="string">'nome'</code><code class="plain">]; </code></span></span></div>
<div class="line alt2"><code class="number">32.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioNivel'</code><code class="plain">] = </code><code class="variable">$resultado</code><code class="plain">[</code><code class="string">'nivel'</code><code class="plain">];                  </code></span></span></div>
<div class="line alt1"><code class="number">33.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">34.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Redireciona o visitante </code></span></span></div>
<div class="line alt1"><code class="number">35.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: restrito.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">36.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p> </p>
<h3>Verificando se o usuário está logado</h3>
<p>Nosso sistema de login está quase completo! Agora só precisamos verificar se o usuário está logado no sistema e se o seu o nível de acesso condiz com o da página… Vamos agora escrever um pequeno bloco de PHP no início do arquivo <strong style="background: gray; color: white;">restrito.php</strong> (que só deve ser acessado por usuários logados):</p>
<div id="highlighter_70692" class="syntaxhighlighter syntaxhighl">
<div class="bar   ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_70692_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_70692_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// A sessão precisa ser iniciada em cada página diferente </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!isset(</code><code class="variable">$_SESSION</code><code class="plain">)) session_start(); </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Verifica se não há a variável da sessão que identifica o usuário </code></span></span></div>
<div class="line alt1 highlighted"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!isset(</code><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioID'</code><code class="plain">])) { </code></span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Destrói a sessão por segurança </code></span></span></div>
<div class="line alt1"><code class="number">09.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">session_destroy(); </code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Redireciona o visitante de volta pro login </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt; </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;h1&gt;Página restrita&lt;/h1&gt; </code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;p&gt;Olá, &lt;?php </code><code class="functions">echo</code> <code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioNome'</code><code class="plain">]; ?&gt;!&lt;/p&gt;</code></span></span></div>
</div>
</div>
<p>Pronto meu amigo! O seu sistema de login está pronto para funcionar… Só vamos fazer alguns incrementos para ele ficar mais “usável”… Agora você vai ver como fazer a verificação de usuário logado e de nível de acesso, por exemplo para uma página onde apenas os administradores possam ter acesso:</p>
<div id="highlighter_488634" class="syntaxhighlighter syntaxhighl">
<div class="bar      ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_488634_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_488634_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">01.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">02.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt1"><code class="number">03.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// A sessão precisa ser iniciada em cada página diferente </code></span></span></div>
<div class="line alt2"><code class="number">04.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!isset(</code><code class="variable">$_SESSION</code><code class="plain">)) session_start(); </code></span></span></div>
<div class="line alt1"><code class="number">05.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2 highlighted"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable">$nivel_necessario</code> <code class="plain">= 2; </code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">08.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments">// Verifica se não há a variável da sessão que identifica o usuário </code></span></span></div>
<div class="line alt1 highlighted"><code class="number">09.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">if</code> <code class="plain">(!isset(</code><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioID'</code><code class="plain">]) OR (</code><code class="variable">$_SESSION</code><code class="plain">[</code><code class="string">'UsuarioNivel'</code><code class="plain">] &lt; </code><code class="variable">$nivel_necessario</code><code class="plain">)) { </code></span></span></div>
<div class="line alt2"><code class="number">10.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Destrói a sessão por segurança </code></span></span></div>
<div class="line alt1"><code class="number">11.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">session_destroy(); </code></span></span></div>
<div class="line alt2"><code class="number">12.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Redireciona o visitante de volta pro login </code></span></span></div>
<div class="line alt1"><code class="number">13.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><code class="spaces"> </code><span class="block" style="margin-left: 7px !important;"> </span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p> </p>
<h3>Código de Logout</h3>
<p>O arquivo <strong style="background: gray; color: white;">logout.php</strong> é tão simples que pode ter uma linha só:</p>
<div id="highlighter_128495" class="syntaxhighlighter syntaxhighl">
<div class="bar">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_128495_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_128495_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php session_start(); session_destroy(); header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; ?&gt;</code></span></span></div>
</div>
</div>
<p>Ou se você preferir, uma versão mais extensa:</p>
<div id="highlighter_404232" class="syntaxhighlighter syntaxhighl">
<div class="bar  ">
<div class="toolbar"><a class="item viewSource" style="width: 16px; height: 16px;" title="view source" href="http://brasiltutoriais.com.br/wp-admin/#viewSource">view source</a></div>
<div class="item copyToClipboard"><object id="highlighter_404232_clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><embed id="highlighter_404232_clipboard" type="application/x-shockwave-flash" width="16" height="16"> </embed></object></div>
<p><a class="item printSource" style="width: 16px; height: 16px;" title="print" href="http://brasiltutoriais.com.br/wp-admin/#printSource">print</a><a class="item about" style="width: 16px; height: 16px;" title="?" href="http://brasiltutoriais.com.br/wp-admin/#about">?</a></div>
<div class="lines">
<div class="line alt1"><code class="number">1.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">&lt;?php </code></span></span></div>
<div class="line alt2"><code class="number">2.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">session_start(); </code><code class="comments">// Inicia a sessão </code></span></span></div>
<div class="line alt1"><code class="number">3.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">session_destroy(); </code><code class="comments">// Destrói a sessão limpando todos os valores salvos </code></span></span></div>
<div class="line alt2"><code class="number">4.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string">"Location: index.php"</code><code class="plain">); </code><code class="functions">exit</code><code class="plain">; </code><code class="comments">// Redireciona o visitante </code></span></span></div>
<div class="line alt1"><code class="number">5.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>–</p>
<p>Quem não conseguir fazer um sistema de login depois dessa aula não vai ganhar batata frita no fim do dia!</p>
<p>Fonte: <a href="http://thiagobelem.net/blog/">ThiagoBelem</a></p>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/sistema-de-login-utilizando-flash-e-xml/' rel='bookmark' title='Permanent Link: Sistema de Login utilizando Flash e XML'>Sistema de Login utilizando Flash e XML</a></li>
<li><a href='http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/' rel='bookmark' title='Permanent Link: Bloqueando visitantes pelo IP com MySQL e PHP'>Bloqueando visitantes pelo IP com MySQL e PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sistema de votação online em PHP e MySQL</title>
		<link>http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/</link>
		<comments>http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 12:15:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=189</guid>
		<description><![CDATA[Este tutorial vai ensinar a fazer uma votação em PHP. Este votação será só de apenas uma escolha.     1. Criando o arquivo para votar:   Cria um ficheiro html e escreve a tua pergunta e respostas como no exemplo seguinte: &#60;HTML&#62; &#60;HEAD&#62; &#60;TITLE&#62;votação&#60;/TITLE&#62; &#60;/HEAD&#62; &#60;BODY&#62; &#60;FONT SIZE=&#8221;3&#8243;&#62;Qual a sua base de dados preferida?&#60;/FONT&#62;&#60;BR&#62; [...]


NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/' rel='bookmark' title='Permanent Link: Criando um portal de notícias com área administrativa em PHP com MySQL'>Criando um portal de notícias com área administrativa em PHP com MySQL</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td class="texto">Este tutorial vai ensinar a fazer uma votação em PHP. Este votação será só de apenas uma escolha.</td>
</tr>
</tbody>
</table>
<p><span id="more-189"></span></p>
<table border="0" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td class="texto"> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong><span style="font-family: Verdana, Arial, Helvetica, sans-serif;">1. Criando o arquivo para votar:</span></strong></span></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td class="texto">Cria um ficheiro html e escreve a tua pergunta e respostas como<br />
no exemplo seguinte:</p>
<p class="codigo_flash">&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;votação&lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
&lt;FONT SIZE=&#8221;3&#8243;&gt;Qual a sua base de dados preferida?&lt;/FONT&gt;&lt;BR&gt;<br />
&lt;FORM NAME=&#8221;votação&#8221; ACTION=&#8221;votacao.php&#8221; METHOD=&#8221;get&#8221;&gt;<br />
&lt;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;1&#8243;&gt;MySQL&lt;BR&gt;<br />
&lt;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;2&#8243;&gt;msSQL&lt;BR&gt;<br />
&lt;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;3&#8243;&gt;PostgreSQL&lt;BR&gt;<br />
&lt;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;4&#8243;&gt;ODBC&lt;BR&gt;<br />
&lt;/FORM&gt;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><span style="font-size: x-small; font-family: Verdana, Arial, Helvetica, sans-serif;"><strong>2. Criando a tabela no MySQL:</strong></span></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td class="texto">Na shell do MySQL digite após selecionar uma Base de Dados escreva o seguinte código:</p>
<p class="codigo_flash">CREATE TABLE votacao (id INT(2) NOT NULL auto_increment primary key, descricao CHAR(50), votos CHAR(4));</p>
<p>Muito bem, a tabela foi criada e está pronta a usar. Para continuar, da mesma forma que criá-mos a tabela vamos agora inserir os seguintes códigos para adicionar as opções na tabela:</p>
<p class="codigo_flash">INSERT INTO votacao (descricao,votos) VALUES (&#8220;MySQL&#8221;,&#8221;0&#8243;);<br />
INSERT INTO votacao (descricao,votos) VALUES (&#8220;msSQL&#8221;,&#8221;0&#8243;);<br />
INSERT INTO votacao (descricao,votos) VALUES (&#8220;PostgreSQL&#8221;,&#8221;0&#8243;);<br />
INSERT INTO votacao (descricao,votos) VALUES (&#8220;ODBC&#8221;,&#8221;0&#8243;);</p>
<p>Repara que só são adicionadas a descrição e os votos, mas não o ID, justamente<br />
porque quando a tabela foi criada foi designada a função de AUTO_INCREMENT, o que fará com que ela automaticamente incremente o valor.</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><span style="font-size: x-small; font-family: Verdana, Arial, Helvetica, sans-serif;"><strong>3. Criar o PHP que fará todo o trabalho:</strong></span></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td class="texto">Cria um ficheiro chamado votação.php e dentro dele coloque o seguinte código que será explicado detalhadamente:</p>
<p class="codigo_flash">&lt;?</p>
<p class="codigo_flash">if ($escolha != &#8220;&#8221;) { // Verifica se foi inserido um voto e prossegue em frente no caso de verdade</p>
<p class="codigo_flash">// Variáveis a serem alteradas</p>
<p class="codigo_flash">$mysql_host = &#8220;&#8221;; // local do servidor MySQL<br />
$mysql_user = &#8220;&#8221;: // utilizador do MySQL<br />
$mysql_pass = &#8220;&#8221;; // senha do utilizador do MySQL<br />
$mysql_dtbs = &#8220;&#8221;; // base de dados onde a tabela foi criada</p>
<p class="codigo_flash">$num_resp = &#8220;&#8221;; // número de opções na tua votação<br />
$pergunta = &#8220;&#8221;; // pergunta da votação</p>
<p>// Nada mais a ser alterado</p>
<p class="codigo_flash">$mysql_conx = mysql_connect($mysql_host,$mysql_user,$mysql_pass);<br />
// ligação ao MySQL</p>
<p class="codigo_flash">$radio = $num_resp + 1;<br />
// para uso posterior</p>
<p class="codigo_flash">mysql_select_db($mysql_dtbs);<br />
// seleciona a base de dados</p>
<p class="codigo_flash">// aqui começa todo o trabalho do PHP para actualizar a base de dados</p>
<p class="codigo_flash">$query_upd = &#8220;SELECT * FROM votacao WHERE id=$escolha&#8221;;<br />
$resul_upd = mysql_query($query_upd);<br />
// aqui o PHP selecciona apenas os registos que coincidem com a escolha, neste<br />
// caso so uma opção</p>
<p class="codigo_flash">$obj_upd = mysql_fetch_object($resul_upd);<br />
// o comando mysql_fetch_object() separa os resultados de uma query por colunas<br />
// neste caso, $obj_upd -&gt; descrição da opção que o utilizador votou</p>
<p class="codigo_flash">$vot_upd = $obj_upd-&gt;votos;<br />
$vot_upd++;<br />
// separa só os votos e adicinona mais um voto</p>
<p class="codigo_flash">$upd_upd = &#8220;UPDATE votacao SET votos=$vot_upd WHERE id=$escolha&#8221;;<br />
mysql_query($upd_upd);<br />
// atualizou a base de dados</p>
<p class="codigo_flash">// Agora o PHP fará a pesquisa na base de dados e retornará as opções, seus<br />
// respectivos votos, total de votos e a sua escolha.</p>
<p class="codigo_flash">echo &#8220;&lt;H3&gt;&#8221; . $pergunta . &#8220;&lt;/H3&gt;&#8221;;</p>
<p class="codigo_flash">for($i=1;$i&lt;$radio;$i++) {</p>
<p class="codigo_flash">$query[$i] = &#8220;SELECT * FROM votação WHERE id=$i&#8221;;<br />
$resul[$i] = mysql_query($query[$i]);<br />
$objet[$i] = mysql_fetch_object($resul[$i]);</p>
<p>echo &#8220;&lt;FONT FACE=\&#8221;Verdana\&#8221; SIZE=\&#8221;1\&#8221;&gt;&lt;B&gt;&#8221; . $objet[$i]-&gt;opcao . &#8220;&lt;/B&gt; &#8221; . $objet[$i]-&gt;descricao . &#8220;&lt;B&gt; &#8221; . $objet[$i]-&gt;votos . &#8220;&lt;/B&gt;&lt;BR&gt;&#8221;;</p>
<p>$tot_vt += $objet[$i]-&gt;votos;</p>
<p class="codigo_flash">// tudo isto serve para requisitar o resultado de cada opção e exibir no écran</p>
<p class="codigo_flash">}<br />
echo &#8220;&lt;FONT SIZE=\&#8221;1\&#8221;&gt;&lt;B&gt;Total de votos:&lt;/B&gt;&#8221; . $tot_vt . &#8220;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;Sua Escolha&lt;/B&gt;:&#8221; . $escolha . &#8220;&lt;/FONT&gt;&lt;/FONT&gt;&#8221;;<br />
}<br />
?&gt;</td>
</tr>
</tbody>
</table>
<p> </p>
<p>simples ne?</p>


<p>NOTICIAS RELACIONADAS:<ol><li><a href='http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql/' rel='bookmark' title='Permanent Link: Sistema de votação online em PHP e MySQL'>Sistema de votação online em PHP e MySQL</a></li>
<li><a href='http://brasiltutoriais.com.br/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</a></li>
<li><a href='http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/' rel='bookmark' title='Permanent Link: Criando um portal de notícias com área administrativa em PHP com MySQL'>Criando um portal de notícias com área administrativa em PHP com MySQL</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

