Modulo01 – Introduçãoo O que é PHP?o Pra que serve o PHP?o Como funciona o PHP?o Dicas úteis na hora de programaro Variáve...
e no final de cada linha você precisa usar um ;( ponto e vírgula ) idêntico à linguagem Cecho() é construtor da linguagem ...
Dicas uteis na hora de programarPara desenvolver um script e evitar errosPrograme com essas opções no php.ini:display_erro...
Exemplo:$nome = "João "; <= reparem que tem um espaço depois do nome isso é feito para quandojuntar as variáveis nome e so...
Operadores de comparação$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.$a === $b Idêntico Verdadeiro (TRUE) se $a é i...
Modulo02 – Introdução part2o Conceitos básicos sobre a Internet em modo geralo Variáveis variáveiso Estruturas de Controle...
TCP/IPO TCP/IP (Protocolo de Controle de Transmissão/Internet Protocol) (TCP) Tem comofunção deixar confiável a transferên...
CGI(um recurso dinâmico) o servidor deverá retornar o resultado do script executado.POSTA requisição por meio do método PO...
Estruturas de ControleO que são estruturas de controle?São contruções da linguagem que permitem que você controle o fluxo ...
O if retorna um valor boleano, ou true caso a condição seja verdadeira, ou false caso acondição falhe...Digamos que nosso ...
Dica: sempre que abrir uma chave "{" feche logo em seguida "}" para evitar esqueçer defazer isso mais tarde...whileLoops w...
?>Note que nessa estrutura o comando sempre será executado ao menos uma vez...pos a condição é verificado apenas no final,...
PHP<?php/* exemplo foreach 1: somente valores */$a = array(1, 2, 3, 17);foreach ($a as $v) {echo "Valor atual de $a: $v.n"...
foreach (array(1, 2, 3, 4, 5) as $v) {echo "$vn";}?>FunçõesO que é uma função?Funções são responsáveis por realizar uma ou...
Um exemplo:function mostraValor($variavel= padrão) {echo $variavel;}Nesse caso a string “padrão” foi definida padrão para ...
O uso do "return" significa o fim da função, tudo que for usado após o return erá perdido.Obs.: Só quero ressaltar que na ...
Modulo 3 – Introdução part3      Variáveis Predefinidas      Escopo de variáveis      Cookies      SessionsVariáveis P...
Variáveis criadas pelo servidor web ou diretamente relacionadas ao ambiente de execuçãodo script atual. Análogo ao antigo ...
DOCUMENT_ROOTO diretório raiz sob onde o script atual é executado, como definido no arquivos deconfiguração do servidor.HT...
SCRIPT_FILENAMEO caminho absoluto o script atualmente em execução.Nota: Se o script for executado pela CLI com um caminho ...
Esta é uma variável superglobal, ou automaticamente global. Isto significa que ela édisponível em todos os escopos (níveis...
entendia muito de computadores. Quando ele teve a ideia de inventar o cookie a soluçãoencontrada era que cada computador d...
PHP  <?  setcookie("cookie", "teste", time() + 3600*24*365);  ?>Esse cookie tem validade de um ano3600 segundos = 1 hora36...
$_SESSION["teste"] = 1;  ?>Foi criado uma sessão com o nome se teste e valor 1E nas paginas seguintes você pode restaurar ...
Modulo 4 – Introdução part4o requireo includeo require_onceo include_onceo Autenticação HTTP com PHPo Arrayso Headerrequir...
arquivo, b.php será procurado primeiro em /www/ e somente depois em /www/include/.Quando um arquivo é incluído, seu código...
include_once() pode ser utilizado nos casos em que o mesmo arquivo pode acabar sendoincluído mais de uma vez durante a exe...
{    Autenticar();}else{  $total = Confere_Login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]);    if ( $total == 0 ...
5. ?>A chave pode ser tanto um integer ou uma string. Se a chave é uma representação padrão deum integer, ele será interpr...
array_diff -- Analisa as diferenças entre arraysarray_fill -- Preenche um array com valoresarray_filter -- Filtra os eleme...
natsort -- Ordena um array utilizando o algoritmo da "ordem natural"next -- Avança o ponteiro interno de um arraypos -- Re...
Scripts PHP normalmente geram conteúdo dinamico que não deva ser guardado em cachepelo browser do cliente ou qualquer cach...
sobrecarga que toda a saída do browser será guardada em buffer no servidor até quevoc^envie ele. Você poderá fazer isso us...
Modulo 5Interagindo com banco de dados (Mysql)Introduçãoo Breve Historia Mysqlo mysql_connecto mysql_select_dbo mysql_quer...
você pode fazer assim:mysql_connect("localhost");mysql_select_dbmysql_select_db -- Seleciona um banco de dados MySQLmysql_...
mysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$re = mysql_query("SELECT * FROM tabela");while ($...
mysql_insert_idmysql_insert_id -- Retorna o ID gerado da operação INSERT anteriorComando basicos SQLMostrarei nesse tutori...
mysql> select * from usuarios where idade < 30 order by nome desc;+----+--------+-------+------+---------------------+| id...
UPDATE - Atualiza valores na tabelaUPDATE tabela SET campo1 = valor1, campo2 = valor2, campo3 = valor3 WHERE campo = valor...
Modulo 6Introduçãoo Upload de Arquivoso Conexão com banco de dados acesso Funções matemáticaso ImapUpload de ArquivosUploa...
/etc/passwd.Este tipo de confirmação é importante principalmente se existe alguma chance que qualquercoisa feita com os ar...
19. ?>move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file -- Move um arquivo carregado para uma nova localizaçãoDe...
Desde o PHP 4.2.0, PHP retorna um código de erro apropriado na array do arquivo. O códigode erro pode ser encontrado em [e...
</body></html>upload.php<?//Fabyo Guimaraesclass Upload{var $arquivo = "";//array com os codigos dos erros de uploadvar $e...
echo "<span style="color: white; border: solid 1px; background: blue;">".$this->erro[$this->arquivo[error]]."</span>";}se ...
<?phpecho round(3.4); // 3echo round(3.5); // 4echo round(3.6); // 4echo round(3.6, 0); // 4echo round(1.95583, 2); // 1.9...
$b[10] = 11;$result = count($        ;// $result == 3;?>sqrt -- Raiz quadrada<?echo sqrt(9); // 3echo sqrt(10); // 3.16227...
<?php/* Fabyo Guimaraes$servidor = "seu_servidor";$usuario = "usuario";$senha = "senha";@ini_set(display_errors, 0);$mbox ...
$message_id = $headers->message_id;$toaddress = $headers->toaddress;$to = $headers->to;$remetente = $to[0]->personal;$emai...
Modulo 7Introduçãoo Estatisticaso Dicas diversas sobre funções php para usar com Mysqlo Dicas basicas sobre configuração d...
// Assumindo que as tags acima estão em www.example.com$tags = get_meta_tags(http://www.example.com/);print $tags[author];...
<script language="javascript">document.write("Resolucao      : ",screen.width,"x",screen.height,"<p>");</script>Para pegar...
delimitador do token.Para ver se o php esta sendo executado como modulo ou cgi:$sapi_type = php_sapi_name();if ($sapi_type...
Listando todos os banco de dados do servidor mysql:mysql_connect("localhost", "usuario", "senha");$db_list = mysql_list_db...
Pegando toda informação de cada campo de uma tabelamysql_select_db("banco");$result = mysql_query("select * from tabela");...
Pegando o conjunto de caracteres do mysqlmysql_client_encoding -- Retorna o nome do conjunto de caracteres$charset = mysql...
Dicas basicas sobre configuração do phpMyAdminOnde baixar phpMyAdminO que é phpMyAdmin?o phpMyAdmin é um script feito em p...
$cfg[Servers][$i][only_db]   = ;      // If set to a db-name, onlye coloco o nome do banco que você querSQLStructured Quer...
Chave PrimariaO conceito de chave primária (ID) ou (PK) chave primaria em inglês ,está associado ao campoou conjunto de ca...
O tipos temporal pode ser utilizado para o tratamento de valores relacionados a data e horaDATE = Utilizado para guardar d...
)");?>no cadastro tem um combo preenchido com os dados de um banco de dados(cargos)cadastro.php:<html><head><title>Cadastr...
$cargo = $l["cargo"]; echo "<option value="$id">$cargo</option>"; } ?>     </select></td>    </tr>    <tr>     <td>Salario...
e proteja os dados tambem com javascript muito util para validar campos antes de enviarprocure por funções que validam cpf...
<? mysql_connect("localhost"); mysql_select_db("banco"); $re = mysql_query("SELECT * FROM funcionarios");     while($l = m...
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Curso completo php
Próximos SlideShares
Carregando em…5
×

Curso completo php

3.532 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.532
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
314
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso completo php

  1. 1. Modulo01 – Introduçãoo O que é PHP?o Pra que serve o PHP?o Como funciona o PHP?o Dicas úteis na hora de programaro Variáveiso Operadoreso ExercíciosO que é PHP?PHP significa Personal Home Page ou Hypertext Preprocessor, é uma linguagem de scriptOpen SourceE ela não precisa ser compilada, o PHP é executado no servidor e é processado na horaque a página for executada.Pra que serve o PHP?Para o desenvolvimento de aplicações Web ou sistemas intranet.E o PHP conecta com diversos bancos de dadosO PHP também faz sistemas de controles statisticos, bate papos, fórum, portais, enquetes,blogs, entre outros sistemas conhecidos.Como Funciona o PHP?O PHP funciona sendo executado por um programa servidor web configurado com o PHPcomo CGI ou filtro isapi e o PHP processa a página e envia apenas o resultado doprocesso em HTML para o usuárioCGI - Commom Gateway Interface (Interface Comum de Gateway) é uma interfacedefinida de maneira a possibilitar a execução de programas sob um servidorISAPI é uma DLL personalizada que está no mesmo espaço de memória que o servidorWeb, e é chamado pelo servidor da web em resposta a cada solicitação HTTP.O PHP só é interpretado dentro das tags simples <? ?> ou <?PHP ?> para suporte a XMLou XHTMLO PHP também funciona com essas tag: <script language = "php"> Código... </script>O PHP também funciona com tags ASP: <% %>Uma página em PHP tem que ter a extensão .phpSe não for usar nenhuma tag PHP na página deixa a com .htmlDaí o PHP não precisara ficar lendo essa página em busca de tags php
  2. 2. e no final de cada linha você precisa usar um ;( ponto e vírgula ) idêntico à linguagem Cecho() é construtor da linguagem ele serve para exibir algo na tela e não é obrigatório usarparênteses ().Use ( Apóstrofos ) para delimitar a string( textos ) do seu script exemplo: <?PHP echo ola mundo; ?>ou modo simples para uma linha:<?= ola mundo; ?>As " ( aspas ) se a string é delimitada entre " ( aspas ), o PHP entende mais seqüências deescape para caracteres especiais:n = nova linhar retorno da linhat tabTambém da para delimitar as string usando a sintaxe heredoc ("<<<") exemplo:$string = <<<EODExemplo de uma stringdistribuída em várias linhasutilizando a sintaxe heredoc.EOD;Embutido dentro do HTML:<html><head><title>Titulo</title></head><body><?phpecho "ola mundo";?></body></html></font>Ou você pode dar um echo nas tags HTML dentro do PHP exemplo:<?phpecho "<b>PHP</b>";?><?phpecho "<a href="link.html">Link</a>";?>
  3. 3. Dicas uteis na hora de programarPara desenvolver um script e evitar errosPrograme com essas opções no php.ini:display_errors = on => deixa ativado a opção para exibir mensagens de erro ou alertas eavisos sobre alguma coisa que esta erradadisplay_startup_errors = On => use essa opção em on só na hora que estiverdesenvolvendo seus script ,tem erros que são iniciados e o display_errors não mostraerror_reporting = E_ALL => mostra todos possíveis errosregister_globals = off => a partir do PHP 4.2.0 passou a se usar ela em off por motivo desegurançasexit; serve para a execução do script ,então use o exit sempre que quiser debugar seuscript, ou em funções e estruturas de controlesoutras dicas nunca esqueça de colocar o ; ( ponto e vírgula ) no final de cada linha.e sempre usar as aspas ou apostrofos em string exemplos: $nome = "Mario"; $array[array1]; $_POST[campo]; echo "Bom estudo";VariáveisAs variáveis no PHP são representadas por um cifrão ($) seguido pelo nome da variável.Os nomes de variável no PHP fazem distinção entre maiúsculas e minúsculas.Um nome de variável válido se inicia com uma letra ou sublinhadoAtribuindo valores a uma variável: $teste = "testando"; $numero = 1234; $teste2 = "testando 1234";OperadoresConcatenando uma variávelConcatenar significa juntar as variáveis e no PHP usa-se o . ( ponto ) para juntar asvariáveis
  4. 4. Exemplo:$nome = "João "; <= reparem que tem um espaço depois do nome isso é feito para quandojuntar as variáveis nome e sobrenome não ficar grudado JoaoSantos$nome = "João ";$sobrenome = "Santos";$nome_completo = $nome.$sobrenome;ou$nome_completo = $nome;$nome_completo .= $sobrenome;Somando$valor = 100;$valor += 200;ou$valor = 200 + 100;Subtraindo$valor = 300;$valor -= 100;ou$valor = 300 - 100;Mutiplicando$valor = 300;$valor *= 100;ou$valor = 300 * 100;Operadores Aritméticos$a + $b Adição Soma de $a e $b.$a - $b Subtração Diferença entre $a e $b.$a * $b Multiplicação Produto de $a e $b.$a / $b Divisão Quociente de $a por $b.$a % $b Módulo Resto de $a dividido por $b
  5. 5. Operadores de comparação$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.$a === $b Idêntico Verdadeiro (TRUE) se $a é igual a $b, e eles são do mesmo tipo(somente para PHP4).$a != $b Diferente Verdadeiro se $a não é igual a $b.$a <> $b Diferente Verdadeiro se $a não é igual a $b.$a !== $b Não idêntico Verdadeiro de $a não é igual a $b, ou eles não são do mesmo tipo(somente para o PHP4).$a < $b Menor que Verdadeiro se $a é estritamente menor que $b.$a > $b Maior que Verdadeiro se $a é estritamente maior que $b.$a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b.$a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b.Operadores Lógicos$a and $b E Verdadeiro (TRUE) se tanto $a quanto $b são verdadeiros.$a or $b OU Verdadeiro se $a ou $b são verdadeiros.$a xor $b XOR Verdadeiro se $a ou $b são verdadeiros, mas não ambos.! $a NÃO Verdadeiro se $a não é verdadeiro.$a && $b E Verdadeiro se tanto $a quanto $b são verdadeiros.$a || $b OU Verdadeiro se $a ou $b são verdadeiros.Operadores de Incremento/Decremento++$a Pré-incremento Incrementa $a em um, e então retorna $a.$a++ Pós-incremento Retorna $a, e então incrementa $a em um.--$a Pré-decremento Decrementa $a em um, e então retorna $a.$a-- Pós-decremento Retorna $a, e então decrementa $a em umFim do primeiro módulo
  6. 6. Modulo02 – Introdução part2o Conceitos básicos sobre a Internet em modo geralo Variáveis variáveiso Estruturas de Controleo Funçõeso returnConceitos básicos sobre a Internet em modo geralInternet é uma rede de comunicações de abrangência mundial e a World Wide Web é umaforma particular de utilização da Internet. A World Wide Web ou WWW, ou W3 é um dosserviços baseados em hipertextos.A Web é o conjunto de todos navegadores, serviços, arquivos ou recursos,e qualqueroutro serviço disponível através do browser.A Web está relacionadaa à distribuição de documentos e informações pela Internet, e oHTTP tem a função de servir como protocolo de rede da Web.Protocolo de ComunicaçãoUm protocolo é um conjunto de regras que administra procedimentos de troca deinformaçõesHTTPO HTTP (HyperText Transfer Protocol) surgiu em volta dos anos 90 no CERN (EuropeanCenter for high-Energy Physics) na Suíça. Quem criou o HTTP foi um fisico inglês seunome era Tim Berner-Lee.O Protocolo HTTP é um protocolo de rede utilizado para entregar virtualmente todos osarquivos e outros dados.O HTTP é responsável pela maioria das transações realizadas na Internet . O surgimentodo HTTP veio da necessidade de distribuiçãode informações na Internet, e para que essas transferências fossem possíveis houve anecessidade de criar um padrão de comunicaçãoentre clientes e os servidores Web, ou seja, de que forma seria feita as requisições dedados e como seriam aceitas e respondidaspelos servidores de recursos na Internet.
  7. 7. TCP/IPO TCP/IP (Protocolo de Controle de Transmissão/Internet Protocol) (TCP) Tem comofunção deixar confiável a transferência de informação(IP) recebe ou envia pacotes individuais de informações e os envia ao seu destino certo. OTCP/IP cria a conetividade entre navegadores e servidores, a Web também utiliza seupróprio protocolo o HTTP para troca de informações entre clientes e servidores. O HTTP éutilizado pelos clientes para requisições de documentos ou serviços dos servidores e oHTTP funciona com a conexão TCP/IP (sockets TCP/IP).HTML (HyperText Markup Language) ou Linguagem de marcação de Hiper Textosestabelece o conteúdo de um documento hipertexto conforme a World Web Consortium(W3C).URL,URI,URNURL (Uniform Resource Locator), URI (Uniform Resource Identifier) URN (UniformResource Name)URI é uma forma generalizada para se referir a um recurso: um recurso inclui um URL eum URN, ou seja, URN se refere ao nome do recurso em sipor exemplo um arquivo e a URL se refere à localização desse recurso, e ambos formamum URI: a identificação uniforme de um mes recursoXHTML e XMLXHTML é considerado o futuro do HTML e uma forma de transição para XML. XHTMLpossui elementos de formatação da HTML 4.01, mas possui alguma regras definidas pelaXML. XML é um padrão para descrição de dados, ao passo que HTML se limita àdescrição de conteúdo.XMLXML (Extensible Markup Language) permite que você crie seus próprios conjuntos deelementos de marcação, o XML torna possível a a estruturação dos dadosGETO GET é o método padrão para recuperar ou requisitar um recurso por meio do protocoloHTTP. O GET solicita ao servidor para que encontre e retorne qualquer dado que estiveridentificado pelo URI. Se o URI apontar para um arquivo, o servidor deverá retornar oarquivo(um recurso estático), se apontar para um script.
  8. 8. CGI(um recurso dinâmico) o servidor deverá retornar o resultado do script executado.POSTA requisição por meio do método POST é utilizada para enviar dados ao servidor paraserem processados e trabalhados de alguma forma deprograma. O uso mais comum do método POST é submeter um formulário de dados,nesse caso o cabeçalho Content-Type muitas veses possui a descrição application/x-www-form-urlencoded e o cabeçalho Content-Length fornece o comprimento dos dados doformulário codificado na URL.O método GET também pode ser utilizado para submeter e enviar dados de um formulário,mas esses dados serão codificados na URL e anexados à URI.O método POST oferece maior segurança em relação aos dados transferidos, pois osdados farão parte do corpo da mensagem, enquanto no GET os dados serão anexados àURL, ficando a mostra para o usuário, podendo ser alterados facilmente antes de seremenviados.Variáveis variáveisVariáveis são os nomes de variáveis que podem ser criadas e utilizadas dinamicamente.Uma variável normal é criada numa instrução como:PHP<?php$a = "Ola";?>Uma variável pega o valor de uma variável e a trata com o nome de uma variável. Noexemplo acima, hello pode ser utilizada como onome de uma variável utilizando dois sinais de cifrão:PHP<?php$a = "Ola";$$a = "Usuarios";echo "$a $Ola";?>
  9. 9. Estruturas de ControleO que são estruturas de controle?São contruções da linguagem que permitem que você controle o fluxo do seuprograma...número de vezes que ele será executado...como e quando ele serádesviado...enfim as estruturas de controle estão entre as mais importantesimplementações das linguagens de programação, incluindo o PHP...As estruturas de linguagem implementadas no PHP são:if;else;elseif;while;do.. while;for;foreach;break;continue;switch;If É com certeza uma das mais importantes estruturas de controle do PHP. Ela permite aexecução condicional de um pedaço do seu código... A sintaxe da mesma é a seguinte:if(expressão){instruções...}Sendo que a expressão é aquilo que será testado pelo if.Ex:Suponha que você queira verificar se o usuário digitou mesmo um determinado número,10 por exempo.PHP<?php$numero = $_POST["numero"];if($numero == 10){echo "Parabéns você digitou o número correto";}?>Note que nesse exemplo as chaves poderiam ser omitidas e não teriamos problemas desintaxe, pois temos apenas uma instrução abaixo o if...Caso tivessemos mais, aí sim seria obrigatório, mas por questão de organização elegibilidade costumo colocar sempre.
  10. 10. O if retorna um valor boleano, ou true caso a condição seja verdadeira, ou false caso acondição falhe...Digamos que nosso programa seja apenas isso e se o usuário digitarqualquer valor diferente de 10, nada seria mostrado na tela.Mas geralmente você vai querer excecutar uma instrução para quando o teste do if forfalse. É aí que entra o else "senão". Ele permite instruir ao script para executar um outrofragmento de código caso o if de false...ex:PHP<?php$numero = $_POST["numero"];if($numero == 10){echo "Parabéns você digitou o numero correto";}else{echo "Pena você entrou com um valor diferente de 10";}?>ElseifElseif, como seu nome sugere, é uma combinação de if e else.Ele permite um poder de decisão maior ao seu script, pois se o teste 1 falhar ele tentaráexecutar o segundo e assim por diante, segue um exemplo clássico de seu uso...PHP<?phpif ($a > $b){echo "a é maior que b";}elseif ($a == $b){echo "a é igual a b";}else{echo "a é menor que b";}?>
  11. 11. Dica: sempre que abrir uma chave "{" feche logo em seguida "}" para evitar esqueçer defazer isso mais tarde...whileLoops while são o tipo mais simples de criar um loop em PHP. O formato básico de umcomando while é:while (expressao) instruçõesO significado de um comando while é simples. Ele pede que o PHP execute os comandosaninhados repetidamente, enquanto a expressão do while é avaliada como TRUE. O valorda expressão é verificada cada vez que se passa no começo do loop, desta forma,mesmo que este valor mude durante a execução do(s) comando(s) aninhado(s), aexecução não parará até que o fim da iteração (cada vez que o PHP executa os comandosdentro do loop é uma iteração). Às vezes, se a expressão while for avaliada como FALSElogo no início, o(s) comando(s) aninhado(s) não será(ão) rodado(s) nem uma vez sequer.Como no comando if, você pode agrupar múltiplos comandos dentro do mesmo laço whileenglobando um grupo de instruções com chaves, ou usando a sintaxe alternativa:while (expressao){instrucoes ...}Para ficar mais claro de entender, vamos montar um script que escreva os números de 1 a10 um abaixo do outro, ok?PHP<?php$i = 1; // $i será nosso controlador ele dirá quantas vezes o script será executado, nessecaso 10...while ($i <= 10) {echo $i++; // nesse caso será mostrado o valor e logo após seráadicionado mais uma ao seu valor}?>do..whileLoops do while são bem similares aos loops while, exceto pelo fato de que a condição éverificada no fim de cada iteração em vez de no começo.Há apenas uma sintaxe para loops do..while:PHP<?php$i = 0;do{echo $i++;}while ($i > 10);
  12. 12. ?>Note que nessa estrutura o comando sempre será executado ao menos uma vez...pos a condição é verificado apenas no final, ou seja após a primeira interação...forLoops for são os laços mais complexos em PHP, pois no mesmo corpo você inicia avariável de controle, diz até quando será executada, e faz o incremento, ou decrementodependendo do caso. Sua sitaxe é a seguinte...for (expr1; expr2; expr3) { instrucoes}Vamos ao nosso exemplo que imprime os números de 1 a 10, mas dessa vez vamos nosaventurar mais, vamos montar a tabuada do 10, rs...Super útil...PHP<?phpfor ($i = 1; $i <= 10; $i++){echo $i . "X" . 10 . "=" . $i*10 . "<br>";}?>Vamos a outro exemplo espetacular. Lembra dos simpsons onde o pobre barth semprefica de castigo escrevendo 500 vezes algo no quadro negro? Se ele soubesse php seriamuito mais simples...PHP<?phpfor ($i = 1; $i <= 500; $i++){echo "Eu sou um bom aluno <br>";}?>foreachEsse construtor da lingagem oferece uma maneira fácil de trabalhar com matrizes "arrays".Foreach funciona somente com arrays, e lançará um erro se tentar utilizá-lo em umavariável de qualquer tipo diferente ou vamos a um exemplo de seu uso.PHPforeach (expressao_array as $chave => $valor){ instrucoes }
  13. 13. PHP<?php/* exemplo foreach 1: somente valores */$a = array(1, 2, 3, 17);foreach ($a as $v) {echo "Valor atual de $a: $v.n";}/* exemplo foreach 2: valores (com as chaves impressas para ilustração) */$a = array(1, 2, 3, 17);$i = 0; /* para exemplo somente */foreach ($a as $v) {echo "$a[$i] => $v.n";$i++;}/* exemplo foreach 3: chaves e valores */$a = array ("um" => 1,"dois" => 2,"três" => 3,"dezessete" => 17);foreach ($a as $k => $v) {echo "$a[$k] => $v.n";}/* exemplo foreach 4: arrays multidimensionais */$a[0][0] = "a";$a[0][1] = "b";$a[1][0] = "y";$a[1][1] = "z";foreach ($a as $v1) {foreach ($v1 as $v2) {echo "$v2n";}}/* exemplo foreach 5: arrays dinâmicos */
  14. 14. foreach (array(1, 2, 3, 4, 5) as $v) {echo "$vn";}?>FunçõesO que é uma função?Funções são responsáveis por realizar uma ou mais tarefas definidas ou não peloprogramador. Não entendeu? Ok.Suponhamos que dentro de um script PHP, você irá usar uma mesma expressãomatemática várias vezes, ex:echo 10+(5*6)/14-2;echo 10+(5*3)/14-2;echo 10+(5*2)/14-2;Obs.: No echo() não é necessário o uso de parênteses.Repare que a única coisa que mudou foi o número multiplicado (6,3,2), mas seria muitomais fácil se criássemos uma função pra isso. Ficaria algo como:function expressao($valor) {echo 10+(5* $valor)/14-2;}ExpressõesEntão como ficariam as expressões? Simples:expressao(6);expressão(3);expressão(2);Como são definidas as funções?Uma função é definida usando a palavra function, seguido pelo nome da função e porparêntese:function nomeFuncao()Em funções podem ser usadas tanto letras minúsculas como maiúsculas. Podem serusados também underlines e números (no caso de números, não como primeiro caracter).Errado: function 2quebraLinha() {Errado: function quebraLinha@() {Você também pode usar variáveis dentro dos parênteses. Estas devem ser separadas porvírgulas, as variáveis definidas aqui só poderão ser usadas dentro das funções, elaspoderão ter um valor definido. Quando for usar a função, se você definir um valor no localda variável, o valor padrão será perdido, e o novo valor será dado àquela variável.
  15. 15. Um exemplo:function mostraValor($variavel= padrão) {echo $variavel;}Nesse caso a string “padrão” foi definida padrão para a variável $variavel. Se você usar afunção sem definir nenhum argumento, ela irá mostrar o texto padrão, no caso “padrão”:mostraValor();Mas se você colocar um outro valor dentro dos parênteses no uso da função, o valor novodefinido será mostrado:mostraValor(“Novo texto aqui”);Irá mostrar “Novo texto aqui”.A mesma coisa vale para mais argumentos definidos:function mostraValor($valor=”padrão”,$segundoValor) {Depois dos parênteses será usando chaves e toda definição da função deverá estar dentrodela:function mostraValor($valor=”padrão”) {// Aqui os parâmetros da função}ReturnO que é “return”?return é palavra usada pra retornar algum valor da função para uma nova variável definida,como exemplo, vamos voltar à primeira expressão matemática: Se você não quisessemostrar as expressões e sim guardar os resultados em variáveis, você poderia usar umafunção parecida com essa:function expressao($valor) {$novoValor = 10+(5* $valor)/14-2;return $novoValor;}Assim, uma nova variável poderia receber o resultado. Seguindo os exemplos anteriores,ficaria assim:$exp1 = expressao(6);$exp2 = expressao(3);$exp3 = expressao(2);
  16. 16. O uso do "return" significa o fim da função, tudo que for usado após o return erá perdido.Obs.: Só quero ressaltar que na função podem ser usados variáveis de qualquer tipo,inteiros, strings, boolean, arrays, etc, os valores retornadas (com o return) seguem amesma regra.Fim.
  17. 17. Modulo 3 – Introdução part3  Variáveis Predefinidas  Escopo de variáveis  Cookies  SessionsVariáveis Predefinidas$GLOBALSContém um referência para todas as variáveis que são atualmente disponíveis dentro doescopo global do script. As chaves desse array são os nomes das variáveis globais.$GLOBALS existe desde o PHP 3.$_GETVariáveis postadas para o script via método HTTP GET. Análogo ao antigoarray $HTTP_GET_VARS(que ainda continua disponível, mas em decadência).$_POSTVariáveis postadas para o script via método HTTP POST. Análogo ao antigoarray$HTTP_POST_VARS (que ainda continua disponível, mas em decadência).$_COOKIEVariáveis postadas para o script via cookies HTTP. Análogo ao antigoarray $HTTP_COOKIE_VARS(que ainda continua disponível, mas em decadência).$_FILESVariáveis postadas para o script via transferência de arquivos HTTP. Análogo ao antigoarray$HTTP_POST_FILES (que ainda continua disponível, mas em decadência).Veja uploads via método POST para maiores informações.$_ENVVariáveis disponíveis no script do ambiente de execução. Análogo ao antigo array$HTTP_ENV_VARS (que ainda continua disponível, mas em decadência).$_REQUESTVariáveis postadas para o script por todas os mecanismos de input GET, POST, eCOOKIE não podem ter seu conteúdo garantido de qualquer forma.A presença e a ordem de inclusão das variáveis nesse array é definida de acordo com adiretiva de configuração variables_order. Este array não tem um equivalente nas versõesanteriores do PHP 4.1.0. Veja também import_request_variables().$_SESSIONVariáveis que estão atualmente registradas na sessão do script. Análogo ao antigo array$HTTP_SESSION_VARS (que ainda continua disponível, mas em decadência).Veja a sessão funções de manipulação de Sessões para maiores informações.$_SERVER
  18. 18. Variáveis criadas pelo servidor web ou diretamente relacionadas ao ambiente de execuçãodo script atual. Análogo ao antigo array $HTTP_SERVER_VARS (que ainda continuadisponível, mas em decadência).$_SERVER é um array contendo informações como headers, caminhos e localizações doscript. Os itens deste array são criados pelo servidor web. Não há garantias que todos osservidores web gerem todas elas: alguns servidores talvez omitam algumas ou geramoutras que não estão listadas aqui. Mesmo assim, um grande número dessas variáveisestão de acordo com a especificação CGI 1.1, então você pode esperar encontrá-lasnesse array.PHP_SELFO nome do arquivo do script atualmente em uso, relativo ao document root. Por exemplo,$_SERVER[PHP_SELF] em um script com o endereçohttp://example.com/test.php/foo.bar pode ser /test.php/foo.bar. A constante __FILE__contém o caminho completo e nome do arquivo (mesmo incluído) atual.Se estiver rodando o PHP em linha de comando, esta variável não está disponível.argvArray de argumentos passado para o script. Quando o script é executado na linha decomando, isto permite um acesso aos parâmetros de linha de comando no estilo do C.Quando chamado via método GET, ele conterá a query string.argcContém o número de parâmetros da linha de comando passados para o script (seexecutando da linha de comando).GATEWAY_INTERFACEO número de revisão da especificação CGI que o servidor está utilizando, por exemplo :CGI/1.1.SERVER_NAMEO nome host do servidor onde o script atual é executado. Se o script está rodando em umhost virtual, este será o valor definido para aquele host virtual.SERVER_SOFTWAREA string de identificação do servidor, fornecida nos headers quando respondendo arequests.SERVER_PROTOCOLNome e número de revisão do protocolo de informação pelo qual a página foi requerida,por exemplo HTTP/1.0;REQUEST_METHODContém o método de request utilizando para acessar a página. Geralmente GET, HEAD,POST ou PUT.QUERY_STRINGA query string (string de solicitação), se houver, pela qual a página foi acessada.
  19. 19. DOCUMENT_ROOTO diretório raiz sob onde o script atual é executado, como definido no arquivos deconfiguração do servidor.HTTP_ACCEPTO conteúdo do header Accept: da requisição atual, se houver.HTTP_ACCEPT_CHARSETO conteúdo do header Accept-Charset: da requisição atual, se houver. Exemplo: iso-8859-1,*,utf-8.HTTP_ACCEPT_ENCODINGO conteúdo do header Accept-Encoding: da requisição atual, se houver. Exemplo: gzip.HTTP_ACCEPT_LANGUAGEO conteúdo do header Accept-Language: da requisição atual, se houver. Exemplo en.HTTP_CONNECTIONO conteúdo do header Connection: da requisição atual, se houver. Exemplo: Keep-Alive.HTTP_HOSTO conteúdo do header Host: da requisição atual, se houver.HTTP_REFERERO endereço da página (se houver) através da qual o agente do usuário acessou a páginaatual. Essa diretiva é informada pelo agente do usuário.Nem todos os browsers geram esse header, e alguns ainda possuem a habilidade demodificar o conteúdo do HTTP_REFERER como recurso. Em poucas palavras, não éconfiável.HTTP_USER_AGENTO conteúdo do header User-Agent: da requisição atual, se houver. É uma string denotandoo agente de usuário pelo qual a página é acessada.Um exemplo típico é: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Além de outras coisas,você pode utilizar este valor com get_browser() para personalizar a geração de suaspáginas para as capacidades do agente do usuário.REMOTE_ADDRO endereço IP de onde o usuário está visualizado a página atual.REMOTE_HOSTO nome do host que o usuário utilizou para chamar a página atual. O DNS reverso(lookup) do REMOTE_ADDR do usuário.Nota: Seu servidor web precisa estar configurado para criar essa variável. Por exemplo, noApache você precisa colocar um HostnameLookups Ondentro do httpd.conf. Veja também gethostbyaddr().REMOTE_PORTA porta TCP na máquina do usuário utilizada para comunicação com o servidor web.
  20. 20. SCRIPT_FILENAMEO caminho absoluto o script atualmente em execução.Nota: Se o script for executado pela CLI com um caminho relativo, como file.php ou../file.php, $_SERVER[SCRIPT_FILENAME] irá conter o caminho relativo especificadopelo usuário.SERVER_ADMINO valor fornecido pela diretiva SERVER_ADMIN (do Apache) no arquivo de configuraçãodo servidor. Se o script está sendo executado em um host virtual, este será os valordefinido para aquele host virtual.SERVER_PORTA porta na máquina servidora utilizada pelo servidor web para comunicação. Como default,este valor é 80. Utilizando SSL, entretanto, mudará esse valor para a porta decomunicação segura HTTP.SERVER_SIGNATUREString contendo a versão do servidor e nome do host virtual que é adicionado às páginasgeradas no servidor, se ativa.PATH_TRANSLATEDO caminho real do script relativo ao sistema de arquivos (não o document root), depoisrealizou todos os mapeamentos de caminhos (virtual-to-real).Nota: A partir do PHP 4.3.2, PATH_TRANSLATED não mais existe implicitamente sob aSAPI do Apache 2, ao contrário da mesma situação no Apache 1, onde ela tinha o mesmovalor da variável de servidor SCRIPT_FILENAME, quando a mesma não era configuradapelo Apache. Essa mudança foi realizada para conformidade com a especificação CGI,onde PATH_TRANSLATED deve existir somente se PATH_INFO estiver definida.Apache 2 users may use AcceptPathInfo = On inside httpd.conf to define PATH_INFO.SCRIPT_NAMEContém o caminho completo do script atual. Útil para páginas que precisam apontar paraelas mesmas (dinamicamente). A constante __FILE__ contém o caminho completo e nomedo arquivo (mesmo incluído) atual.REQUEST_URIO URI fornecido para acessar a página atual, por exemplo, /index.html.PHP_AUTH_USERQuando executando sob o Apache como módulo e fazendo autenticaçào HTTP, estavariável estará definida com o username fornecido pelo usuário.PHP_AUTH_PWQuando executando sob o Apache como módulo e fazendo autenticaçào HTTP, estavariável estará definida com a senha fornecida pelo usuário.AUTH_TYPEQuando executando sob o Apache como módulo e fazendo autenticaçào HTTP, estavariável estará definida com o tipo de autenticação utilizado.
  21. 21. Esta é uma variável superglobal, ou automaticamente global. Isto significa que ela édisponível em todos os escopos (níveis) de um script.Você não precisa fazer um global $_SERVER; para pode acessá-la dentro de funções oumétodos, como era necessário com $HTTP_SERVER_VARS.Escopo de variáveisQuando uma variável é usada dentro de uma função, pode haver uma outra variável com omesmo nome que é utilizada em outra função ou no código do programa principal. Sãoespaços de memória diferentes, e cada uma funciona dentro do seu contexto, ou seja, avariável definida dentro de uma função só pode ser acessada ali dentro. Fora dali seu valornão é acessível em nenhuma outra parte do programa, mas é possível usar dentro de umafunção o valor de uma variável existente também no programa principal, tem dois jeitospara isso:Defini-la como global no inicio da função ou utilizar o array predefinido $GLOBALS, queutiliza os nomes das variáveis como associativaExemplo: PHP <?php $num = 1500; function escopo() { global $num; $num += 5; echo $num."<br>"; } echo $num."<br>"; escopo(); ?>CookiesO famoso cookie que nós conhecemos hoje foi criado em junho de 1994Antigamente cada visita a um site era como se fosse a primeira visita, sem formaautomática de se saber se um usuário já esteve ali, ou que páginas havia consultado.Qualquer transação comercial tinha que ser feita do início ao fim em uma só visita, e osvisitantes tinham que passar pelas mesmas páginas vezes seguidas ,era como visitar umaloja onde o vendedor tinha amnésia.O criador do cookie chama-se Lou Montulli, ele foi o nono funcionario a ser contratado poruma empresa que logo depois se tornaria a Netscape Communications, Montulli era umhacker, mas naquele tempo o nome hacker era usado no bom sentido quando uma pessoa
  22. 22. entendia muito de computadores. Quando ele teve a ideia de inventar o cookie a soluçãoencontrada era que cada computador de site da Web colocasse um pequeno arquivo namáquina de cada visitante, que acompanhasse seus passos dentro do site visitado.Montulli chamou essa nova tecnologia de "objeto do estado de cliente persistente”, mas eletinha um nome mais charmoso em mente, um do início da computação. Naquela época, asmáquinas trocavam pedaços de informação para propósitos de identificação e os primeirosprogramadores chamaram os dados trocados de "magic cookies", biscoitos mágicos.Montulli chamou sua invenção, descendente direta desses, de "cookie", biscoito.Foi um marco na história da computação: de um só golpe, os cookies mudaram a Web,que passou de um lugar de visitas descontínuas para um ambiente rico, no qual comprar,brincar e até viver, para alguns.Fundamentalmente, os cookies alteraram a natureza da navegação pela Web. Ela passoude uma atividade relativamente anônima, como caminhar pelas ruas de uma metrópole,para um ambiente onde os registros das transações, movimentos e até desejos podem serarmazenados, avaliados, minados e vendidos.Graças aos cookies, um cliente que faz uma compra em um site pode abandonar seucarrinho de compras antes de finalizar a compra e voltar mais tarde ao site, que perguntaráse ele deseja fazer seu pedido.Os cookies também permitem aos sites mostrarem anúncios diretamente ligados às partesdo site visitadas pelo navegador. Assim, alguém visitando um site orientado para a saúdeque lê informações sobre drogas para diabetes poderá ver um anúncio de nova medicaçãopara a doença.Todas essas funções podem ser feitas sem o conhecimento do nome do visitante, porqueo identificador anônimo e único incluído no cookie, é suficiente. Mas, se um proprietário desite da Web combinar esse identificador com informações pessoais do visitante, domomento de sua inscrição no site, por exemplo, então o cookie se torna um mecanismopoderoso de monitoramento individual.O php usa a função setcookie para enviar o cookie para o usuário essa função também éusada para excluir o próprio cookie, exemplo de criação de um cookie:setcookie("nome_do_cookie", "valor_do_cookie", "tempo de expiração");No tempo de expiração você pode usar a função time() + os segundos veja exemplo: PHP <? setcookie("cookie", "teste", time() + 3600); ?>Esse cookie tem uma validade de 1 hora:
  23. 23. PHP <? setcookie("cookie", "teste", time() + 3600*24*365); ?>Esse cookie tem validade de um ano3600 segundos = 1 hora3600 segundos vezes 24 horas24 horas vezes 365 diasPara excluir um cookie basta fazer a mesmo sistema que criar ele, mas usando um prazode expiração negativa. PHP <? setcookie("cookie", "teste", time() – 3600*24*365); ?>Veja acima o cookie que tinha validade de um ano será excluído pq foi passado que otempo dele agora é de um ano atrás, ou seja, já acabou.SessionsUma sessão (session) é um período de tempo durante o qual uma pessoa navega numsite.Uma sessão é gravada no servidor, e o tempo de duração de uma sessão pode ser ate ousuário fechar a página.Quando o usuário entra no site criamos uma sessão e ela recebe um número identificadorúnico, chamado de session_id, para uma pagina ter o acesso aos dados da sessão elatem que ter esse número identificador.Para criar uma sessão sempre se utiliza session_start() e antes de qualquer saída html.Exemplo: PHP <? session_start();
  24. 24. $_SESSION["teste"] = 1; ?>Foi criado uma sessão com o nome se teste e valor 1E nas paginas seguintes você pode restaurar esse valor assim: PHP <? session_start(); echo $_SESSION["teste"]; ?>Você pode usar session_register() para registrar suas variáveis, no caso, o nome davariável na sessão será a mesma do nome da variável gravado, exemplo: PHP $linguagem = "PHP"; session_register("linguagem");Nesse caso foi gravada a variável $linguagem na variável de sessão “linguagem”, eis avantagem de se usar $_SESSION que é recomendado a partir da versão 4.1, já que vocêpoderá definir o nome da variável na sessão.Obs.: session_register trabalha com register_globals on, e como está em extinção o usoem on, é sempre recomendado então usar $_SESSION, aliás, as facilidades são muitomaiores, já que você trabalhará com elas como uma variável normal.Onde posso usar sessões?Na verdade, as sessões são geralmente usadas pra criar lojas virtuais e sistemas de login,onde o usuário entrará com usuário e senha em um formulário. Buscará no banco dedados (ou o que estiver usando com um) e se achar algum usuário gravará na sessão umaidentificação que dirá que ele já foi logado. Isso somente durará até o fechamento dobrowser. Logo, grande parte dos websites ainda usam cookies por esse motivo. Até hoje, aúnica maneira de você sair de um site, entrar mais tarde e tudo estar do jeito que você viaantes é usando os cookies.
  25. 25. Modulo 4 – Introdução part4o requireo includeo require_onceo include_onceo Autenticação HTTP com PHPo Arrayso Headerrequire()A instrução require() inclui a avalia um arquivo específico.require() e include() são idênticos em todas as formas exceto pela manipulação de erros.include() produz um Warning enquanto require() produzirá um Fatal Error. Em outras palavras,não hesite em utilizar require() se na falta de um arquivo quiser parar o processamento dapágina. include() não se comporta da mesma maneira, e o script poderá continuar nessasituação. Em todo caso, vale a pena confirmar a configuração da diretiva include_path.PHP 1. <?php 2. require prepend.php; 3. require $somefile; 4. require (somefile.txt); 5. ?>include()A instrução include() inclui e avalia o arquivo informado.A documentação a seguir se aplica também a require(). Esses dois construtores são idênticos aexceção de como eles manipulam erros. include() produz um Warning enquanto require()produzirá um Fatal Error. Em outras palavras, utilize require() se você deseja que um arquivofaltando interrompa o processamento da página. include() não se comporta da mesmamaneira, permitindo que o script continue nessas situações. Em todo caso, vale a penaconfirmar a configuração da diretiva include_path. Esteja avisado que um erro deinterpretação no arquivo incluído não causa o cancelamento do processamento.Arquivos a incluir são procurados primeiramente no include_path relativo ao diretório atual detrabalho e depois no include_path relativo ao diretório atual do script. Por exemplo, se seuincluide_path é ., o diretório atual é /www/, se você incluiu include/a.php e há um b.php nesse
  26. 26. arquivo, b.php será procurado primeiro em /www/ e somente depois em /www/include/.Quando um arquivo é incluído, seu código entra no escopo de variável da linha onde a inclusãoocorre. Qualquer variável disponível da linha onde a chamada da inclusão ocorre estarádisponível para o arquivo incluído, daquele ponto em diante.vars.php$cor = verde;$fruta = maçã;frutas.php<?phpecho "Uma $fruta $cor"; // ira mostrar "Uma" e um notice que nao existe as variaveis $fruta e$corinclude vars.php;//inclue a paginaecho "Uma $fruta $cor"; // ira mostrar "Uma maçã verde"?>require_once()A instrução require_once() incluí e avalia o arquivo especificado durante a execução do script.Seu comportamento é similar ao da instrução require(), a não ser que o arquivo informado játenha sido incluído, não refazendo a operação novamente. Veja a documentação de require()para maiores informações sobre como essa instrução funciona.require_once() pode ser utilizado nos casos em que o mesmo arquivo pode acabar sendoincluído mais de uma vez durante a execução de um script em particular, quando na verdadeele só pode ser incluído apenas uma, para evitar problemas com redefinições de funções,alterações nos valores de variáveis, etc.<?php<br />require_once("a.php"); // isto irá incluir a.phprequire_once("A.php"); // isto iráincluir a.php de novo no Windows!?>include_once()A instrução include_once() inclui e avalia o arquivo especificado durante a execução de umscript. Seu comportamento é similar a instrução include(), a não ser que o arquivo informadojá tenha sido incluído, não refazendo a operação novamente. Como o nome sugere, ele seráincluído apenas uma vez.
  27. 27. include_once() pode ser utilizado nos casos em que o mesmo arquivo pode acabar sendoincluído mais de uma vez durante a execução de um script em particular, quando na verdadeele só pode ser incluído apenas uma para evitar problemas com redefinições de funções,alterações nos valores de variáveis, etc.Para maiores informações utilizando require_once() e include_once(), veja o código do PEARincluído nas últimas distribuições do código fonte do PHP.<?php<br />include_once("a.php");<br /> // isto irá incluir a.phpinclude_once("A.php"); // istoirá incluir a.php de novo no Windows!?>Autenticação HTTP com PHPAutenticação via HTTP no PHP só é disponível quando o mesmo for executador como módulodo Apache e, portanto, não é disponível na versão CGI. Em um script PHP no módulo Apache, épossível usar a função header() para enviar uma janela de entrada "Authentication Required".Uma vez que o usuário preencheu seu nome de usuário e senha, a URL contendo o script PHPserá chamada de novo com as variáveis predefinidas PHP_AUTH_USER, PHP_AUTH_PW, eAUTH_TYPE contendo o nome de usuário, senha e tipo de autenticação, respectivamente.Essas variáveis predefinidas são achadas nos arrays $_SERVER e $HTTP_SERVER_VARS.Somente autenticação "Basic" (Básica) é suportada.um exemplo simples :<?session_start(); function Autenticar() { header(WWW-Authenticate: Basic realm = "Area Restrita"); header(HTTP/1.0 401 Unauthorized); echo "<center><h1>Acesso Restrito</h1></center>"; exit; } function Confere_Login($nome, $senha) { mysql_connect("localhost", "usuario", "senha"); mysql_select_db("online"); $re = mysql_query("select count(*) as total from usuarios where nome = $nome and senha= md5($senha)"); mysql_close(); return mysql_result($re, 0, "total");}if ( !isset($_SERVER["PHP_AUTH_USER"]) and !isset($_SERVER["PHP_AUTH_PW"]) )
  28. 28. { Autenticar();}else{ $total = Confere_Login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"]); if ( $total == 0 ) { Autenticar(); }}?>ArraysUm array no PHP é atualmente um mapa ordenado. Um mapa é um tipo que relaciona valorespara chaves. Este tipo é otimizado de várias maneiras, então você pode usá-lo como um arrayreal, ou uma lista (vetor), hashtable (que é uma implementação de mapa), dicionário, coleção,pilha, fila e provavelmente mais. Como você pode ter outro array PHP como um valor, vocêpode facilmente simular árvores.A explicação dessas estruturas estão além do escopo desse manual, mas você pode encontrarexemplos para cada uma dessas estruturas a seguir. Para mais informações sobre estruturas,refira-se a literatura externa sobre esses tópicos.SintaxeEspecificando com array()Um array pode ser criado com o construtor de linguagem array(). Ele pega um certo númerode pares separados por vírgula chave => valor .array( [chave =>] valor , ... )// chave pode ser tanto string ou um integer// valor pode ser qualquer coisaPHP 1. <?php 2. $arr = array("foo" => "bar", 12 => true); 3. echo $arr["foo"]; 4. echo $arr[12];
  29. 29. 5. ?>A chave pode ser tanto um integer ou uma string. Se a chave é uma representação padrão deum integer, ele será interpretado assim (por exemplo, "8" será interpretado como 8, enquanto"08" será interpretado como "08"). Não há diferença entre arrais indexados e associativos emPHP, apenas um tipo de array, que pode ter índices inteiros ou string.O valor pode ser qualquer tipo PHP:PHP 1. <?php 2. $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); 3. 4. echo $arr["somearray"][6]; 5. echo $arr["somearray"][13]; 6. echo $arr["somearray"]["a"]; 7. ?>Se omitir a chave quando fornece um novo item, o maior índice inteiro é obtido, e a novachave será esse máximo + 1. Se você especificar uma chave que já possui um valor assimilada aela, então o valor é sobrescrito.PHP 1. <?php 2. array(5 => 43, 32, 56, "b" => 12); 3. 4. array(5 => 43, 6 => 32, 7 => 56, "b" => 12); 5. ?>Indice de algumas funções do array:array_change_key_case -- Retorna um array com todas as chaves string em maiúsculo ouminúsculoarray_chunk -- Divide um array em pedaçosarray_count_values -- Conta as frequências de cada valor de um array
  30. 30. array_diff -- Analisa as diferenças entre arraysarray_fill -- Preenche um array com valoresarray_filter -- Filtra os elementos de um array utilizando uma funçãoarray_flip -- Inverte as relações entre chaves e valoresarray_intersect -- Calcula a interseção entre arraysarray_key_exists -- Checa se uma chave ou índice existe em um arrayarray_keys -- Retorna todas as chaves de um arrayarray_map -- Aplica uma função em todos os elementos dos arrays dadosarray_merge_recursive -- Funde dois ou mais arrays recursivamentearray_merge -- Funde dois ou mais arraysarray_multisort -- Ordena múltiplos arrays ou arrays multi-dimensionaisarray_pad -- Expande um array para um certo comprimento utilizando um determinado valorarray_pop -- Retira um elemento do final do arrayarray_push -- Adiciona um ou mais elementos no final de um arrayarray_rand -- Retorna um ou mais elementos aleatórios de um arrayarray_reduce -- Reduz um array para um único valor através de um processo iterativoutilizando uma função.array_reverse -- Retorna um array com os elementos na ordem inversaarray_search -- Procura por um valor em um array e retorna sua chave correspondente casoseja encontradoarray_shift -- Retira o primeiro elemento de um arrayarray_slice -- Extrai uma parcela de um arrayarray_splice -- Remove uma parcela do array e substitui com outros elementosarray_sum -- Calcula a soma dos elementos de um arrayarray_unique -- Remove o valores duplicados de um arrayarray_unshift -- Adiciona um ou mais elementos no início de um arrayarray_values -- Retorna todos os valores de um arrayarray_walk -- Aplica uma determinada funcão em cada elemento de um arrayarray -- Cria um arrayarsort -- Ordena um array em ordem descrescente mantendo a associação entre índices evaloresasort -- Ordena um array mantendo a associação entre índices e valorescompact -- Cria um array contendo variáveis e seus valorescount -- Conta o número de elementos de uma variávelcurrent -- Retorna o elemento corrente em um arrayeach -- Retorna o par chave/valor corrente de um array e avança o seu cursorend -- Faz o ponteiro interno de um array apontar para o seu último elementoextract -- Importa variáveis para a tabela de símbolos a partir de um arrayin_array -- Checa se um valor existe em um arraykey -- Retorna uma chave de um array associativokrsort -- Ordena um array pelas chaves em ordem descrescenteksort -- Ordena um array pelas chaveslist -- Cria variáveis como se fossem arraysnatcasesort -- Ordena um array utilizando o algoritmo da "ordem natural" sem diferenciarmaiúsculas e minúsculas
  31. 31. natsort -- Ordena um array utilizando o algoritmo da "ordem natural"next -- Avança o ponteiro interno de um arraypos -- Retorna o elemento atual do arrayprev -- Retrocede o ponteiro interno de um arrayrange -- Cria um array contendo uma faixa de elementosreset -- Faz o ponteiro interno de um array apontar para o seu primeiro elementorsort -- Ordena um array em ordem descrescenteshuffle -- Mistura os elementos de um arraysizeof -- Apelido de count()sort -- Ordena um arrayuasort -- Ordena um array utilizando uma função de comparação definida pelo usuário emantendo as associações entre chaves e valoresuksort -- Ordena um array pelas chaves utilizando uma função de comparação definida pelousuário.usort -- Ordena um array pelos valores utilizando uma função de comparação definida pelousuárioHeaderheader -- Envia um cabeçalho HTTP diretamenteheader() é usado para enviar diretamete cabeçalhos HTTP headers.O parâmetro opcional replace indica quando um cabeçalho deverá substituir um cabeçalhosimilar anterior, ou adicionar um segundo cabeçalho do mesmo tipo. Por padrão irá substituir,mas se você passar FALSE como segundo argumento você poderá forçar multiplos cabeçalhosdo mesmo tipo. Por exemplo:PHP 1. <?php 2. header(WWW-AuthenticateNegotiate); 3. header(WWW-AuthenticateNTLM, false); 4. ?>O segundo caso especial é o cabeçalho "Location:". Não somente envia o seu cabeçalho para obrowser, mas também retorna código de situação REDIRECT (302) para o browser a menos quealgum código de situação 3xx já tenha sido definido.PHP 1. <?php 2. header("Location//www.imasters.com.br"); ?>
  32. 32. Scripts PHP normalmente geram conteúdo dinamico que não deva ser guardado em cachepelo browser do cliente ou qualquer cache de proxy entre o servidor e o browser do cliente.Muitos proxies e clientes são forçados a desabilitar o cache usando:PHP 1. <?php 2. header("ExpiresMon, 26 Jul 1997 05:00:00 GMT"); 3. header("Last-Modified" . gmdate("D, d M Y H:i:s") . " GMT"); 4. header("Cache-Controlno-store, no-cache, must-revalidate"); 5. header("Cache-Controlpost-check=0, pre-check=0", false); 6. header("Pragmano-cache"); 7. ?>Você pode pensar que suas páginas não são colocadas em cache mesmo que você não envietodos os cabeçalhos acima. Existem várias opções que os usuários podem definir em seusbrowser que mudam o funcionamento do cache. Enviando os cabeçalhos acima, você irásobrescrever qualquer definição que faça seu script ser colocado em cache.Adicionalmente as configurações, session_cache_limiter() e session.cache_limiter podem serusadas para gerar automaticamente os cabeçalhos corretos quando estão sendo usadassessões.Lembre-se que header() deve ser utilizada antes que qualquer saida seja enviada, seja peloHTML, linhas ou espaços em branco em um arquivo, ou a partit do PHP. É um erro muitocomum ler código com a função include(), ou require(), ou outra função que acesse arquivos, eter espaços ou linhas em branco antes da função header(). O mesmo problema existe quandousar um arquivo PHP/HTML.PHP 1. <html> 2. <?php 3. header(Location//www.example.com/); 4. ?>Nota: A partir do PHP 4, você pode usar o buffer de saída para contornar este problema, com a
  33. 33. sobrecarga que toda a saída do browser será guardada em buffer no servidor até quevoc^envie ele. Você poderá fazer isso usando ob_start() e ob_end_flush() no seu script oudefinido a diretiva de configuração output_buffering no seu php.ini ou nos arquivos deconfiguração do servidor.Se você queira que seja perguntado ao usuário para salvar os dados que você esta enviando,como um arquivo PDF gerado, você pode usar o cabeçalho Content-Disposition pararecomendar um nome de arquivo e forçar o browser a mostrar uma caixa salvar arquivo.PHP 1. <?php 2. // Nós estaremos enviando um PDF 3. header(Content-typeapplication/pdf); 4. // Será chamado downloaded.pdf 5. header(Content-Dispositionattachment; filename="downloaded.pdf"); 6. // A fonte do PDF é original. 7. readfile(original.pdf); 8. ?>
  34. 34. Modulo 5Interagindo com banco de dados (Mysql)Introduçãoo Breve Historia Mysqlo mysql_connecto mysql_select_dbo mysql_queryo mysql_closeo mysql_fetch_arrayo mysql_fetch_rowo mysql_fetch_objecto mysql_resulto mysql_erroro mysql_insert_ido Comando basicos SQLo [brinde] Sistema de cadastro para LivrariaBreve Historia MysqlA derivação do nome MySQL foi criado apartir do prefixo "my" porque o pessoal dodesenvolvimento do mysql usava esse prefixo nos seus diretorios e inumeras bibliotecas eferramentas que eles usavam.A filha de Monty Widenius ( criador do banco mysql ) também ganhou o nome MyO golfinho do MySQL (logo marca do mysql) é Sakila. Sakila foi escolhido pelos fundadores daMySQL AB de uma enorme lista denomes sugeridos pelos usuários em um concurso "Name the Dolphin". O nome vencedor foienviado por Ambrose Twebaze, um desenvolvedorde programas open source de Swaziland, Africa. De acordo com Ambrose, o nome Sakila temas suas raízes em SiSwati, a língua local deSwaziland. Sakila é também o nome de uma cidade em Arusha, Tanzania, próxima ao país deorígem de Ambrose, Uganda.mysql_connectmysql_connect -- Abre uma conexao com o Mysqlmysql_connect("servidor", "usuario", "senha");por padrao o mysql vem com usuario root e sem senha entao para conectar a primeira vez
  35. 35. você pode fazer assim:mysql_connect("localhost");mysql_select_dbmysql_select_db -- Seleciona um banco de dados MySQLmysql_select_db(nome_do_banco);mysql_querymysql_query -- Realiza uma query MySQLexemplo:mysql_query("select * from tabela");mysql_closemysql_close -- Fecha a conexão com o MySQLexemplo:$link = mysql_connect(localhost, usuario, senha);mysql_close($link);mysql_fetch_arraymysql_fetch_array -- Busca o resultado de uma linha e o coloca como uma matriz associativa,matriz numérica ou ambas.exemplo:mysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$re = mysql_query("SELECT * FROM tabela");while ($l = mysql_fetch_array($re)) { echo $l["campo"]."<br>";}mysql_fetch_rowmysql_fetch_row -- Retorna o resultado de uma linha numa matriz numérica
  36. 36. mysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$re = mysql_query("SELECT * FROM tabela");while ($l = mysql_fetch_row($re)) { echo $l[0]."<br>";}mysql_fetch_objectmysql_fetch_object -- Retorna o resultado de uma linha como um objetomysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$re = mysql_query("select * from tabela");while ($l = mysql_fetch_object($re)) { echo $l->campo."<br>";}mysql_resultmysql_result -- Retorna dados do resultadomysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$re = mysql_query("select count(*) as total from tabela");$total = mysql_result($re, 0, "total");mysql_errormysql_error -- Retorna o texto da mensagem de erro da operação anterior do MySQL$link = mysql_connect("localhost", "usuario", "senha");if (!$link) {die(Erro: . mysql_error());}echo Conexao ok;mysql_close($link);
  37. 37. mysql_insert_idmysql_insert_id -- Retorna o ID gerado da operação INSERT anteriorComando basicos SQLMostrarei nesse tutorial uns comando basicos de sql como editar salvar fazer uma busca eexplicar o basico dos nomes dos comando sqlSELECT - Seleciona dados da tabelaSELECT [nome do campo | *] FROM [tabela] WHERE [campo] = [valor] ORDER BY [campo] [ASC| DESC]- SELECT = seleciona- FROM = da/de/do- WHERE = aonde- ORDER BY = organizar por- GROUP BY = função de agrupamento-| = ou- ASC = Ascendente- DESC = DescendenteWHERE condicao for verdadeiracodicoes- campo = valor- campo > valor- campo < valor- campo >= valor- campo <= valor- campo like "%texto%" // % = qualquer caracter, _ = um unico caracter- campo BETWEEN valor_minimo AND valor_maximo // BETWEEN = ENTRE UM E OUTROselect * from usuarios where nome like "a%" and idade > 15;+----+-------+-------+------+---------------------+| id | nome | idade | sexo | data_cadastro |+----+-------+-------+------+---------------------+| 9 | andre | 20 | M | 2004-02-25 19:04:56 |+----+-------+-------+------+---------------------+
  38. 38. mysql> select * from usuarios where idade < 30 order by nome desc;+----+--------+-------+------+---------------------+| id | nome | idade | sexo | data_cadastro |+----+--------+-------+------+---------------------+| 10 | Fabyo | 27 | M | 2004-03-27 19:10:35 || 1 | natan | 20 | M | 2004-03-27 18:07:25 || 8 | carlos | 20 | M | 2004-03-27 18:12:01 || 4 | carla | 20 | F | 2004-03-27 18:19:23 || 9 | andre | 20 | M | 2004-03-27 19:04:56 |+----+--------+-------+------+---------------------+mysql> select nome, idade, sexo from usuarios where idade between 20 and 30;+--------+-------+------+| nome | idade | sexo |+--------+-------+------+| natan | 20 | M || carlos | 20 | M || carla | 20 | F || raul | 30 | M || andre | 20 | M |+--------+-------+------+INSERT - Insere dados na tabelaINSERT INTO tabela (campo1, campo2, campo3, ...) VALUES (valor1, valor2, valor3, ...)Quando não for passado o nome dos campos entre parenteses após a tabela, o servidorentenderá que vocêquer inserir todos os campos na ordem que estão da tabela.INSERT INTO tabela VALUES (valor1, valor2, valor3, valor4, ...)- INSERT = inserir- INTO = dentro de- VALUES = valoresinsert into usuarios (nome, idade, sexo, data_cadastro)values ("Fabyo", 27, "M", "1999-12-31 12:00:00");insert into usuarios values ("", "Fabyo", 27, "M", NOW());
  39. 39. UPDATE - Atualiza valores na tabelaUPDATE tabela SET campo1 = valor1, campo2 = valor2, campo3 = valor3 WHERE campo = valor- UPDATE = Atualiza- SET = Defina- WHERE = Aondeupdate usuarios, set nome = "Carlos", idade = 18 where id = 7;DELETE - Apaga registro da tabelaDELETE FROM tabela WHERE campo = valor- DELETE - Apaga- FROM - de/do/da- WHERE - Aondedelete from usuarios where id = 7;[brinde] Sistema de cadastro para LivrariaEsse Modulo nao tera exercicios ,mas terá de brinde um sistema (simples) de Cadastro delivros para livrariacom esse sistema você conseguira entender melhor como funciona o php junto com mysql ecomo fazer um sistemade cadastro completo e relacionando as tabelas de um modo simplessó explicando quando você ver na tabela escrito fk representa (foreign key) ou chaveestrangeiraque é o id de uma tabela sendo representado em outra tabela fazendo um relacionamento.Dica:use strip_tags serve pra tirar tags html evitando que pessoas cadastre tags html no seu banconão abordei a fundo o Mysql, porque estamos pra lançar um curso online de Mysqlobrigado a todos e bons estudos.
  40. 40. Modulo 6Introduçãoo Upload de Arquivoso Conexão com banco de dados acesso Funções matemáticaso ImapUpload de ArquivosUpload de arquivos com o método POST O PHP é capaz de receber o upload de qualquerbrowser que siga a norma RFC-1867 (o que inclui Netscape Navigator 3 ou posterior, MicrosoftInternet Explorer 3 com um patch da Microsoft, ou posterior sem patch). Isto permite que sefaça o upload de arquivos de texto e binários. Com as funções de autenticação e manipulaçãode arquivos do PHP, você tem o controle completo de quem pode fazer o upload dearquivo e o que fazer com o arquivo após seu upload.Tenha certeza que seu formulário de upload de arquivo tenha enctype="multipart/form-data" em outro caso o upload do arquivo não irá funcionar.$_FILES[arquivo][name]O nome original do arquivo no computador do usuário.$_FILES[arquivo][type]O tipo mime do arquivo, se o browser deu esta informação. Um exemplo pode ser"image/gif".$_FILES[arquivo][size]O tamanho, em bytes, do arquivo.$_FILES[arquivo][tmp_name]O nome temporário do arquivo, como foi guardado no servidor.$_FILES[arquivo][error]is_uploaded_fileis_uploaded_file -- Diz se o arquivo foi enviado via HTTP POSTbool is_uploaded_file ( string filename)Retorna TRUE se o arquivo com o nome filename foi uploaded via HTTP POST. Isto é útil parater certeza que um usuário malicioso, não está tentandoconfundir o script em trabalhar em arquivos que não deve estar trabalhando --- por exemplo,
  41. 41. /etc/passwd.Este tipo de confirmação é importante principalmente se existe alguma chance que qualquercoisa feita com os arquivos carregados poderiam revelaro seu conteúdo para o usuário, ou mesmo para outros usuários no mesmo sistema.is_uploaded_file() está disponível somente em versões do PHP 3 depois da 3.0.16 e em versõesdo PHP 4 posteriores a 4.0.2. Se você ainda está utilizandouma versão anterior, você pode utilizar o seguinte código para se proteger:Nota: O exemplo seguinte não funcionará em versões do PHP posteriores a 4.0.2. Isto dependede uma funcionalidade interna do PHP que mudou depois dessa versão.PHP 1. <?php 2. /* Teste de arquivo carregado pelo usuário */ 3. function is_uploaded_file($filename) { 4. if (!$tmp_file = get_cfg_var(upload_tmp_dir)) { 5. $tmp_file = dirname(tempnam(, )); 6. } 7. $tmp_file .= / . basename($filename); 8. /* Pode haver uma barra no final do php.ini... */ 9. return (ereg_replace(/+, /, $tmp_file) == $filename); 10. } 11. 12. /* Utilize isto se por acaso você não tiver 13. * move_uploaded_file() em versões antigas: */ 14. if (is_uploaded_file($HTTP_POST_FILES[arquivo])) { 15. [b]copy[/b]($HTTP_POST_FILES[arquivo], "/place/to/put/uploaded/file"); 16. } else { 17. echo "Possível ataque de carregamento de arquivo: filename $HTTP_POST_FILES[arquivo]."; 18. }
  42. 42. 19. ?>move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file -- Move um arquivo carregado para uma nova localizaçãoDescriçãobool move_uploaded_file ( string nomedoarquivo, string destino)Esta função primeiro checa o arquivo informado nomedoarquivo é um arquivo válidouploadeado (significando que ele foi carregado pelo mecanismo doPHP de HTTP POST). Se o arquivo é válido, ele será movido para o nomedoarquivo dado pelodestino.Se nomedoarquivo não é um arquivo carregado válido, então não haverá nenhuma ação emove_uploaded_file() irá retornar FALSE.Se nomedoarquivo é um arquivo uploadeado válido e não pode ser movido por alguma razão,nenhuma ação irá ocorrer, e move_uploaded_file() irá retornar FALSE.Adicionalmente, um aviso será emitido.Este tipo de confirmação é importante principalmente se existe alguma chance que qualquercoisa feita com os arquivos carregados poderem revelar o seuconteúdo para o usuário, ou mesmo para outros usuários no mesmo sistema.Nota: Quando o safe-mode está ativo, o PHP verifica se o(s) arquivo(s) e/ou diretório(s) queserão afetados por esta operação tem o mesmo UID (proprietário) doscript que está sendo executado.Nota: move_uploaded_file() não é afetado pelas restrições de UIN normais do safe mode. Istonão é inseguro porque move_uploaded_file() somente opera sobre arquivoscarregados pelo PHP.AtençãoSe o arquivo destino já existir, então ele será sobrescrito.Veja também is_uploaded_file() e a seção Manipulando o upload de arquivos para umexemplo de utilização desta função.Explicação das mensagens de erro
  43. 43. Desde o PHP 4.2.0, PHP retorna um código de erro apropriado na array do arquivo. O códigode erro pode ser encontrado em [error] na array que é criada durante oupload do arquivo. Em outras palavras, o erro deve ser encontrado em$_FILES[arquivo][error].Tratamentos de ErrosUPLOAD_ERR_OKValor: 0; não houve erro, o upload foi bem sucedido.UPLOAD_ERR_INI_SIZEValor 1; O arquivo no upload é maior do que o limite definido em upload_max_filesize nophp.ini.UPLOAD_ERR_FORM_SIZEValor: 2; O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE que foi especificado noformulário HTML.UPLOAD_ERR_PARTIALValor: 3; o upload do arquivo foi feito parcialmente.UPLOAD_ERR_NO_FILEValor: 4; Não foi feito o upload do arquivo.Nota: Estas tornaram-se constantes no PHP 4.3.0Variáveis de upload de arquivos HTTP: $_FILESNota: Introduzida na versão 4.1.0. Em versões anteriores, use $HTTP_POST_FILES.Contém um array associativo dos itens carregador no script atual através do método HTTPPOST.Esta é uma variável superglobal, ou automaticamente global. Isto significa que ela édisponível em todos os escopos (níveis) de um script. Você não precisa fazerum global $_FILES; para pode acessá-la dentro de funções ou métodos, como era necessáriocom $HTTP_FILES_VARS.Exemplo de um upload:<html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="upload.php" method="post" enctype="multipart/form-data" name="form1"><input type="file" name="arquivo"><input type="submit" name="Submit" value="Enviar"></form>
  44. 44. </body></html>upload.php<?//Fabyo Guimaraesclass Upload{var $arquivo = "";//array com os codigos dos erros de uploadvar $erro = array ( "0" => "upload execultado com sucesso!","1" => "O arquivo é maior que o permitido pelo Servidor","2" => "O arquivo é maior que o permitido pelo formulario","3" => "O upload do arquivo foi feito parcialmente","4" => "Não foi feito o upload do arquivo");//função que verifica se o arquivo foi enviado, e se obteve sucesso returna true e cria avariavel para ser manipuladofunction Verifica_Arquivo(){$this->arquivo = isset($_FILES[arquivo]) ? $_FILES[arquivo] : FALSE;return is_uploaded_file($this->arquivo[tmp_name]) ? true : false;}//função que envia o arquivo para o servidor se nao existir a pasta no servidor ele cria obs:linux usar chmodfunction Envia_Arquivo(){// se o arquivo foi enviado corretamente ele enviaif($this->Verifica_Arquivo() == true){ set_time_limit(0);$diretorio = "pasta/";if(!file_exists($diretorio)){mkdir($diretorio);}//se ja existir ele renomeia o arquivo novo para nao sobrescrever o existentewhile ( file_exists ( $diretorio.$this->arquivo[name] )){$this->arquivo[name] = preg_replace ( "/^(.+?)(_?)(d*)(.[^.]+)?$/e", "$1_.($3+1).$4",$this->arquivo[name]);}move_uploaded_file($this->arquivo[tmp_name], $diretorio . $this->arquivo[name]);
  45. 45. echo "<span style="color: white; border: solid 1px; background: blue;">".$this->erro[$this->arquivo[error]]."</span>";}se o arquivo nao foi enviado ou tenha dado algum erro ele mostra a mensagem de erroelseif( isset($this->arquivo[tmp_name]) ){echo "<span style="color: white; border: solid 1px; background: red;">".$this->erro[$this->arquivo[error]]."</span>";}}}?>Notem que essa classe cuida para obter sucesso no envio do arquivo ,mas ela não estatratando do tipo(type) de arquivocaso você queria enviar imagens para o servidor você pode limitar tamanho, dimensao daimagem e tipo de extensaoe se for arquivo você pode limitar a extensão só para o tipo que você quiser, caso tenhaduvidas em como tratar o tipo de arquivo só postar no forum.Funções matemáticasabsRetorna o valor Valor absoluto de um número.Se o argumento número é do tipo float, o número retornado também é floatExemplo:<?php$abs = abs(-4.2); // $abs = 4.2; (double/float)$abs2 = abs(5); // $abs2 = 5; (inteiro)$abs3 = abs(-5); // $abs3 = 5; (inteiro)?>floor -- Arredonda frações para baixo<?phpecho floor(4.3); // 4echo floor(9.999); // 9?>round -- Arredonda um número
  46. 46. <?phpecho round(3.4); // 3echo round(3.5); // 4echo round(3.6); // 4echo round(3.6, 0); // 4echo round(1.95583, 2); // 1.96echo round(1241757, -3); // 1242000echo round(5.045, 2); // 5.04echo round(5.055, 2); // 5.06?>number_format -- Formata um número com os milhares agrupadosecho number_format( "1000.000", 2, ",", ".");esse exemplo acima ira retornar 1.000,00max -- Localiza o maior número<?echo max(1, 3, 5, 6, 7); // 7echo max(array(2, 4, 5)); // 5?>min -- Localiza o menor número<?echo min(2, 3, 1, 6, 7); // 1echo min(array(2, 4, 5)); // 2?>count -- Conta o número de elementos de uma variável<?php$a[0] = 1;$a[1] = 3;$a[2] = 5;$result = count($a);// $result == 3$b[0] = 7;$b[5] = 9;
  47. 47. $b[10] = 11;$result = count($ ;// $result == 3;?>sqrt -- Raiz quadrada<?echo sqrt(9); // 3echo sqrt(10); // 3.16227766 ...?>rand -- Gera um número aleatórioPHP 1. <? 2. echo rand(0,9); 3. ?>Mais detalhes : www.php.net/ref.math.phpImapO que é IMAP?O protocolo IMAP foi originalmente desenvolvido na Universidade de Stanford em 1986.Trata-se de um método de acesso a mensagens eletrônicas armazenadas em um servidor localou remoto.IMAP quer dizer Internet Message Access Protocol [RFC 2060] e sua versão mais recente e aIMAP4rev1 [RFC 2060]descomente a linha do php.ini extension=php_imap.dllobs: nesse exemplo nao tem suporte a MIMENesse exemplo ele faz:tratamento de errosve quantos emails você tempega o assunto,remetente,data/hora e a mensagem
  48. 48. <?php/* Fabyo Guimaraes$servidor = "seu_servidor";$usuario = "usuario";$senha = "senha";@ini_set(display_errors, 0);$mbox = imap_open("{pop3.$servidor/pop3:110}", $usuario . "@" . $servidor, $senha ,OP_HALFOPEN);$erro[] = imap_last_error();// testo se tem email no servidorif ($erro[0] == "Mailbox is empty") {echo "Nao tem nenhuma mensagem";exit;}// verifico se esta certo o usuario e senhaelseif ($erro[0] == "POP3 connection broken in response") {echo "Usuario ou a senha estao errados";exit;}// testo se o servidor esta certoelseif ($erro[0] == "Host not found (#11004): pop3.$servidor") {echo "O servidor $servidor esta errado";exit;}// se a $erro estiver vazia ele continuaif ($erro[0] == "") {$numero_mensagens = imap_num_msg($mbox);$numero_mens_nao_lidas = imap_num_recent($mbox);if ($numero_mensagens == 1) {echo "você tem $numero_mensagens mensagem";} else {echo "você tem $numero_mensagens mensagens";}echo "<br><br>";for($i = 1;$i <= imap_num_msg($mbox);$i++) {$headers = imap_header($mbox, $i);$assunto = $headers->subject;
  49. 49. $message_id = $headers->message_id;$toaddress = $headers->toaddress;$to = $headers->to;$remetente = $to[0]->personal;$email_remetente = $to[0]->mailbox;$servidor_remetente = $to[0]->host;$data = $headers->date;$data = strtotime($data);$data = date("d/m/Y H:i:s", $data);echo "Assunto = $assunto - Remetente = $email_remetente@$servidor_remetente Data =$data <a href="imap.php?id=$i">Ler Mensagem</a><br>";}echo "<br>";if (isset($_GET["id"])) {$id = $_GET["id"];$mensagem = imap_fetchbody($mbox, $id, 1);echo nl2br(quoted_printable_dequote($mensagem));}imap_close($mbox);}?>mais detalhes:http://br.php.net/ma...en/ref.imap.php
  50. 50. Modulo 7Introduçãoo Estatisticaso Dicas diversas sobre funções php para usar com Mysqlo Dicas basicas sobre configuração do phpMyAdmino SQLo Montando um sistema de cadastro de funcionariosEstatisticasVamos aprender um pouco como pegar e tratar varias informações uteis para ser usado emdeterminados momentossó lembrando que o php roda no servidor então a maioria das informações que você conseguirserá do próprio servidortirando as variaveis de ambiente.E não falarei sobre as coisa basicas como contador e datas, vou mostrar outras funções poucoconhecidas de algunsPara pegar o IP do visitante:$ip = $_SERVER["SERVER_ADDR"];ou$ip = getenv("REMOTE_ADDR");getenv -- Obtém uma variável de ambientePara pegar o IP de um site:$ip = gethostbyname(www.example.com);Para pegar meta_tags de um siteget_meta_tags -- Extrai as informações das tag meta de um arquivo e retorna como umamatrizO que get_meta_tags() interpreta<meta name="author" content="name"><meta name="keywords" content="php documentation"><meta name="DESCRIPTION" content="a php manual"><meta name="geo.position" content="49.33;-86.59"></head>
  51. 51. // Assumindo que as tags acima estão em www.example.com$tags = get_meta_tags(http://www.example.com/);print $tags[author]; // nameprint $tags[keywords]; // php documentationprint $tags[description]; // a php manualprint $tags[geo_position]; // 49.33;-86.59Pegar o nome do navegador e a versão$_SERVER["HTTP_USER_AGENT"];no navegador Internet Explorer ficara assim:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)no navegador mozilla Firefox:Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox /0.10Em no Internet explorer ele mostra MSIE 6.0 e no Mozilla Firefox /0.10nome e versãoPegando O endereço da página da onde veio o visitanteecho $_SERVER["HTTP_REFERER"];O endereço da página (se houver) através da qual o agente do usuário acessou a página atual.Essa diretiva é informada pelo agente do usuário. Nem todos os browsers geram esse header,e alguns ainda possuem a habilidade de modificar o conteúdo do HTTP_REFERER comorecurso. Em poucas palavras, não é confiável.Para pegar a resolução do monitorusaremos javascript porque o php nao roda do lado do cliente e sim no servidor
  52. 52. <script language="javascript">document.write("Resolucao : ",screen.width,"x",screen.height,"<p>");</script>Para pegar o total de espaço em disco no servidor$kb = 1024; // Kilobyte$mb = 1024 * $kb; // Megabyte$gb = 1024 * $mb; // Gigabyte$tb = 1024 * $gb; // Terabyte$espaco_total = disk_total_space("/");$total_disco = round($espaco_total / 1024000, 2);$disco = diskfreespace("/");$espaco_livre = round($disco / 1024000, 2);Para pegar versões do PHP e Mysql e Apachemysql_get_server_info();phpversion();$_SERVER["SERVER_SOFTWARE"];Você pode formatar o resultado que melhor visualização exemplo:$versao_mysql = preg_replace("/[^0-9.]/", "", mysql_get_server_info());$versao_php = phpversion();$programa_servidor = $_SERVER["SERVER_SOFTWARE"];$programa_servidor = strtok($programa_servidor, " ");echo "Mysql $versao_mysql<br />";echo "PHP $versao_php<br />";echo str_replace("/", " ", $programa_servidor);strtok() divide uma string (arg1) em strings menores (tokens), com cada token sendodelimitado porqualquer caractere de arg2. Quer dizer que, se você tem uma string como "Esta é uma stringde exemplo" vocêpoderia "tokenizá-la" em suas palavras individuais usando o caractere de espaço como
  53. 53. delimitador do token.Para ver se o php esta sendo executado como modulo ou cgi:$sapi_type = php_sapi_name();if ($sapi_type == "cgi"){ print "Você esta usando CGI PHPn";}else{ print "Você não esta usando CGI PHPn";}Exibindo o status do mysql:$status = explode( , mysql_stat($cn));print_r($status);Dicas diversas sobre funções php para usar com MysqlPara pegar o nome e a senha de acesso ao MysqlCalma pessoal isso não tem nada haver com dicas hackers é apenas para mostrar para quemnão conhece queo mysql tem um banco dentro da pasta data chamado mysql onde ele guarda as informaçõesde usuarios, senhas, privilégios, helps, informações doservidor, etc...mysql_connect("localhost", "usuario", "senha");mysql_select_db("mysql");$re = mysql_query("SELECT user,password,host FROM user");//listando todos os usuarios e senhas de acesso ao mysql cadastradoswhile($l = mysql_fetch_array($re)){ echo $l["user"]."<br />"; echo $l["password"]."<br />";}
  54. 54. Listando todos os banco de dados do servidor mysql:mysql_connect("localhost", "usuario", "senha");$db_list = mysql_list_dbs();$cnt = mysql_num_rows($db_list);for($i = 0; $i < $cnt; $i++){ echo mysql_db_name($db_list, $i) . "<br />n";}outra maneira de listar os bancos:mysql_connect("localhost", "usuario", "senha");$db_list = mysql_list_dbs();while ($row = mysql_fetch_object($db_list)) { echo $row->Database . "<br />n";}Listando todas tabelas de um banco:mysql_connect("localhost", "usuario", "senha");$result = mysql_list_tables("banco");for ($i = 0; $i < mysql_num_rows($result); $i++){ echo "Tabelas: ". mysql_table_name($result, $i)."<br />";}Listando todos os campos de uma tabela:$cn = mysql_connect("localhost", "usuario", "senha");$fields = mysql_list_fields("banco", "tabela", $cn);$columns = mysql_num_fields($fields);for ($i = 0; $i < $columns; $i++) { echo mysql_field_name($fields, $i) . "<br />";}
  55. 55. Pegando toda informação de cada campo de uma tabelamysql_select_db("banco");$result = mysql_query("select * from tabela");$i = 0;while ($i < mysql_num_fields($result)) { echo "Informação para a coluna $i:<br />n"; $meta = mysql_fetch_field($result,$i); if (!$meta) { echo "Informação não disponivel<br />n"; } echo "<pre>blob: $meta->blobmax_length: $meta->max_lengthmultiple_key: $meta->multiple_keyname: $meta->namenot_null: $meta->not_nullnumeric: $meta->numericprimary_key: $meta->primary_keytable: $meta->tabletype: $meta->typeunique_key: $meta->unique_keyunsigned: $meta->unsignedzerofill: $meta->zerofill</pre>"; $i++;}$result = mysql_query("SELECT * FROM tabela");$fields = mysql_num_fields($result);$rows = mysql_num_rows($result);$table = mysql_field_table($result, 0);echo "A tabela ".$table." tem ".$fields." colunas e ".$rows." linhas(s)<br />";echo "A tabela tem esses campos:<br />";for ($i=0; $i < $fields; $i++) {$type = mysql_field_type($result, $i);$name = mysql_field_name($result, $i);$len = mysql_field_len($result, $i);$flags = mysql_field_flags($result, $i);echo $type." ".$name." ".$len." ".$flags."<br />";}mysql_free_result($result);mysql_close();
  56. 56. Pegando o conjunto de caracteres do mysqlmysql_client_encoding -- Retorna o nome do conjunto de caracteres$charset = mysql_client_encoding($cn);printf ("Conjunto atual de caracteres é %sn", $charset);uma dica importante use mysql_unbuffered_query() no lugar do mysql_query()quando for necessárioexemplo:mysql_connect("localhost", "Fabyo", "gisele");mysql_select_db("banco");$re = mysql_unbuffered_query("Select * from tabela");while($l = mysql_fetch_array($re)){echo $l["campo"];}mysql_unbuffered_query() envia uma query SQL para MySQL, sem retornar e colocar embuffer as linhas do resultado automaticamente, como mysql_query() faz. por um lado, istosalva uma quantidade considerável de memória em query que produzem um resultadograndes. por outro lado, você pode começãr a trabalhar com o resultado imediatamente apósa primeira linha ser retornada: você não tem que esperar que toda a query SQL seja realizada.Quando usar multiplas conexões com o banco de dados, você deve especificar o parametroopcional link_identifier.Nota: Os beneficios de mysql_unbuffered_query() vem com um custo: você não pode usarmysql_num_rows() e mysql_data_seek() no resultado retornado pormysql_unbuffered_query(). Você também tem que pegar todas as linhas de uma query SQLsem buffer antes de poder enviar uma nova query SQL para o MySQL.mysql_escape_string -- Escapa uma string para uso com o mysql_query.Esta função irá escapar o texto assim será seguro coloca-la na função mysql_query() evitandosql_injection
  57. 57. Dicas basicas sobre configuração do phpMyAdminOnde baixar phpMyAdminO que é phpMyAdmin?o phpMyAdmin é um script feito em php para gerenciar o banco de dados mysqlcom o phpMyAdmin você consegue criar banco de dados, criar tabelas,campose editar salvar e excluir , fazer consultas e otimizar e reparar o banco, importar e exporar obanco, etc...depois que você baixou o phpMyAdmin entre no config.inc.phpe ache essas linhas:$cfg[Servers][$i][user] = root; // MySQL user$cfg[Servers][$i][password] = ; // MySQL password (only neededmude para seu usario e senha do mysqlentre no php.ini e descomente essa linha:extension=php_mbstring.dllreinicie o apachese você quiser acessar o seu phpMyAdmin usando Autenticação HTTPvocê pode só entrar no config.inc.php e ache essa linha e mudar para http:$cfg[Servers][$i][auth_type] = http; // Authentication method (config, http orcookie based)?dai quando você for entrar no phpMyAdmin ele ira pedir nome e senhase for usar as funções novas do mysql o (mysqli) mude essa linha:$cfg[Servers][$i][extension] = mysqli; // The php MySQL extension to use (mysql ormysqli)se desejar que apareça apenas 1 banco para ser acessado pelo phpMyAdminmude essa linha:
  58. 58. $cfg[Servers][$i][only_db] = ; // If set to a db-name, onlye coloco o nome do banco que você querSQLStructured Query LanguageLinguagem Estruturada de ConsultaSQL não é uma linguagem para se desenvolver sistemas e sim para facilitar o acesso deinformações, por meios de consultas, atualizações e manipulações de dados armazenados embancos de dados do tipo relacional.um banco de dados do tipo relacional armazena os dados e informações em tabelas que sãoformadas por linhas e colunas.Atualmente os programas de gerenciamento de banco de dados (SGDB - Sistema deGerenciamento de Banco de Dados) utilizam o SQL para consultas e manuseio de dados, mascom pequenas diferenças entre cada SGBDem funções e melhorias mas o principal é a sintaxe SQL em todos eles como padrão.O SQL foi criado pela empresa IBM (Internacional Business Machine) sua primeira versão foicriada em 1974, com o nome de Structured English Query Language(SEQUEL).A Linguagem SQL é composta por dois grupos de instruções utilizadas no processode administração e controle de bancos de dados o DDL (Data Definition Language )Linguagem de Definição de Dados e DML (Data Manipulation Language) Linguagem deManipulação de Dados.As instruções do tipo DDl permite efetuar a criação das estruturas de tabelas, índices e bancosde dados como um todo, permite também efetuar auterações nas estruturas criadas, eremover estruturas.Nesse grupo estão as instruções:CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE INDEX e DROP INDEX.As instruções do tipo DML permitem efetuar a manipulação dos dados que estejamarmazenados nas tabelas de um determinado banco, dessa forma é possivel cadastrar, alterar,e excluir registros , nesse grupo se encontra:INSERT, SELECT, UPDATE e DELETE.De todos os comando existentes o comando SELECT é o mais importante e utilizado, pois écom ele que se obtém a extração de lista de informações.Os comando do tipo DML possuem uma grande variedades de aplicação.Para que isso ocorra, eles operam com um grande conjunto de cláusulasFROM, WHERE, GROUP BY, HAVING e ORDER BY predefinidos que permitem efetuar aaplicação de condições que autera a forma de funcionamento
  59. 59. Chave PrimariaO conceito de chave primária (ID) ou (PK) chave primaria em inglês ,está associado ao campoou conjunto de campos de uma tabela que possuirá um único valor, que não será repetido.Chave EstrangeiraChave Estrangeira (FK) caracteriza-se por ser uma chave de uma tabela que possui associaçãocom chave primária de outra tabela.Integridade referencial é um mecanismo utilizado que evita a quebra de ligação entre osrelacionamentos estabelecidos entre as tabelasapesar do mysql ainda nao ter esse recurso como padrão nós podemos montara integridade referencial atraves do php ,como voc^vai ver no script de cadastro defuncionarios no final do curso.Criando um banco no mysql:CREATE DATABASE bancoCriando a tabela:CREATE TABLE tabela(campo tipo NULL/NOT NULL DEFAULT valorAUTO_INCREMENT PRIMARY KEY);NULL e NOT NULL = é definição de um campo em aceitar ou não valores nulosDEFAULT valor = permite determinar um valor padrão para o campoAUTO_INCREMENT = determina se o campo será preenchido automaticamentevale apenas para campos que aceitam valores inteirosPRIMARY KEY = determina qual será a chave primária da tabelatipos de campos = o SQL trabalha com diversos tipos de dados mas com 3 grupos distintos(tiponuméricos, tipo temporal e tipo literal).tipos numericos podem ser utilizados no tratamento de valores numericos inteiros ou reais:SMALLINT = -32.768 até 32.767 pode ser usado um campo sem sinal (unsigned)aumentando o tamanho para 255 positivoINTEGER = -2.17.483.648 até 2.147.483.674 também pode usar unsignedFLOAT = 3,4* 10 -³ até 3,4 * 10 ³DECIMAL = Campo usado para guardar valores monetariosNUMERIC,DOUBLETipos temporal
  60. 60. O tipos temporal pode ser utilizado para o tratamento de valores relacionados a data e horaDATE = Utilizado para guardar data no padrão AAAA-MM-DDTIME = Utilizado para guardar horaDATETIME = Utilizado para guardar data e hora juntoTipo literalO tipo literal pode ser usado na recepção de valores baseados em cadeias de caracteres(strings) dados alfa numericosVARCHAR = caracter variavelCHAR = caracter fixoTEXT = para guardar textos grandesnão entrarei mais em detalhes sobre esse assunto porque está para extreiar o novo cursoonline de MYSQL então qualquer duvidas sobre esse assunto aguarde o cursoMontando um sistema de cadastro de funcionarioscriando uma tabela de funcionarios:<?mysql_query("CREATE TABLE funcionarios ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT , nome VARCHAR( 40 ) NOT NULL , endereco VARCHAR( 64 ) NOT NULL , rg VARCHAR( 10 ) NOT NULL , cpf CHAR( 11 ) NOT NULL , data_registro DATE NOT NULL , fk_cargo SMALLINT UNSIGNED NOT NULL , salario DECIMAL( 10, 2 ) NOT NULL , casado SET( S, N ) NOT NULL , dependentes SET( S, N ) NOT NULL , data_nasc DATE NOT NULL , PRIMARY KEY ( id ))");?>criando a tabela de cargos:<?mysql_query("CREATE TABLE cargos ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, cargo VARCHAR(40) NOT NULL, PRIMARY KEY (id)
  61. 61. )");?>no cadastro tem um combo preenchido com os dados de um banco de dados(cargos)cadastro.php:<html><head><title>Cadastro</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form name="form1" method="post" action="salvar.php"> <table width="200" border="0" align="center"> <tr> <td>Nome</td> <td><input name="nome" type="text" id="nome" maxlength="40"></td> </tr> <tr> <td>Endere&ccedil;o</td> <td><input name="endereco" type="text" id="endereco" maxlength="64"></td> </tr> <tr> <td>RG</td> <td><input name="rg" type="text" id="rg" maxlength="10"></td> </tr> <tr> <td>CPF</td> <td><input name="cpf" type="text" id="cpf" maxlength="11"></td> </tr> <tr> <td>Cargo</td> <td><select name="cargos" id="cargos"> <option value="Selecione">Selecione</option><? mysql_connect("localhost", "Fabyo","gisele"); mysql_select_db("banco"); $re = mysql_query("SELECT * FROM CARGOS"); while($l = mysql_fetch_array($re)) { $id = $l["id"];
  62. 62. $cargo = $l["cargo"]; echo "<option value="$id">$cargo</option>"; } ?> </select></td> </tr> <tr> <td>Salario</td> <td><input name="salario" type="text" id="salario"></td> </tr> <tr> <td>Casado(a)</td> <td><input name="casado" type="checkbox" id="casado" value="S"> Sim</td> </tr> <tr> <td>Dependentes</td> <td><input name="dependentes" type="checkbox" id="dependentes" value="S"> Sim</td> </tr> <tr> <td>Data Nasc. </td> <td><input name="data_nasci" type="text" id="data_nasci" size="10"maxlength="10"></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" name="Submit" value="Salvar"></td> </tr> </table></form></body></html>O salvar.php é onde será recebido os dados digitados pelo usuarioentão recomendo você proteger os dados e filtrar para passar somente o esperadoexemplo:usando stript_tags() você tira as tags html ,dai o usuario mal intencionado não poderáprejudicar seu banco de dados com comandos html e javascriptis_numeric() = use para validar campos numericosempty() use para validar campos vazioscheckdate() use para validar datasmysql_escape_string Escapa uma string para uso com o mysql_query.
  63. 63. e proteja os dados tambem com javascript muito util para validar campos antes de enviarprocure por funções que validam cpf, cnpj, emails etc... ou faça você mesmoevite gravar dados repetidos antes de gravar faça uma busca se nao existir o dados dai simvocê deixa gravar , e sobre integridade relacional é quando você por exemplo grava umfuncionario com cargo "ajudante" ,dai depois você quer excluir o cargo "ajudante" da tabelacargos, por logica não poderia ja que esse campo foi gravado como indicação para ofuncionario dai nao teria logica ele ser "ajudante" se o campo não existe mais ,e como o mysqlnão tem esse recurso automatico você pode montar um é simples basta antes de executar aexclusão você fazer uma pesquisa se esse campos esta gravado em algum lugar da tabelafuncionarios dai se não tiver você deixa excluir se tiver você da uma mensagem dizendo queesse campos não pode ser excluido pois existe um relacionamento com ele.dica final = nunca esqueça de validar os campos nem sempre a pessoa vai digitar o que vocêespera que ela digite.salvar.php:<?// seto as variaveis = N pq se o checbox nao for marcado ele nao existira//entao sera gravado a opcao N = NAO, se o checbox for marcado será salvo S$casado = "N";$dependentes = "N";//aqui pego todos os dados e aina crio a variavel com o mesmo nome e tiro as tags htmlforeach ($_POST as $campo => $valor) { $$campo = strip_tags($valor);}mysql_connect("localhost");mysql_select_db("banco");mysql_query("INSERT INTO funcionarios VALUES (, $nome, $endereco, $rg, $cpf, NOW(),$cargos, $salario, $casado, $dependentes, $data_nasci)");mysql_close();echo "salvo com sucesso";?>opcoes você pode listar os funcionarios junto com as opções de editar e excluir usando o idopcoes.php
  64. 64. <? mysql_connect("localhost"); mysql_select_db("banco"); $re = mysql_query("SELECT * FROM funcionarios"); while($l = mysql_fetch_array($re)) { $id = $l["id"]; $nome = $l["nome"]; echo "<a href="excluir.php?id=$id">Excluir</a> | <a href="editar.php?id=$id">Editar</a>$nome<br />"; }?>excluir.php<? mysql_connect("localhost"); mysql_select_db("banco"); $id = $_GET["id"]; mysql_query("DELETE FROM funcionarios WHERE id= $id"); header("Location: opcao.php");?>Agora pra quem quiser acabar esse sistema de cadastro de funcionários fica como parte dosexercicios, no modulo passado eu dei um sistema completo com editar excluir e salvar casotenham duvidas só pesquisar nelemas quem está acompanhando consegue ver que está ficando facil e não é dificil acabar essesistema falta só o editar, listar ,criar um formulario pra salvar os cargos, e se quiser ainda podeusar as dicas que eu dei acima e proteger o sistema contra exclusão de dados relacionados evalida os camposquem quiser fazer e entregar ele será avaliado e corrigidosó avisando pra quem não sabe o melhor usuario que esti er acompanhando as aulas eparticipando dos exercicios ganhará um prêmio surpresa e seu nome ficara numa lista dos queconcluiram o curso com sucesso, ficando até como referencia para vocês caso precisemmostrar para algum cliente ou até seu futuro chefe o seu conhecimento em php.

×