<?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>Thu, 13 May 2010 19:48:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 e edição [...]<p><a href="http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/">Conheça o construtor de sites Google Sites</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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/google-maps-ganha-novas-funcoes-e-jogo-atraves-do-google-labs/' rel='bookmark' title='Permanent Link: Google Maps ganha novas funções e jogo através do Google Labs'>Google Maps ganha novas funções e jogo através do Google Labs</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/&amp;title=Conhe%C3%A7a+o+construtor+de+sites+Google+Sites&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/conheca-o-construtor-de-sites-google-sites/">Conheça o construtor de sites Google Sites</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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/google-maps-ganha-novas-funcoes-e-jogo-atraves-do-google-labs/' rel='bookmark' title='Permanent Link: Google Maps ganha novas funções e jogo através do Google Labs'>Google Maps ganha novas funções e jogo através do Google Labs</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 elementos, [...]<p><a href="http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/">Como criar um site de Graça com WebNode?</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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-criar-um-sistema-de-login-com-niveis-de-permissao/' rel='bookmark' title='Permanent Link: Como criar um Sistema de Login com Níveis de Permissão'>Como criar um Sistema de Login com Níveis de Permissão</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/&amp;title=Como+criar+um+site+de+Gra%C3%A7a+com+WebNode%3F&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/como-criar-um-site-de-graca-com-webnode/">Como criar um site de Graça com WebNode?</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



<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-criar-um-sistema-de-login-com-niveis-de-permissao/' rel='bookmark' title='Permanent Link: Como criar um Sistema de Login com Níveis de Permissão'>Como criar um Sistema de Login com Níveis de Permissão</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 as notícias, [...]<p><a href="http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/">Simples sistema de notícias que não possui Banco de Dados MySql</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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-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>
<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>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/&amp;title=Simples+sistema+de+not%C3%ADcias+que+n%C3%A3o+possui+Banco+de+Dados+MySql&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/">Simples sistema de notícias que não possui Banco de Dados MySql</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



<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-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>
<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>
</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 subir [...]<p><a href="http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/">Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/&amp;title=Como+instalar+PHP%2C+MySQL%2C+PHPMyAdmin+e+FTP+no+Ubuntu&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/">Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



<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 o [...]<p><a href="http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/">Hotlink &#8211; Evite o roubo de suas imagens</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/&amp;title=Hotlink+-+Evite+o+roubo+de+suas+imagens&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/hotlink-evite-o-roubo-de-suas-imagens/">Hotlink &#8211; Evite o roubo de suas imagens</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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 à vida [...]<p><a href="http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/">O que são e como usar as Cron Jobs?</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/&amp;title=O+que+s%C3%A3o+e+como+usar+as+Cron+Jobs%3F&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/o-que-sao-e-como-usar-as-cron-jobs/">O que são e como usar as Cron Jobs?</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</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… Você [...]<p><a href="http://brasiltutoriais.com.br/twittando-pelo-php/">Twittando pelo PHP</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</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[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/twittando-pelo-php/&amp;title=Twittando+pelo+PHP&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/twittando-pelo-php/">Twittando pelo PHP</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



