1 Introdução à programação PHP O trabalho Introdução à programação PHP de Sheldon Led foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada. Com base no trabalho disponível em http://www.sheldonled.com/pdf/intro-php.pdf. 2 Sumário Indice..................................................................................................2 Introdução...........................................................................................3 Exemplos de aplicativos em PHP.......................................................4 Noções básicas de programação........................................................5 Sintaxe básica do PHP.......................................................................7 Criando um sistema de Login...........................................................10 Criando sua página inicial:................................................................10 Criando um formulário de login.........................................................12 Criando o banco de dados................................................................12 Criando sistema de login..................................................................13 Criando o logout.php........................................................................15 Conclusão.........................................................................................16 Referências.......................................................................................16 3 Introdução O PHP é uma das linguagens mais utilizadas na Web. Ela utiliza o servidor para interpretar seu código PHP, e exibir o resultado em código HTML no navegador do usuário, em qualquer lugar em que seu servidor pode ser acessado. Sua principal característica é o dinamismo e praticidade, além da fácil aprendizagem, principalmente para aqueles que já conhecem alguma linguagem de programação parecida com C. O PHP é gratuito e com seu código aberto, ou seja, até os arquivos binários do PHP tem seu código disponível e toda informação sobre o PHP pode ser encontrada em http://www.php.net. Neste site é possível acessar toda a documentação do PHP, com informações detalhadas de cada funcionalidade da linguagem. O PHP é embutido no HTML, ou seja, a página “index.php” contém a estrutura textual do seu site, a referência à estrutura visual (css), e no meio do seu código HTML são colocadas as chamadas PHP. Porém, ao acessar essa página, mesmo ela tendo o final .php, pode-se visualizar seu código fonte e verá que só é exibido o HTML que você colocou e o HTML gerado pelo PHP, pois este é executado pelo servidor. Com o PHP é possível fazer conexões à bancos de dados. Com isso é possível criar sites mais dinâmicos, podendo criar aplicativos iguais aos do seu computador, porém executando na web, como aplicativos de gestão de projetos, gestão financeira, loja virtual, blogs, criar um sistema de comunicação com o leitor do seu site em forma de e-mail, fórum, etc. As linguagens executadas por um servidor costumam ser dinâmicas pois o usuário pode estar em qualquer máquina, acessar seu navegador de internet nativo, e poder ver o resultado do que o servidor executa. Além de ter essa capacidade, o PHP funciona também sendo instalado em Linux, Windows e MAC, e existem servidores para essas plataformas que executam o PHP. Este documento é uma visão geral do PHP, seguida de um tutorial simples de formulário de login. Deve ser seguido utilizando a internet, pois há muita coisa que não será abordada aqui, então se faz necessário o uso da internet para ir além. Aqui também, não abordaremos a preparação do ambiente php, visto que esta configuração é fácil e existem milhares de tutoriais na internet explicando como fazê-la. Programas que configuram automaticamente esse ambiente também são muito utilizados: EasyPHP, WampServer, XAMPP. Importante: Em todos os nossos exemplos, vamos deixar predeterminado que a pasta do seu servidor que armazena os arquivos php é /var/www e que os nossos exemplos estão sendo executados localmente, ou seja, o acesso pelo navegador será http://localhost. A ferramenta de banco de dados utilizada será o phpMyAdmin. 4 Exemplos de aplicativos em PHP Existem milhões de aplicativos que são feitos em PHP, rodando em um servidor web em sua máquina local, ou em um servidor remoto. Alguns exemplos de aplicativos são: 1. Gerenciadores de conteúdo (CMS): Sistemas gerenciadores de conteúdos são muito utilizados em sites gerais. Atualmente as pessoas não mais fazem um site do zero, mas utilizam CMS para criar um site. Os gerenciadores de conteúdo mais conhecidos são Joomla! e Wordpress, sendo o último mais utilizado para blogs e o primeiro para sites. Porém isto não é uma regra, pessoas fazem sites em Wordpress tanto quanto blogs em Joomla! 2. Gerenciador de projetos: Sistemas muito poderosos para gerenciamento de projetos são feitos em PHP. O gerenciador de projetos mais famoso é o Microsoft Project, e seu concorrente direto em software livre é feito em php. Os dois gerenciadores de projetos mais famosos em PHP são: Redmine e dotProject. São livres para estudo e para uso geral. 3. E-commerce: Já sabemos que vender pela internet dá dinheiro. Um sistema mundialmente conhecido que nos dá uma ferramenta de comércio eletrônico pronta é o Magento. Este é um sistema de e-commerce feito em PHP, e existem centenas de milhares de lojas virtuais no mundo funcionando em cima deste sistema. É estruturado modularmente utilizando o Zend Framework. 4. Redes sociais: O facebook foi inicialmente feito em php. Hoje o facebook é um sistema muito robusto, pois é acessado por milhões de pessoas simultaneamente. Sendo assim, a parte de mais baixo nível do sistema é feita em C, e existem outras partes não conhecidas pelos usuários, pois o facebook não é de código aberto, como a maioria dos sistemas citados aqui. 5. O seu sistema: O seu sistema pode conter qualquer tipo de funcionalidade. Muitas pessoas fazem aplicativos para uso pessoal em php, como por exemplo, um sistema que controla estoque, onde utiliza-se o php para armazenar os produtos que entram no estoque, em um banco de dados, e depois pode armazenar o que já foi consumido, e no final é possível fazer um balanço entre o que tem, o que falta e qual produto precisa ser reabastecido no estoque, mesmo que esse estoque seja sua geladeira. 5 Noções básicas de programação A linguagem C é sempre um referencial forte, portanto, se você já teve alguma experiência com esta linguagem, ou com outras parecidas, vai se sentir mais à vontade ao iniciar seu aprendizado com PHP, porém não se deixe levar por isso, pois o PHP tem suas peculiaridades. 1. Primeiro código PHP Uma vez que você tem acesso à um servidor que interprete PHP, crie um arquivo chamado primeiro.php e o abra em um editor de textos (notepad, coda, Sublime text, gedit, vim, etc), digite o código abaixo: <html> <body> <?php //Meu primeiro código em php echo “Se você lê isto, é porque eu programo em PHP!”; ?> </body> </html> Salve o seu arquivo e abra o navegador e acesse o arquivo: http://localhost/primeiro.php Se apareceu a mensagem: Se você lê isto, é porque eu programo em PHP! então você pode ficar feliz pois esta frase declara uma verdade, e este é seu primeiro código PHP que funciona. Agora vou explicar o que você fez: 1. Todo código PHP deve ficar dentro da tag <?php aqui ?>. Qualquer coisa escrita fora dessas tags é interpretada como HTML ou texto puro. 2. // significa um comentário de linha, para comentar mais de uma linha você utiliza /* comente várias linhas aqui */. 3. echo escreve algo na tela. Quando um código PHP gera um resultado HTML, provavelmente ele foi imprimido utilizando o echo. 4. Toda linha em PHP termina com ponto e virgula; Caso contrário aparecerá um enorme erro na execução do seu código. Essa regra não se aplica à comentários. Note que, com este exemplo, você já aprendeu a fazer comentários no seu código, que são muito importantes, pois dada a maneira que o código vai crescendo, fica difícil manipulá-lo, e os comentários podem ajudá-lo bastante. 2. Variáveis Toda variável no PHP inicia com o símbolo do dólar. Então altura está errado, porém $altura é o correto. Escreva o exemplo abaixo, e salve como exemp1.php: <html> <body> <?php $a = 5; $b = 5; $c = $a + $b; echo “A soma de $a e $b é igual a $c”; //Ou também se pode fazer 6 echo “A soma de “.$a.” e “.$b.” é igual a “. $c; ?> </body> </html> Note que a saída de ambas linhas é: A soma de 5 e 5 é igual a 10. A diferença entre os dois exemplos é que no primeiro a variável está embutida na saída, e no segundo exemplo é que a variável é concatenada com a saída. Também é importante ressaltar que a variável $a seria diferente de $A, pois o PHP é sensível à essa diferença e entende como variáveis distintas. Existem vários operadores que podem ser trabalhados em variáveis, para diferentes usos dependendo do tipo de dado que a sua variável carrega. Não é o foco deste tutorial falar sobre tipos de dados ou operadores de manipulação de dados. Variáveis também tem seu escopo, por exemplo, uma variável declarada dentro de uma função só será reconhecida lá dentro, e para que seja reconhecida globalmente por todo o código PHP basta adicionar a palavra global na sua declaração: <?php global $a; ?> A declaração de uma função será abordada depois. 3. Constantes Se variável armazena um valor que pode ser manipulado, constantes são o contrário, uma vez atribuído, seu valor não pode ser mudado ao longo do código. Um exemplo de constante é o símbolo de dinheiro, você pode averiguar se o usuário está no brasil, então recebe “R$”, se estiver nos E.U.A então recebe “$”. A definição de uma constante é: <?php define(“CONSTANTE”, “Este texto é constante!”); //utilizando a constante echo CONSTANTE; ?> Observe que é um padrão mundialmente reconhecido, que as constantes sejam declaradas sempre em maiúsculo. Para variáveis utiliza-se o camelCase (ex: dataAniversario), já para constante, o padrão é UPPERCASE (ex: DATA_ANIVERSARIO). Esses padrões são reconhecidos e utilizados em várias linguagens, e nas linguagens orientadas à objeto, utiliza-se o padrão StudlyCaps para criação de classes. 7 Sintaxe básica do PHP Agora que o básico já foi explicado acima vamos aprender um pouco mais sobre a sintaxe básica do PHP. 1. Estruturas de Controle As estruturas de controle são comuns em todas as linguagens de programação, e seu uso é indispensável. As estruturas de controle são comandos condicionais (if, else, switch, case) ou comandos de repetição (do, while, for e foreach). As estruturas de repetição tem o comando break, que interrompe a repetição, e o comando continue para ignorar o restante da repetição e ir para a próxima repetição. 1. if - else: O bloco de um if pode estar sozinho, ou acompanhado de um else. Vejamos uma aplicação no mundo real: Você pensa, “se chover, não saio de casa”, utilizou apenas o if. Se pensar, “se chover, saio de carro, senão saio de moto”, utilizou if e else. Ainda existe uma estrutura aninhada, por exemplo: “se chover e tiver gasolina no carro, saio no carro; senão se chover e não tiver gasolina no carro, e tiver capa de chuva, saio na moto; senão fico em casa”. Aninhamos várias condicionais, veja o código do útlimo exemplo: <?php if ($chovendo && $temGasolinaCarro) { echo “sair no carro”; } else if ($chovendo && !$temGasolinaCarro && $temCapadeChuva){ echo “sair na moto”; } else { echo “ficar em casa”; } ?> 2. switch: A estrutura switch-case é apenas uma simplificação desse último exemplo, quando queremos exibir vários resultados diferentes dependendo do valor de uma variável, veja: <?php switch ($temperatura) { case 30: echo “use uma regata”; break; case 20: echo “use uma camiseta com manga”; break: case 15: echo “use uma blusa de frio”; break: default: echo “vista-se bem!”; break; } ?> O bloco default é o else sozinho, no exemplo anterior, ou seja, se nenhuma condição acima for verdadeira, será executado o default. 8 3. For: é uma estrutura de repetição controlada por uma variável. É preciso definir o valor inicial, condição para finalizar, incrementação, veja: <?php //contando até 10 for ($i=1;$i<=10;$i++) { echo “linha $i <br>”; } ?> O laço vai contar do 1 até 10 (enquanto i for menor ou igual (<=) a 10, ele executará o código). 4. While e do-While: É uma estrutura de repetição que executará sempre que a condição for verdadeira. É usada quando a interrupção precisa ser mais dinâmica: <?php //variável recebe um valor qualquer $i=0; $stop = 25; while ($i<$stop) { echo “linha $i <br>”; $i++; } ?> O laço pode executar de diferentes maneiras, dependendo do que a variável $stop receber. A diferença do while comum para o do-while é que, no while comum, se a condição for falsa, não executa nada, no do-while o código é executado pelo menos uma vez: <?php //variável recebe um valor qualquer $i=0; $stop = 25; do { echo “linha $i <br>”; $i++; } while ($i<$stop); ?> No exemplo acima, se $stop receber 0, ele executa a primeira vez e sai do laço, já no anterior, não executaria nada. 5. Foreach: este comando funciona a partir da versão 4 do PHP. É usado para percorrer um array, veja: <?php $alunos = array(“Sheldon”, “Maria”, “Sarah”, “Isaac”, “André”); echo “Os alunos que vieram hoje foram: <br>”; foreach ($alunos as $a) { echo “$a <br>”; } ?> 9 2. Funções Funções e Classes são grandes avanços de uma linguagem, uma vez que a Orientação à Objetos é um paradigma de programação muito aceito, porém, falar de Classes não é o foco agora, pois é preciso assimilar o conteúdo introdutório no PHP, então vamos abordar apenas o uso de funções, pois o PHP aceita tanto a programação estrutural quanto a programação orientada à objetos. Funções são pedaços de código que executam uma tarefa bem específica. Ela é declarada para deixar o código mais organizado e funcional, veja: <?php function soma($var1, $var2){ return ($var1+$var2); } echo soma(5,15); ?> O resultado na tela será 20. No exemplo acima, soma é o nome da função, $var1 e $var2 são os argumentos, o código entre chaves { } será executado sempre que houver a chamada da função, como foi feita: soma(5,15); 3. Inclusão de Arquivos O comando include permite a inclusão de outros arquivos PHP no arquivo que está sendo executado. Por exemplo, se várias páginas tem a mesma estrutura superior, você pode separá-la em um arquivo topo.php, e incluir em seu index.php. Veja: <html> <body> <?php //aqui será incluído todo o código superior include(“topo.php”); //Abaixo vai todo o código de sua index.php ?> <h2>Olá</h2> </body> 4. Dicas: Evite ao máximo repetições de código. Acima foram demonstrada algumas maneiras de evitar vãs repetições, sempre refatorando seu código com funções, separando códigos em arquivos a serem incluídos e usando as estruturas de controle e repetição. Short tags - Uma coisa interessante a se usar no PHP são as short tags. É necessário habilitar essa função no seu arquivo php.ini (short_open_tag), e depois de habilitada, você pode utilizar apenas <? aqui ?> para escrever seu código. Note que, se você desenvolver seu código assim, terá que verificar essa configuração sempre que for executá-lo em outro servidor 10 Criando um sistema de Login É muito comum, em qualquer website ou sistema, existir uma área restrita, onde é necessário fazer um cadastro para ser reconhecido como membro daquela área, e assim, definir ou restringir demais coisas, como nível de acesso. Vamos fazer agora um sistema de login: Criando sua página inicial: Segue abaixo um código que deixará sua página inicial com uma estrutura parecida com esta: 1. Estrutura do documento (HTML): <!DOCTYPE html> <html> <head> <meta name="author" content="Sheldon Led" /> <meta name="description" content="Primeiro site php" /> <title>Meu site</title> <link href="css/template.css" rel="stylesheet" /> </head> <body> <div id="container"> <header id="topo"> <h1>Meu Site</h1> <h2>Seja bem vindo, <a href="login.php">Fazer login?</a></h2> </header> <div style="clear: both;"></div> <div id="meio"> <aside id="lateral"> <nav id="menu"> <ul> <li><a href="index.php">Início</a></li> <li><a href="quemsomos.php">Quem Somos</a></li> </ul> </nav> </aside> <section id="conteudo"> 11 <h2>Seja bem vindo ao meu site!</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vitae sapien ut leo iaculis interdum. Nunc hendrerit purus non lorem viverra dapibus. Mauris at venenatis dolor. Pellentesque blandit ligula eget nunc interdum quis scelerisque velit fringilla. Mauris consequat ipsum quis odio aliquam vulputate. Nunc erat est, varius a elementum non, ornare in nibh. Sed sed nulla urna, ac hendrerit tellus. Cras eleifend risus et orci varius sit amet semper diam sagittis. Mauris sed leo ligula, ac luctus sapien. Mauris justo lacus, porta eget volutpat id, lacinia ut urna. Maecenas vitae diam sed enim ornare tincidunt. Nunc posuere, nunc tristique faucibus feugiat, lacus lectus facilisis nibh, vitae condimentum nulla mauris eget erat. Nunc ut elit velit.</p> <p>Nam facilisis tristique sem non sodales. Sed vitae lectus id orci dictum dapibus in ac diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce tempus varius enim, nec cursus nibh porta in. Nulla eu rhoncus neque. Nam eu tortor feugiat quam lacinia semper eget vitae nibh. Duis ornare, nibh sit amet viverra mollis, risus magna rutrum elit, vel convallis massa neque non enim. Donec risus nulla, aliquam ut imperdiet at, pharetra a velit. Aliquam erat volutpat.</p> </section> </div> <div style="clear: both;"></div> <footer id="rodape"> <h3>Obrigado por acessar! © 2013 - Sheldon Led </h3> </footer> </div> </body> </html> 2. Estrutura de visualização (CSS): Crie um arquivo template.css dentro da pasta css, no seu site, e insira o conteúdo abaixo: body { background: #eedc94; } #container{ width: 960px; margin: 0 auto; background: #C64934; color: #FFF; } a, a:hover, a:visited { color: #FFF; } a:hover { text-decoration: none; } #topo{ height: 120px; margin-bottom: 20px; background: #fea540; 12 } #lateral{ width: 200px; float: left; } #meio{ min-height: 80px; overflow: auto; background: #fea540; } #conteudo{ width:700px; height: 100%; padding: 0 20px; float: right; background: #C64934; } #rodape { height: 60px; margin-top: 20px; padding-top: 60px; background: #fea540; text-align: center; } Criando um formulário de login Pensando na estrutura definida acima, vamos colocar o formulário de login dentro do bloco de conteúdo. Crie o arquivo login.php com o mesmo código fonte de index.php, substituindo o conteúdo dentro da section conteudo pelo código abaixo: <h2>Login</h2> <form id="login" action="index.php" method="POST"> <label for="user"> Usuário:</label> <input id="user" name="user" type="text" width="50px" maxlength="25"> <br><br> <label for="senha"> Senha:</label> <input id="senha" name="senha" type="password" width="50px" maxlength="25"> <br> <input type="submit" value="entrar"> </form> Observe que, ao acessar login.php e digitar um usuário e senha qualquer, nada acontece, pois nenhuma programação foi definida ainda. Criando o banco de dados Supondo que há um servidor MySQL instalado, utilize o cliente que desejar, por exemplo, o phpMyAdmin. Crie um banco de dados chamado login, e uma tabela chamada usuarios com 5 campos: 13 Nome do campo Tipo Tamanho id_usr INT AUTOINCREMENT (A_I) nome_usr VARCHAR 100 usuario_usr VARCHAR 30 senha_usr VARCHAR 30 email_usr VARCHAR 100 Veja o SQL de criação da tabela: CREATE usuarios ( id_usr int(11) NOT NULL AUTO_INCREMENT, nome_usr varchar(100) NOT NULL, usuario_usr varchar(30) NOT NULL, senha_usr varchar(30) NOT NULL, email_usr varchar(100) NOT NULL, PRIMARY KEY (id_usr) ); Insira agora 3 usuários de exemplo, para trabalharmos com eles: nome_usr usuario_usr senha_usr email_usr Maria de Fátima maria maria123 [email protected] Sarah Oliveira sarah sarah321 [email protected] Isaac Martins isaac isaac555 [email protected] Criando sistema de login Como você pode osbervar, seu formulário de login está enviando os dados via POST para a página index.php. Sendo assim, precisamos validar o usuário e senha por lá. No arquivo index.php, do final do </header> até a primeira linha do documento, insira o código abaixo: <?php $con = mysql_connect("localhost","root","root"); if (!$con){ die("Sem conexão com banco de dados :" . mysql_error()); } session_start(); mysql_select_db("login",$con); $logar = ""; if(isset($_POST["user"]) && isset($_POST["senha"]) ){ $sql = "SELECT * FROM usuarios 14 WHERE usuario_usr='".$_POST["user"]."' AND senha_usr='".$_POST["senha"]."'"; $result = mysql_query($sql); if (mysql_num_rows($result) > 0) { $vusuario = mysql_fetch_array($result); $_SESSION['usuario']=$vusuario['nome_usr']; $_SESSION['senha']=$vusuario['senha_usr']; } } if ($_SESSION['usuario'] != "") { $logar = $_SESSION['usuario'].". <a href=\"logout.php\">Sair.</a>"; }else { $logar = "<a href=\"login.php\">Fazer login?</a>"; } ?> <!DOCTYPE html> <html> <head> <meta name="author" content="Sheldon Led" /> <meta name="description" content="Primeiro site php" /> <title>Meu site</title> <link href="css/template.css" rel="stylesheet" /> </head> <body> <div id="container"> <header id="topo"> <h1>Meu Site</h1> <h2>Seja bem vindo, <?php if ($logar != "") echo $logar; ?> </h2> </header> Da mesma forma, insira nas demais páginas que você criar, a validação da session: <?php session_start(); if ($_SESSION['usuario'] != "") { $logar = $_SESSION['usuario'].". <a href=\"logout.php\">Sair.</a>"; }else { $logar = "<a href=\"login.php\">Fazer login?</a>"; } ?> A partir desse momento, já é possível fazer login e ver o nome do usuário logado na página inicial do seu site. Agora é preciso criar uma maneira de fazer logout. 15 Criando o logout.php Crie um arquivo chamado logout.php e insira o código abaixo: <?php session_start(); //destruindo a seção unset($_SESSION['usuario']); unset($_SESSION['senha']); session_destroy(); //redireciona para pagina inicial Header("Location: index.php"); ?> Pronto, agora você tem um login completo sendo executado no seu site. Claro que nenhuma medida de segurança foi inserida, como encriptação dos dados nas sessions. Esse exemplo foi simplesmente uma ilustração do que possa vir a ser o seu sistema web. Nesse tutorial abordamos Layout utilizando tags HTML5, CSS, sessões PHP, HTTP header, estruturas de controle e variáveis. Isso já é um bom ponto de partida para estudar novos conceitos web. 16 Conclusão Neste documento foram introduzidas as informações e técnicas de programação fundamentais para o desenvolvimento de sistemas web ou sites dinâmicos utilizando PHP. Portanto isso nem pode ser considerado o início, pois muito há de se aprender. O primeiro passo foi dado, e você já conhece a programação básica, agora é aprofundar seus estudos. Uma sugestão é que você crie um site com conteúdos válidos, mesmo que seja para estudo pessoal e que isso não venha a ficar disponível na internet, mas insira páginas de acesso restrito, coloque redirecionamentos automáticos, modulariza o código HTML, enfim, existem muitas coisas que podem ser melhoradas no exemplo que foi apresentado acima. Referências 1. Site oficial do PHP (http://www.php.net) - Acessado do dia 7 ao dia 15 de maio de 2013 2. Niederauer, Juliano. Desenvolvendo websites com PHP. São Paulo: Novatec, 2004 3. Material didático sobre HTML na W3shhools (em inglês) http://www.w3schools.com/html 4. Material didático sobre CSS na W3shhools (em inglês) - http://www.w3schools.com/css/ 5. Material didático sobre PHP na W3shhools (em inglês) - http://www.w3schools.com/php/