<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/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</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/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 tabela de [...]<p><a href="http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/">Como criar um Sistema de Login com Níveis de Permissão</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/&amp;title=Como+criar+um+Sistema+de+Login+com+N%C3%ADveis+de+Permiss%C3%A3o&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/como-criar-um-sistema-de-login-com-niveis-de-permissao/">Como criar um Sistema de Login com Níveis de Permissão</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</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>1</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;
&#60;FORM NAME=&#8221;votação&#8221; ACTION=&#8221;votacao.php&#8221; METHOD=&#8221;get&#8221;&#62;
&#60;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;1&#8243;&#62;MySQL&#60;BR&#62;
&#60;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;2&#8243;&#62;msSQL&#60;BR&#62;
&#60;INPUT TYPE=&#8221;radio&#8221; NAME=&#8221;escolha&#8221; VALUE=&#8221;3&#8243;&#62;PostgreSQL&#60;BR&#62;
&#60;INPUT [...]<p><a href="http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/">Sistema de votação online em PHP e MySQL</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/&amp;title=Sistema+de+vota%C3%A7%C3%A3o+online+em+PHP+e+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><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><a href="http://brasiltutoriais.com.br/sistema-de-votacao-online-em-php-e-mysql-2/">Sistema de votação online em PHP e MySQL</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></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>
		<item>
		<title>Criando um portal de notícias com área administrativa em PHP com MySQL</title>
		<link>http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/</link>
		<comments>http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 13:03:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=139</guid>
		<description><![CDATA[
Veremos neste artigo/tutorial como criar um portal de notícias utilizando PHP com a gravação das notícias em um Banco de dados MySQL. Este portal terá como recursos: o envio de notícias; área administrativa para publicação, alteração ou exclusão das notícias; página inicial listando todas as notícias publicadas; visualização das notícias.

Este artigo/tutorial é indicado para aqueles [...]<p><a href="http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/">Criando um portal de notícias com área administrativa em PHP com MySQL</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



NOTICIAS RELACIONADAS:<ol><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>
<li><a href='http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/' rel='bookmark' title='Permanent Link: Simples sistema de notícias que não possui Banco de Dados MySql'>Simples sistema de notícias que não possui Banco de Dados 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>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em;"><script type="text/javascript" src="http://button.topsy.com/widget/retweet-big?url=http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/&amp;title=Criando+um+portal+de+not%C3%ADcias+com+%C3%A1rea+administrativa+em+PHP+com+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Veremos neste artigo/tutorial como criar um portal de notícias utilizando PHP com a gravação das notícias em um Banco de dados MySQL. Este portal terá como recursos: o envio de notícias; área administrativa para publicação, alteração ou exclusão das notícias; página inicial listando todas as notícias publicadas; visualização das notícias.</p>
<p><span id="more-139"></span></p>
<div class="artigo">Este artigo/tutorial é indicado para aqueles que já tem um conhecimento básico de PHP e MySQL, portanto eu não irei entrar em maiores detalhes do funcionamento básico deste sistema. Se você não esta familiarizado com os mesmos, dê uma olhada nos seguintes links que eles poderão lhe ajudar a compreender melhor eles:</p>
<ul class="lista">
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1881" target="_blank">Introdução a utilização do PHP com MySQL &#8211; Parte 1</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1882" target="_blank">Introdução a utilização do PHP com MySQL &#8211; Parte 2</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/forum/index.php?showtopic=15114" target="_blank">Guia de utilização de PHP e MySQL</a>.</li>
</ul>
<p>Vamos lá então!</p>
<p>Nós iremos utilizar a seguinte tabela para armazenar as notícias:</p>
<pre>CREATE TABLE artigo (
	id Integer(11) NOT NULL AUTO_INCREMENT UNIQUE,
	titulo Varchar(100) NOT NULL,
	descricao Varchar(255) NOT NULL,
	artigo Text NOT NULL,
	autor Varchar(100),
	email Varchar(255),
	data_hora DateTime NOT NULL,
	ip Varchar(50) NOT NULL,
	publicado Char(1) DEFAULT 'N',
	PRIMARY KEY (id)
);</pre>
<p>Criada a tabela, vamos começar a montar os PHPs para tratar as notícias a serem inseridas no sistema.</p>
<p>Arquivo conexao.php:</p>
<pre>&lt;?php
$conexao = mysql_connect("seu_host", "seu_nome_de_usuario", "sua_senha");
$db = mysql_select_db("seu_banco_de_dados");
?&gt;</pre>
<p>Onde:</p>
<ul class="lista">
<li>seu_host: Você deverá indicar o endereço do host do seu Banco de dados MySQL (por exemplo: localhost (normalmente usado quando o servidor é local; mysql.seudominio.com.br; etc);</li>
<li>seu_nome_de_usuario: Você deverá indicar o seu nome de usuário nele (por exemplo: seu_login);</li>
<li>sua_senha: Você deverá indicar a sua senha no mesmo (por exemplo: sua_senha);</li>
<li>seu_banco_de_dados: Você deverá indicar o nome do seu Banco de dados no MySQL.</li>
</ul>
<p>Arquivo enviar_noticia.php:</p>
<pre>&lt;?php
include "conexao.php";

if(!isset($_POST["submit"])) {
	echo "Envio de notícia&lt;br /&gt;&lt;br /&gt;";
	echo "&lt;form action=\"enviar_noticia.php\" name=\"form\" method=\"post\"&gt;";
	echo "Título:&lt;br /&gt;&lt;input name=\"titulo\" type=\"text\" maxlength=\"100\" size=\"40\" /&gt;&lt;br /&gt;";
	echo "Descrição:&lt;br /&gt;&lt;input name=\"descricao\" type=\"text\" maxlength=\"255\" size=\"40\" /&gt;&lt;br /&gt;";
	echo "Notícia:&lt;br /&gt;&lt;textarea name=\"artigo\" rows=\"10\" cols=\"30\"&gt;&lt;/textarea&gt;&lt;br /&gt;";
	echo "Autor:&lt;br /&gt;&lt;input name=\"autor\" type=\"text\" maxlength=\"100\" size=\"40\" /&gt;&lt;br /&gt;";
	echo "E-mail:&lt;br /&gt;&lt;input name=\"email\" type=\"text\" maxlength=\"255\" size=\"40\" /&gt;&lt;br /&gt;";
	echo "&lt;input name=\"submit\" type=\"submit\" value=\"Enviar\" /&gt;&amp;nbsp;&amp;nbsp;&lt;input type=\"reset\" value=\"Redefinir\" /&gt;";
	echo "&lt;/form&gt;";
}
else {
	$titulo = $_POST["titulo"];
	$descricao = $_POST["descricao"];
	$artigo = $_POST["artigo"];
	$autor = $_POST["autor"];
	$email = $_POST["email"];
	$data_hora = date("Y-m-d H:i:s");
	$ip = getenv("REMOTE_ADDR");

	$sql_enviar_noticia = "INSERT INTO artigo (titulo, descricao, artigo, autor, email, data_hora, ip, publicado) VALUES ('$titulo', '$descricao', '$artigo', '$autor', '$email', '$data_hora', '$ip', 'N')";
	$resultado_enviar_noticia = mysql_query($sql_enviar_noticia)
	or die (mysql_error());

	echo "Envio de notícia&lt;br /&gt;&lt;br /&gt;";
	echo "Notícia enviada com sucesso!";
}
?&gt;</pre>
<p>Através deste arquivo as notícias estarão sendo enviadas para o seu Banco de dados.</p>
<p>Note que eu não implementei nenhum tipo de validação dos dados no mesmo (se eles foram preenchidos, se o e-mail indicado é válido). Se você quiser ver algumas validações do tipo, acesse:</p>
<ul class="lista">
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1780" target="_blank">Validação de dados em PHP</a></li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=2020" target="_blank">Validando um e-mail</a></li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=2144" target="_blank">A função empty()</a></li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=4512" target="_blank">Algumas formas de validar um endereço de e-mail em uma string</a></li>
</ul>
<p>Vamos agora montar nossa área administrativa.</p>
<p>Arquivo administrar.php:</p>
<pre>&lt;?php
include "conexao.php";

echo "&lt;table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"500\"&gt;";
echo "&lt;tr&gt;";
echo "&lt;td width=\"50\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;ID&lt;/div&gt;&lt;/td&gt;";
echo "&lt;td width=\"210\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;Título&lt;/div&gt;&lt;/td&gt;";
echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;Enviado em&lt;/div&gt;&lt;/td&gt;";
echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;Publicado?&lt;/div&gt;&lt;/td&gt;";
echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;Alterar&lt;/div&gt;&lt;/td&gt;";
echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;Excluir&lt;/div&gt;&lt;/td&gt;";
echo "&lt;/tr&gt;";

$sql_administrar_noticias = "SELECT id, titulo, data_hora, publicado FROM artigo ORDER BY id DESC";
$resultado_administrar_noticias = mysql_query($sql_administrar_noticias)
or die (mysql_error());

if(mysql_num_rows($resultado_administrar_noticias) &lt; 1) {
	echo "&lt;tr&gt;";
	echo "&lt;td width=\"50\" valign=\"top\" colspan=\"6\"&gt;&lt;div align=\"center\"&gt;Nenhuma notícia encontrada&lt;/div&gt;&lt;/td&gt;";
	echo "&lt;/tr&gt;";
}
else {
	while ($linha=mysql_fetch_array($resultado_administrar_noticias)) {
		$id = $linha["id"];
		$titulo = $linha["titulo"];
		$data_hora = $linha["data_hora"];
		$publicado = $linha["publicado"];

		if($publicado=="S") {
			$publicado = "Sim";
		}
		else {
			$publicado = "Não";
		}

		echo "&lt;tr&gt;";
		echo "&lt;td width=\"50\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;$id&lt;/div&gt;&lt;/td&gt;";
		echo "&lt;td width=\"210\" valign=\"top\"&gt;$titulo&lt;/td&gt;";
		echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;$data_hora&lt;/div&gt;&lt;/td&gt;";
		echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;$publicado&lt;/div&gt;&lt;/td&gt;";
		echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;&lt;a href=\"alterar_noticia.php?id=$id\"&gt;Alterar&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;";
		echo "&lt;td width=\"60\" valign=\"top\"&gt;&lt;div align=\"center\"&gt;&lt;a href=\"excluir_noticia.php?id=$id\"&gt;Excluir&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;";
		echo "&lt;/tr&gt;";
	}
}

echo "&lt;/table&gt;";
?&gt;</pre>
<p>Através da área administrativa listamos as notícias já enviadas ao sistema e podemos estar as editando e excluindo &#8211; estas duas últimas ações estaremos criando agora no sistema.</p>
<p>Arquivo alterar_noticia.php:</p>
<pre>&lt;?php
include "conexao.php";

if(!isset($_POST["submit"])) {
	$id = (int)$_GET["id"];

	$sql_alterar_noticia = "SELECT * FROM artigo WHERE id='$id' ORDER BY id DESC";
	$resultado_alterar_noticia = mysql_query($sql_alterar_noticia)
	or die (mysql_error());

	if(mysql_num_rows($resultado_alterar_noticia) &lt; 1) {
		echo "Notícia inválida.";
	}
	else {
		while ($linha=mysql_fetch_array($resultado_alterar_noticia)) {
			$id = $linha["id"];
			$titulo = $linha["titulo"];
			$descricao = $linha["descricao"];
			$artigo = $linha["artigo"];
			$autor = $linha["autor"];
			$email = $linha["email"];
			$data_hora = $linha["data_hora"];
			$ip = $linha["ip"];
			$publicado = $linha["publicado"];

			if($publicado=="S") {
				$publicado = "Sim";
			}
			else {
				$publicado = "Não";
			}

			echo "Alterar notícia&lt;br /&gt;&lt;br /&gt;";
			echo "&lt;form action=\"alterar_noticia.php?id=$id\" name=\"form\" method=\"post\"&gt;";
			echo "Título:&lt;br /&gt;&lt;input name=\"titulo\" type=\"text\" maxlength=\"100\" value=\"$titulo\" size=\"40\" /&gt;&lt;br /&gt;";
			echo "Descrição:&lt;br /&gt;&lt;input name=\"descricao\" type=\"text\" maxlength=\"255\" value=\"$descricao\" size=\"40\" /&gt;&lt;br /&gt;";
			echo "Notícia:&lt;br /&gt;&lt;textarea name=\"artigo\" rows=\"10\" cols=\"30\"&gt;$artigo&lt;/textarea&gt;&lt;br /&gt;";
			echo "Autor:&lt;br /&gt;&lt;input name=\"autor\" type=\"text\" maxlength=\"100\" value=\"$autor\" size=\"40\" /&gt;&lt;br /&gt;";
			echo "E-mail:&lt;br /&gt;&lt;input name=\"email\" type=\"text\" maxlength=\"255\" value=\"$email\" size=\"40\" /&gt;&lt;br /&gt;";
			echo "Enviado em: $data_hora (IP: $ip)&lt;br /&gt;";
			echo "Publicar? Status: $publicado&lt;br /&gt;";
			echo "&lt;select size=\"1\" name=\"publicado\"&gt;";
			echo "&lt;option value=\"S\"&gt;Sim&lt;/option&gt;";
			echo "&lt;option value=\"N\"&gt;Não&lt;/option&gt;";
			echo "&lt;/select&gt;&lt;br /&gt;";
			echo "&lt;input name=\"submit\" type=\"submit\" value=\"Enviar\" /&gt;&amp;nbsp;&amp;nbsp;&lt;input type=\"reset\" value=\"Redefinir\" /&gt;";
			echo "&lt;/form&gt;";
		}
	}
}
else {
	$id = (int)$_GET["id"];
	$titulo = $_POST["titulo"];
	$descricao = $_POST["descricao"];
	$artigo = $_POST["artigo"];
	$autor = $_POST["autor"];
	$email = $_POST["email"];
	$publicado = $_POST["publicado"];

	$sql_alterar_noticia = "UPDATE artigo SET titulo='$titulo', descricao='$descricao', artigo='$artigo', autor='$autor', email='$email', publicado='$publicado' WHERE id='$id'";
	$resultado_alterar_noticia = mysql_query($sql_alterar_noticia)
	or die (mysql_error());

	echo "Alterar notícia&lt;br /&gt;&lt;br /&gt;";
	echo "Notícia alterada com sucesso!";
}
?&gt;</pre>
<p>Através deste arquivo poderemos publicar uma notícia ou alterá-la.</p>
<p>Arquivo excluir_noticia.php:</p>
<pre>&lt;?php
include "conexao.php";

$id = (int)$_GET["id"];

if(empty($_GET["excluir"])) {
	echo "Exclusão de notícia&lt;br /&gt;&lt;br /&gt;";
	echo "Tem certeza?!&lt;br /&gt;&lt;br /&gt;";
	echo "&lt;a href=\"excluir_noticia.php?id=$id&amp;excluir=S\"&gt;Sim&lt;/a&gt;&lt;br /&gt;";
	echo "&lt;a href=\"administrar.php\"&gt;Não&lt;/a&gt;&lt;br /&gt;";
}
else {
	$sql_excluir_noticia = "DELETE FROM artigo WHERE id='$id'";
	$resultado_excluir_noticia = mysql_query($sql_excluir_noticia)
	or die ("$mysql_erro");

	if(mysql_affected_rows() &gt; 0) {
		echo "Exclusão de notícia&lt;br /&gt;&lt;br /&gt;";
		echo "Notícia removida com sucesso!";
	}
	else {
		echo "Notícia inválida.";
	}
}
?&gt;</pre>
<p>Através deste arquivo poderemos excluir uma notícia.</p>
<p>Feito isso, a nossa área administrativa esta pronta. Vamos agora montar a nossa página inicial que irá listar nossas notícias publicadas.</p>
<p>Arquivo index.php:</p>
<pre>&lt;?php
include "conexao.php";

$sql_listar_noticias = "SELECT id, titulo, descricao, autor, email, data_hora, publicado FROM artigo WHERE publicado='S' ORDER BY id DESC LIMIT 10";
$resultado_listar_noticias = mysql_query($sql_listar_noticias)
or die (mysql_error());

if(mysql_num_rows($resultado_listar_noticias) &lt; 1) {
	echo "Nenhum notícia publicada.";
}
else {
	while ($linha=mysql_fetch_array($resultado_listar_noticias)) {
		$id = $linha["id"];
		$titulo = $linha["titulo"];
		$descricao = $linha["descricao"];
		$autor = $linha["autor"];
		$email = $linha["email"];
		$data_hora = $linha["data_hora"];

		echo "Título: $titulo&lt;br /&gt;";
		echo "Descrição: $descricao&lt;br /&gt;";
		echo "Autor: $autor&lt;br /&gt;";
		echo "E-mail: $email&lt;br /&gt;";
		echo "Enviado em: $data_hora&lt;br /&gt;";
		echo "&lt;hr /&gt;";
	}
}
?&gt;</pre>
<p>Através deste arquivo são listado somente as notícias publicadas no sistema e é listado as últimas 10 notícias publicadas.</p>
<p>Se você quiser listar todas as notícias publicadas no seu sistema, você poderia fazer isso utilizando paginação. Veja mais sobre isso nos seguintes links:</p>
<ul class="lista">
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1997" target="_blank">Criando uma simples paginação de resultados</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=2108" target="_blank">Paginação de resultados</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=3286" target="_blank">Paginação com opção de limit</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=3287" target="_blank">Paginação de resultados em PHP/MySQL</a>.</li>
</ul>
<p>Outros controles/noções interessante de se aplicar/de se ter nesse tipo de sistema é o seguinte:</p>
<ul class="lista">
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=15" target="_blank">Função htmlentities</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=16" target="_blank">Função nl2br</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=346" target="_blank">Permitindo tags HTML sem brechas para XSS</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1356" target="_blank">Segurança em programação PHP &#8211; Parte 1</a>;</li>
<li><a rel="nofollow" href="http://www.htmlstaff.org/ver.php?id=1357" target="_blank">Segurança em programação PHP &#8211; Parte 2</a>.</li>
</ul>
<p>Há diversas outras coisas interessantes para se adicionar em um sistema do tipo. Mas eu irei deixar isto para uma segunda parte desse artigo/tutorial.</p></div>
<p><a href="http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/">Criando um portal de notícias com área administrativa em PHP com MySQL</a> is a post from: <a href="http://brasiltutoriais.com.br">BRASIL TUTORIAIS - Tudo sobre tutoriais</a></p>



<p>NOTICIAS RELACIONADAS:<ol><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>
<li><a href='http://brasiltutoriais.com.br/simples-sistema-de-noticias-que-nao-possui-banco-de-dados-mysql/' rel='bookmark' title='Permanent Link: Simples sistema de notícias que não possui Banco de Dados MySql'>Simples sistema de notícias que não possui Banco de Dados 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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/criando-um-portal-de-noticias-com-area-administrativa-em-php-com-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
