apostila_php_intermediario

Upload: augustomakar

Post on 09-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 apostila_php_intermediario

    1/63

  • 8/7/2019 apostila_php_intermediario

    2/63

    Licenciamento de Uso

    Este documento propriedade intelectual 2002 do Centro de Computao da Unicamp edistribudo sob os seguintes termos:

    1. As apostilas publicadas pelo Centro de Computao da Unicamp podem ser reproduzidase distribudas no todo ou em parte, em qualquer meio fsico ou eletrnico, desde que ostermos desta licena sejam obedecidos, e que esta licena ou referncia a ela seja exibidana reproduo.

    2. Qualquer publicao na forma impressa deve obrigatoriamente citar, nas pginas externas,sua origem e atribuies de direito autoral (o Centro de Computao da Unicamp e seu(s)autor(es)).

    3. Todas as tradues e trabalhos derivados ou agregados incorporando qualquer informaocontida neste documento devem ser regidas por estas mesmas normas de distribuio edireitos autorais. Ou seja, no permitido produzir um trabalho derivado desta obra eimpor restries sua distribuio. O Centro de Computao da Unicamp deveobrigatoriamente ser notificado ([email protected]) de tais trabalhos comvista ao aperfeioamento e incorporao de melhorias aos originais.

    Adicionalmente, devem ser observadas as seguintes restries: A verso modificada deve ser identificada como tal

    O responsvel pelas modificaes deve ser identificado e as modificaes datadas Reconhecimento da fonte original do documento A localizao do documento original deve ser citada Verses modificadas no contam com o endosso dos autores originais a menos que

    autorizao para tal seja fornecida por escrito.

    A licena de uso e redistribuio deste material oferecida sem nenhuma garantia de qualquer tipo, expressa ou implcita, quanto a sua adequao a qualquer finalidade. O Centro deComputao da Unicamp no assume qualquer responsabilidade sobre o uso das informaescontidas neste material.

  • 8/7/2019 apostila_php_intermediario

    3/63

    PHP Intermedirio

    Sumrio

    O que PHP?.........................................................................................................................5Histria...................................................................................................................................5Vantagens...............................................................................................................................5Sintaxe Bsica........................................................................................................................ 6

    Variveis.............................................................................................................................6 Inteiros...........................................................................................................................6 Ponto-Flutuante.............................................................................................................7 Strings............................................................................................................................7 Caracteres de Escape....................................................................................................7

    Arrays............................................................................................................................ 7 Listas............................................................................................................................. 8 Booleans........................................................................................................................ 8

    Transformaes de tipo...................................................................................................... 8

    Coeres........................................................................................................................8Transformaes explcitas de tipo.................................................................................9Tipo suportados nas transformaes explcitas............................................................ 9Funo settype...............................................................................................................9

    Operadores..........................................................................................................................9 Aritmticos.....................................................................................................................9Strings..........................................................................................................................10

    Atribuio....................................................................................................................10 Lgicos........................................................................................................................ 10Comparao................................................................................................................ 10

    Incremento e decremento............................................................................................ 10

    Estruturas de controle....................................................................................................... 11 If e Else........................................................................................................................11Switch.......................................................................................................................... 12While............................................................................................................................13

    Do..while..................................................................................................................... 13For............................................................................................................................... 13

    Break........................................................................................................................... 14Continue...................................................................................................................... 14

    Sada: echo().....................................................................................................................14Sada: print().....................................................................................................................15Funes.............................................................................................................................15

    Passagem de parmetros por referncia.....................................................................16 Escopo das variveis.........................................................................................................16Globais........................................................................................................................ 17

    Locais.......................................................................................................................... 17 Estticas...................................................................................................................... 17

    Sesses.................................................................................................................................. 19Superglobal $_SESSION..................................................................................................19

    Upload de Arquivos.............................................................................................................21

    Diviso de Servios Comunidade Centro de Computao Unicamp 3

  • 8/7/2019 apostila_php_intermediario

    4/63

    PHP Intermedirio

    A varivel $_FILES..........................................................................................................21A funo move_uploaded_file().......................................................................................22

    Manipulao de Data e Hora............................................................................................. 24Funes.............................................................................................................................24

    mktime().......................................................................................................................24

    strftime()...................................................................................................................... 24date()........................................................................................................................... 25checkdate().................................................................................................................. 26 getdate().......................................................................................................................27

    Enviando e-mails................................................................................................................. 28Projeto.................................................................................................................................. 29

    Base de dados e tabelas.................................................................................................... 29chamados.....................................................................................................................29atendimentos................................................................................................................29usuarios....................................................................................................................... 29

    Funes utilizadas no sistema.......................................................................................... 30 funcoes.php..................................................................................................................30

    Pagina inicial/autenticao do sistema............................................................................. 32misc.php.......................................................................................................................32

    Index.php..................................................................................................................... 32Os scripts autentica_src.php e a homepage do sistema.................................................... 34

    autentica_src.php........................................................................................................ 34 pagina_principal.php.................................................................................................. 35

    Mdulo de incluso de chamados.....................................................................................36 form_chamado.php......................................................................................................36 incluir_chamado.php...................................................................................................38exibe_mensagem.php...................................................................................................40Testando o mdulo de incluso de chamados............................................................. 42

    Mdulo de registro de atendimentos................................................................................ 43 form_atendimento.php.................................................................................................43registrar_atendimento.php.......................................................................................... 44registrar_atendimento2.php........................................................................................ 46 registrar_atendimento3.php........................................................................................ 50exibe_mensagem.php...................................................................................................52Testando o mdulo de registro de atendimentos......................................................... 52

    Mdulo de consulta.......................................................................................................... 52consulta_chamados_periodo.php................................................................................52consulta_chamados_periodo2.php..............................................................................54Testando o mdulo de consulta................................................................................... 59

    Expirao de sesso..........................................................................................................59logout.php....................................................................................................................59

    Referncia Bibliogrfica..................................................................................................... 59Onde obter ajuda.................................................................................................................60

    ltima atualizao em 25/03/2008

    Diviso de Servios Comunidade Centro de Computao Unicamp 4

  • 8/7/2019 apostila_php_intermediario

    5/63

    PHP Intermedirio

    O que PHP?

    A abreviao PHP vem de Hypertext PreProcessor, que uma linguagem deprogramao de cdigo aberto muito utilizada para a criao de scripts que soexecutados no servidor web para a manipulao de pginas HTML.

    Histria

    O PHP foi criado por volta de 1994 por Rasmus Lerdorf, que inicialmente utilizava-o emsua home page pessoal (Personal Home Page). Em meados de 1995 ele passou a ser utilizado por outras pessoas e foi reescrito com novos recursos, sendo renomeado paraPersonal Home Page Tools/FI (Form Interpreter), e entre os novos recursos, passou acontar com suporte ao MySQL. Dois anos mais tarde o PHP deixou de ser um projetopessoal de Rasmus Lerdorf e passou a ser desenvolvido por uma equipe decolaboradores, e neste perodo, foi lanada a verso 3 da linguagem. A partir da verso 4o PHP passou a utilizar a engine de scripting da Zend, para melhorar a performance esuportar uma variedade maior de bibliotecas externas e extenses. At Maro de 2008, oPHP estava sendo utilizado em aproximadamente 21.000.000 de domnios (Pode-seacompanhar esta estatstica em http://www.php.net/usage.php). A ltima verso estvelda linguagem a 5.2.5.

    Vantagens

    O PHP tem inmeras vantagens, como veremos a seguir:

    uma linguagem de fcil aprendizado; Tem performance e estabilidade excelentes; Seu cdigo aberto, no preciso pagar por sua utilizao, e possvel alter-lo

    na medida da necessidade de cada usurio; Tem suporte nos principais servidores web do mercado, principalmente no servidor

    web Apache (o mais utilizado no mundo); Suporta conexo com os bancos de dados mais utilizados do mercado, como por

    exemplo, MySQL, PostgreSQL, Oracle e DB2; multiplataforma, tem suporte nos sistemas operacionais mais utilizados no

    mercado; Suporta uma variedade grande de padres e protocolos, como o XML, DOM,

    IMAP, POP3, LDAP, HTTP, entre outros; No precisa ser compilado.

    Diviso de Servios Comunidade Centro de Computao Unicamp 5

    http://www.php.net/usage.phphttp://www.php.net/usage.php
  • 8/7/2019 apostila_php_intermediario

    6/63

  • 8/7/2019 apostila_php_intermediario

    7/63

    PHP Intermedirio

    $curso = -1000;$curso = 0234; // inteiro base octal$curso = 0x34; // inteiro na base hexadecimal

    Ponto-Flutuante

    Sintaxe:

    $curso = 1.050;$curso = 52e3; // equivale a 52000)

    Strings

    Sintaxe:

    $curso = 'PHP';

    // desta maneira, o valor da varivel ser exatamente o textocontido entre as aspas

    $curso= PHP;

    // desta maneira, qualquer varivel ou caracter de escapeser expandido antes de ser atribudo

    Caracteres de Escape

    \n nova linha;\r retorno de carro (semelhante a \n)\t tabulao horizontal\\ a prpria barra (\)\$ o smbolo $\ aspas simples\ aspas duplas

    Arrays

    Array um tipo de varivel que possui seu contedo agrupado por ndices, como umvetor ou um dicionrio. Estes ndices podem ser de qualquer tipo suportado pelo PHP,com mostrado a seguir:Sintaxe:

    $estilo_musical[0] = 'pagode';$estilo_musical[1] = drum 'n' bass;$estilo_musical[MPB] = 'Gilberto Gil';$estilo_musical[Rock] = 'Blind Guardian';

    Diviso de Servios Comunidade Centro de Computao Unicamp 7

  • 8/7/2019 apostila_php_intermediario

    8/63

    PHP Intermedirio

    Listas

    Utilizadas em PHP para realizar atribuies mltiplas, como por exemplo, atribuir valores de um array para variveis, como mostra a seguir:Sintaxe:

    list($a,$b,$c) = array(0=>a, 1=>b, 2=>c);

    O trecho de cdigo acima atribuir simultnea e respectivamente os valores do array svariveis passadas com parmetros para o comando list . muito importante lembrar ques sero passadas ao comando list os elementos do array que possurem os ndices comvalores inteiros e no negativos.

    Booleans

    Em PHP, no existe um tipo especfico para as variveis do tipo boolean , ele trata estetipo com valores inteiros:0 (zero) para false e valores diferentes deste como true.

    Transformaes de tipo

    possvel fazer transformaes de tipos de variveis atravs das seguintes formas:

    Coeres

    Quando ocorrem determinadas operaes matemticas entre dois valores de tiposdiferentes, como por exemplo a adio, o PHP converte um deles automaticamente.

    Um exemplo disso seria a converso de uma string para um valor numrico (inteiro ouponto flutuante), que segue as seguintes regras: analisado o nicio da string, se contiver um nmero, ele seranalisado, caso contrrio, o valor ser 0 (zero);O nmero pode conter o sinal no incio (+ ou -);Se a string contiver um ponto em sua parte numrica a ser analisada,ele ser considerado, e o valor obtido ser um ponto flutuante;Se a string contiver as letras ''e'' ou ''E'' em sua parte numrica a ser analisada, o valor seguinte ser considerado como expoente da base10, e o valor obtido ser um ponto flutuante.

    Sintaxe:$curso = 1 + 12.8; // $curso == 13.8$curso = 1 + 15; // $curso == 16$curso = 1 + 1.5e3; // $curso == 1501$curso = 1 + 10curso; // $curso == 11$curso = 1 + 10curso; // $curso == 11$curso = 1 + +A10testes; // $curso == 1

    Diviso de Servios Comunidade Centro de Computao Unicamp 8

  • 8/7/2019 apostila_php_intermediario

    9/63

    PHP Intermedirio

    Transformaes explcitas de tipo

    Desta forma precisaremos utilizar a sintaxe de typecast do PHP, como os exemplos aseguir:Sintaxe:

    $curso = 20; // integer(20)$curso = (double)$curso; // double(20.0)$curso = 3.9; // double(3.9)$curso = (int)$curso; //o valor truncado e fica como integer(3)

    Tipo suportados nas transformaes explcitas

    Sintaxe:

    (int), (integer) = muda para inteiro;(real), (double), (float) = muda para ponto flutuante;(string) = muda para string(array) = muda para array(object) = muda para objeto

    Funo settype

    Trabalha igualmente as transformaes explcitas, porm com sintaxe diferente, como oexemplo a seguir:

    Sintaxe:

    $curso = 20; // (integer)settype($curso, double);

    O valor da varivel $curso foi transformada em ponto flutuante.

    Operadores

    Aritmticos

    + Adio

    - Subtrao* Multiplicao/ Diviso

    % Mdulo

    Diviso de Servios Comunidade Centro de Computao Unicamp 9

  • 8/7/2019 apostila_php_intermediario

    10/63

    PHP Intermedirio

    Strings

    . Concatenao

    Atribuio

    = Atribuio simples+= Atribuio com adio-= Atribuio com subtrao*= Atribuio com Multiplicao/= Atribuio com diviso

    %= Atribuio com mdulo.= Atribuio com concatenao

    Sintaxe:$curso = 7;$curso += 2; // $curso fica com o valor 9)

    Lgicos

    and e lgicoor ou lgicoxor ou exclusivo

    ! No (inverso)&& e lgico|| ou lgico

    Comparao

    == igual a!= diferente de< menor que> maior que

    = maior ou igual a

    Incremento e decremento

    ++ incremento-- decremento

    Estes podem receber o valor antes ou depois da varivel:

    Diviso de Servios Comunidade Centro de Computao Unicamp 10

  • 8/7/2019 apostila_php_intermediario

    11/63

    PHP Intermedirio

    Antes: retorna o valor da varivel antes de increment-la ou decrement-la:Sintaxe:

    $a = 1;$b = ++$a; // $b recebe 2, valor de $a j incrementado)

    Depois: retorna o valor da varivel j incrementada ou decrementada:Sintaxe:

    $a = 1;$b = $a++; // $b recebe 1 e $a passa a ter 2)

    Estruturas de controle

    If e Else

    O comando if testa a condio passada e executa o bloco de cdigo caso o valor retornado da condio seja verdadeiro:Sintaxe:

    $a = 1;

    if ($a == 1){.........}

    Caso a condio passada retorne um valor falso, e seja necessrio executar um blocode cdigo diferente, utiliza-se a instruoelse :Sintaxe:

    $a = 1;$b = 2;

    if ($a > $b) {...

    ...} else {

    ...

    ...}

    Ainda existe a instruo elseif , para situaes onde precisa-se verificar mais que umacondio:Sintaxe:

    Diviso de Servios Comunidade Centro de Computao Unicamp 11

  • 8/7/2019 apostila_php_intermediario

    12/63

    PHP Intermedirio

    $a = 1;$b = 2;$c = 3;

    if ($a > $b) {echo $a maior que $b ;

    } elseif ($a > $c) {echo $a maior que $c ;

    } else {echo $a menor que $b e $c ;

    }

    Switch

    Comando utilizado para fazer mltiplos testes de condio. A idia deste comando igual ao do elseif , porm com algumas diferenas:

    Sintaxe:$a = 1;

    switch ($a) {case 0:

    echo $a igual a 0 ;break;

    case 1:echo $a igual a 1 ;break;

    case 2:echo $a igual a 2 ;break;default:echo \$a igual a $a ;

    }

    A idia do comandoswitch achar a condio verdadeira e executar qualquer bloco decdigo que esteja abaixo dela, inclusive os que no forem do seu trecho, por esse motivo,utilizamos o comando break logo abaixo da ltima linha do bloco de cdigo, como oexemplo anterior. O comando switch tambm aceita testes de condio em qualquer tipode varivel suportado pelo PHP:Sintaxe:

    $a = curso ;

    switch ($a) {case PHP:

    echo $a igual a PHP ;break;

    case curso :echo $a igual a Curso ;

    Diviso de Servios Comunidade Centro de Computao Unicamp 12

  • 8/7/2019 apostila_php_intermediario

    13/63

    PHP Intermedirio

    break;case CCUEC:

    echo \$a igual a CCUEC ;break;

    }

    While

    Este comando utilizado para realizar laos condicionais. Ele executa o bloco decdigo enquanto a condio passada for verdadeira, e caso a condio inicial que foipassada se torne falsa, o bloco no ser executado:Sintaxe:

    $a = 1;

    while ($a

  • 8/7/2019 apostila_php_intermediario

    14/63

    PHP Intermedirio

    Break

    O comando break pode ser utilizado em comandos de laos condicionais e nocomando switch , e sua funo parar imediatamente a execuo do lao condicional,prosseguindo normalmente com a execuo do script:

    Sintaxe:$a = 20;

    while ($a > 0) {if ($a == 3) {

    echo Nmero invlido!;break;

    }echo Nmero .$a.
    ;$a--;

    }

    Continue

    O comando continue tambm funciona dentro dos laos condicionais, porm, no parao fluxo do bloco de cdigo, e sim, volta para o incio dele:Sintaxe:

    for ($a=0;$a

  • 8/7/2019 apostila_php_intermediario

    15/63

    PHP Intermedirio

    Tambm existe uma construo abreviada do echo que possibilita alternar entre PHP eHTML rapidamente.Sintaxe:

    Aqui HTML

    Essa forma mais utilizada em formulrios.

    Sada: print()

    A funo print bem semelhante a echo , com duas diferenas: print aceita apenas 1argumento e alm da impresso no navegador, print retorna 1 em caso de sucesso e 0em caso de falha na tentativa de impresso.Exemplos:

    Print Funciona igual a funo echo. ;Print (Tambm pode-se usar parnteses.) ;Print (Tambm pode-se usar aspas simples.) ;

    Funes

    Funes so pequenas sees independentes de cdigo que podem ser chamadas aqualquer momento e em qualquer ordem, que servem para desempenhar tarefasespecficas dentro dos scripts.Sintaxe:

    function soma ($a,$b) {$c = $a + $b;return $c;

    }

    echo "A funcao soma() retornou ==> ".soma(5,10);

    A instruo return opcional, j que no obrigatrio retornar algum valor em funesno PHP, outra regra a de no permitir que sejam retornados mltiplos valores atravsdesta instruo. Para resolver essa necessidade, pode-se retornar listas e arrays.Sintaxe:

    function soma ($a, $b) {$c = $a + $b;$d = $c - 5;return array($c,$b,$d)

    }

    Diviso de Servios Comunidade Centro de Computao Unicamp 15

  • 8/7/2019 apostila_php_intermediario

    16/63

    PHP Intermedirio

    Passagem de parmetros por referncia

    Normalmente, a passagem de parmetros em PHP feita atravs dos valores dasvariveis, no permitindo assim, a alterao do valor na varivel original.Sintaxe:

    function contador($a) {++$a;

    }

    $cont = 10;contador($cont);

    echo "A variavel $cont contem ==> ".$cont;

    No exemplo acima, a varivel original permanecer com o mesmo valor porque no foidefinida a passagem de parmetros por referncia, o que alteraria tambm o valor davarivel original. Uma das maneiras de se utilizar esse recurso colocar o carcter ''&''antes do nome da varivel na declarao da funo.Sintaxe:

    function contador( &$a) {++$a;

    }

    $cont = 10;contador($cont);

    echo "A variavel $cont contem ==> ".$cont;

    Poderamos tambm utilizar a passagem de parmetros por referncia apenas quandofssemos chamar a funo, e no em sua declarao.Sintaxe:

    contador( &$cont);echo $cont;

    Escopo das variveis

    Discutimos anteriormente sobre variveis e os tipos suportados pelo PHP. Agora,discutiremos sobre os escopos destas variveis, que podem ser dos seguintes tipos:

    Globais; Locais; Estticas; Constantes.

    Diviso de Servios Comunidade Centro de Computao Unicamp 16

  • 8/7/2019 apostila_php_intermediario

    17/63

    PHP Intermedirio

    Globais

    As variveis globais so por definio, as variveis que podem ser acessadas dentro detodo o script. Porm, quando cria-se escopos locais como nas funes, precisaremosutilizar um tipo de chamada especial, utilizando oglobal.

    Sintaxe:$curso = 'PHP';

    function mostra() {global $curso;echo $curso;

    }

    mostra();

    O mesmo recurso pode ser acessado atravs da array GLOBALS , que nos permiteacessar todas as variveis globais do script. O exemplo acima pode ser reescrito daseguinte maneira:Sintaxe:

    $curso = 'PHP';

    function mostra() {echo $GLOBALS[ curso ] ;

    }

    mostra();

    LocaisAs variveis locais so o tipo mais restrito dentro do PHP. Elas funcionam apenas

    dentro do escopo onde foram definidas.Sintaxe:

    function mostra() {$var_local = 'varivel local';echo Var_local= $var_local;

    }

    echo Var_local= $var_local;

    Estticas

    As variveis estticas so variveis que possuem o mesmo tempo de vida das variveisglobais, com a diferena de funcionarem apenas em escopos locais e serem inicializadasuma s vez.Sintaxe:

    Diviso de Servios Comunidade Centro de Computao Unicamp 17

  • 8/7/2019 apostila_php_intermediario

    18/63

    PHP Intermedirio

    function contador() {static $i = 0;echo $i++.
    ;

    }

    for ($a=0; $a

  • 8/7/2019 apostila_php_intermediario

    19/63

    PHP Intermedirio

    Sesses

    Este recurso, que foi implementado na verso 4 do PHP, muito til para quemtrabalha com scripts que necessitam passar dados em acessos subseqentes para outrosscripts. Sesses tambm so utilizadas para:

    Customizao de elementos de uma pgina, como cores, fontes, textos, etc; Gerenciamento de autenticao em sistemas para a web; Armazenamento de informaes sigilosas dentro do servidor, evitando a

    passagem destas informaes por meio de campos do tipo hidden do HTML oucookies, aumentando assim a segurana destes dados.

    Esse recurso j vem habilitado na instalao padro do PHP, no havendo anecessidade de nenhuma configurao adicional, e antes de inicializar uma sesso,devemos lembrar das seguintes regras bsicas de utilizao:

    Nenhum contedo deve ser exibido antes de inicializar uma sesso; Em todas as pginas que forem utilizar este recurso, a sesso deve ser

    inicializada;Para inicializar uma sesso, basta executar o seguinte comando:

    Sintaxe:

    Quando esta pgina for carregada, a sesso ser inicializada e a ID da sesso ficargravada em um cookie chamado PHPSESSID dentro do navegador. Esta sesso ser

    vlida enquanto o navegador estiver aberto ou enquanto a funo session_destroy() nofor executada.Para visualizarmos a ID da sesso corrente, utilizamos a funo session_id().Sintaxe:

    Superglobal $_SESSION

    Adicionar valores em uma sesso uma tarefa muito simples, e para isso, utilizaremosa superglobal $_SESSION.Sintaxe:

    Diviso de Servios Comunidade Centro de Computao Unicamp 19

  • 8/7/2019 apostila_php_intermediario

    20/63

    PHP Intermedirio

    OBS: Em verses anteriores ao PHP 4.2.x, ou se a flag register_globals estiver habilitada (desabilitada por padro), necessrio adicionar variveis em verses atravsda funo session_register(), mas por questes de segurana, indicado permanecer com a configurao padro, que utiliza a superglobal $_SESSION.

    Atribuir os valores de uma sesso para variveis globais ou locais tambm uma tarefasimples:Sintaxe:

    Os ltimos dois recursos que sero apresentados para manipular sesses so:session_unset() - Limpa todas as variveis da sesso corrente.session_destroy() - Finaliza a sesso corrente.Utiliza-se estas duas funes no final do uso da sesso, que conseqentemente expira

    o cookie PHPSESSID no navegador, finalizando a sesso corrente. O cdigo PHP paraeste fim apresentado no exemplo abaixo.Sintaxe:

    Diviso de Servios Comunidade Centro de Computao Unicamp 20

  • 8/7/2019 apostila_php_intermediario

    21/63

    PHP Intermedirio

    Upload de Arquivos

    O PHP capaz de receber o upload de qualquer navegador que siga a norma RFC-1867. Isto permite que se faa upload de arquivos de texto de binrios.

    Com as funes de autenticao e manipulao de arquivos do PHP, voc tem ocontrole completo de quem pode fazer o upload de arquivo e o que fazer com o arquivoaps seu upload. Abaixo, um exemplo de um formulrio HTML para realizar esta tarefa.Sintaxe (teste_upload.html):

    Upload de Arquivos

    Arquivo:

    O atributo enctype da tag o mais importante para a realizao de um upload,

    sem ele, este recurso no ir funcionar. O campo do tipo file, MAX_FILE_SIZE, indica aonavegador o tamanho mximo do arquivo a ser enviado. Agora veremos mais sobre comoo PHP processa o upload de arquivo dentro do servidor.

    A varivel $_FILES

    Este array nos fornece as informaes sobre o arquivo que o navegador enviou aoservidor. Abaixo, a lista dos valores que este array nos disponibiliza.

    $_FILES['arquivo']['name'] o nome original do arquivo no computador do usurio.

    $_FILES['arquivo']['type'] o MIME type do arquivo, se o navegador deu estainformao: ex. image/gif

    $_FILES['arquivo']['size'] o tamanho em bytes do arquivo

    $_FILES['arquivo']['tmp_name'] o nome temporrio do arquivo, como foi guardado noservidor.

    $_FILES['arquivo']['error'] o cdigo de erro associado a este upload de arquivo.

    Diviso de Servios Comunidade Centro de Computao Unicamp 21

  • 8/7/2019 apostila_php_intermediario

    22/63

    PHP Intermedirio

    Adicionado no PHP 4.2.0

    Os cdigos de erro que o item $_FILES['arquivo']['error'] pode retornar so:

    UPLOAD_ERR_OK 0 no ouve erro, o upload foi bem sucedido

    UPLAOD_ERR_INI_SIZE 1 O arquivo no upload maior do que o limite definido emupload_max_filesize no php.ini

    UPLOAD_ERR_FORM_SIZE 2 O arquivo ultrapassa o limite de MAX_FILE_SIZE que foi especificado no formulrio HTML

    UPLOAD_ERR_PARTIAL 3 O upload do arquivo foi feito parcialmente

    UPLOAD_ERR_NO_FILE 4 No foi feito upload do arquivo

    A funo move_uploaded_file()

    Quando realizado um upload de arquivo para o servidor web, este arquivo fica em umdiretrio temporrio, normalmente em /tmp (podemos alterar este diretrio no php.ini), ecaso no seja inicializada nenhuma ao para manipular este arquivo, ele ser apagadodeste diretrio ao fim da execuo do script. Para esta tarefa, o PHP disponibiliza afuno move_uploaded_file . Esta funo responsvel por mover um arquivo carregadopelo mecanismo do PHP de HTTP POST para uma nova localizao.Sintaxe:

    move_uploaded_file(string nome do arquivo, string destino);

    OBS: O diretrio de destino deve ter permisso de escrita para o PHP.

    A seguir, um exemplo de um script PHP que receber os dados do mtodo POST pararealizar o upload:

    Sintaxe (teste_upload.php):

    Diviso de Servios Comunidade Centro de Computao Unicamp 22

  • 8/7/2019 apostila_php_intermediario

    23/63

    PHP Intermedirio

  • 8/7/2019 apostila_php_intermediario

    24/63

    PHP Intermedirio

    Manipulao de Data e Hora

    Neste captulo iremos mostrar algumas funes interessantes que o PHP nosdisponibiliza para manipulao de data e hora. As mais utilizadas e importantes so asseguintes:

    mktime() strftime() date() checkdate() getdate()

    Funes

    mktime()

    Retorna uma data com o formato Unix/timestamp. Esse formato baseado em umcontador que teve seu valor zero associado com a data 01/01/1970 00:00:00UTC, e que incrementado a cada segundo. Uma vez representadas no formato UNIX timestamp asdatas se tornam um pouco complicadas para o raciocnio humano mas so manipuladasmais facilmente pelos computadores.Exemplo:01/01/1970 00:00:00 UTC -> 001/01/1970 00:01:00 UTC -> 6001/01/1999 00:00:01 UTC -> 915 148 801

    16/09/2004 23:59:58 UTC -> 1 095 379 198Sintaxe:

    mktime(int hora, int minuto, int segundo, int ms, int dia, intano);

    O valor de retorno precisa passar por uma formatao para poder ser apresentado,para isso, usamos a funo strftime().

    strftime()

    Formata uma data do tipo Unix/timestamp para uma string de apresentaoSintaxe:

    strftime( string formatao , int timestamp );

    Diviso de Servios Comunidade Centro de Computao Unicamp 24

  • 8/7/2019 apostila_php_intermediario

    25/63

    PHP Intermedirio

    Exemplo:

    $data = mktime(10,20,30,10,20,2007);echo $data;echo strftime("
    %d/%m/%Y - %H:%M:%S", $data);

    Sada:

    1192886430 (formato Unix/timestamp)20/10/2007 - 10:20:30

    Uma lista das principais opes para esta funo encontra-se na listagem abaixo:

    %d dia do ms (01 a 31)

    %m ms (01 a 12)

    %y ano com 2 dgitos (ex. 80, 03)%Y ano com 4 dgitos (ex. 1980, 2003)

    %H hora atual no formato 24 horas (00 a 23)

    %I hora atual no formato 12 horas (01 a 12)

    %M minuto atual (00 a 59)

    %S segundo atual (00 a 59)

    %Rhora no formato 24 horas (22:45)

    %x data sem mostrar a hora do formato Unix/timestamp (ex. 21/12/2003)

    %X horrio sem mostrar a data do formato Unix/timestamp (ex. 19:33)

    date()

    Retorna uma data formatada como uma string ou inteiro de acordo com as opespassadas como parmetro.

    Veja as opes de formatao abaixo.

    Diviso de Servios Comunidade Centro de Computao Unicamp 25

  • 8/7/2019 apostila_php_intermediario

    26/63

    PHP Intermedirio

    Caracterede format Descrio

    Exemplo devalores

    retornados

    Dia --- ---

    d Dia do ms, 2 digitos com preenchimentode zero

    01 at 31

    D Uma representao textual de um dia, trsletras

    Mon at Sun

    j Dia do ms sem preenchimento de zero 1 at 31

    l ('L'minsculo)

    A representao textual completa do diada semana

    Sunday atSaturday

    N Representao numrica ISO-8601 do dia dasemana (adicionado no PHP 5.1.0)

    1 (para Segunda)at 7 (paraDomingo)

    S Sufixo ordinal ingls para o dia do ms,2 caracteres

    st , nd , rd ou th .Funciona bem comj

    w Representao numrica do dia da semana0 (para domingo)at 6 (parasbado)

    z O dia do ano (comeando do 0) 0 through 365

    Semana --- ---

    W Nmero do ano da semana ISO-8601, semanascomeam na Segunda (adicionado no PHP4.1.0)

    Exemplo: 42 (the42nd week in theyear)

    Ms --- ---

    F Um representao completa de um ms, comoJanuary ou MarchJanuary atDecember

    m Representao numrica de um ms, comleading zeros

    01 a 12

    M Uma representao textual curta de um Jan a Dec

    Diviso de Servios Comunidade Centro de Computao Unicamp 26

  • 8/7/2019 apostila_php_intermediario

    27/63

    PHP Intermedirio

    Caracterede format Descrio

    Exemplo devalores

    retornados

    Dia --- ---

    ms, trs letras

    n Representao numrica de um ms, semleading zeros

    1 a 12

    t Nmero de dias de um dado ms 28 through 31

    Ano --- ---

    L Se est em um ano bissexto

    1 se est em anobissexto, 0 casocontrrio.

    o

    Nmero do ano ISO-8601. Este tem o mesmovalor como Y , exceto que se o nmero dasemana ISO ( W ) pertence ao anterior ouprximo ano, o ano usado ao invs.(adicionado no PHP 5.1.0)

    Exemplos: 1999 ou2003

    Y Uma representao de ano completa, 4dgitos

    Exemplos: 1999 ou2003

    y Uma representao do ano com dois dgitos Exemplos: 99 ou03

    Tempo --- ---

    a Antes/Depois de meio-dia em minsculo am or pm

    A Antes/Depois de meio-dia em maisculo AM or PM

    B Swatch Internet time 000 at 999

    g Formato 12-horas de uma hora sempreenchimento de zero

    1 at 12

    G Formato 24-horas de uma hora sempreenchimento de zero

    0 at 23

    h Formato 12-horas de uma hora com zero 01 at 12

    Diviso de Servios Comunidade Centro de Computao Unicamp 27

  • 8/7/2019 apostila_php_intermediario

    28/63

    PHP Intermedirio

    Caracterede format Descrio

    Exemplo devalores

    retornados

    Dia --- ---

    preenchendo esquerda

    H Formato 24-horas de uma hora com zeropreenchendo esquerda

    00 at 23

    i Minutos com zero preenchendo esquerda 00 at 59

    s Segundos, com zero preenchendo esquerda 00 at 59

    u Milisegundos (adicionado no PHP 5.2.2) Exemplo: 54321

    Timezone --- ---

    e Identificador de Timezone (adicionado noPHP 5.1.0)

    Exemplos: UTC ,GMT ,Atlantic/Azores

    I (capital i) Se a data est ou no no horrio de vero1 se horrio devero, 0 casocontrrio.

    O Diferena para Greenwich time (GMT) emhoras Exemplo: +0200

    P Diferena para Greenwich time (GMT) comdois pontos entre horas e minutos(adicionado no PHP 5.1.3)

    Exemplo: +02:00

    T Abreviao de Timezone Exemplos:EST ,

    MDT ...

    Z

    Timezone offset in seconds. The offsetfor timezones west of UTC is always

    negative, and for those east of UTC isalways positive.

    -43200 at 50400

    FullDate/Time --- ---

    c ISO 8601 date (adicionado no PHP 5) 2004-02-

    Diviso de Servios Comunidade Centro de Computao Unicamp 28

  • 8/7/2019 apostila_php_intermediario

    29/63

    PHP Intermedirio

    Caracterede format Descrio

    Exemplo devalores

    retornados

    Dia --- ---

    12T15:19:21+00:00

    checkdate()

    Verifica se a data passada vlida, retorna verdadeiro ou falso:Sintaxe:

    checkdate(int mes, int dia, int ano);

    $a = checkdate(11,02,1980);

    if ($a) {echo "Data Correta

    ";

    } else {echo "Data Incorreta

    ";

    }

    getdate()

    Retorna um array com as informaes de uma data no formato Unix/timestampSintaxe:

    array getdate(int timestamp);

    $data_array = getdate();print_r($data_array);

    A lista dos itens mais importantes deste array retornado encontra-se abaixo:

    "seconds" retorna os segundos (0 a 59)

    "minutes" retorna os minutos (0 a 59)

    "hour" retorna as horas (0 a 23)

    "mday" retorna o dia do ms (1 a 31)

    "wday" retorna a representao numrica do dia da semana (0 para Domingo e 6

    Diviso de Servios Comunidade Centro de Computao Unicamp 29

  • 8/7/2019 apostila_php_intermediario

    30/63

    PHP Intermedirio

    para Sbado)

    "mon" retorna a representao numrica do ms atual (1 a 12)

    "year" retorna a representao numrica do anual atual (2003)

    "yday" retorna a representao numrica do dia do ano (1 a 365)

    "weekday" representao textual do dia da semana (Domingo a Sbado)

    "month" representao textual do ms atual (Janeiro a Dezembro)

    Diviso de Servios Comunidade Centro de Computao Unicamp 30

  • 8/7/2019 apostila_php_intermediario

    31/63

    PHP Intermedirio

    Enviando e-mails

    Para enviar e-mails a partir de scripts PHP, necessrio que o servidor tenha instaladoum aplicativo servidor de correio eletrnico, como o SendMail, Postix, QMail, ou outro. Noarquivo de configurao php.ini necessrio alterar o valor da diretiva chamadosendmail_path, onde ser colocado o PATH do executvel do aplicativo servidor decorreio eletrnico. No nosso exemplo, vamos utilizar o SendMail:

    sendmail_path = /usr/lib/sendmail -t -i

    A seguir, temos dois exemplos de como podemos enviar e-mails a partir do PHP,utilizando a funo mail . No exemplo 1, os parmetros so passados da forma simples,entre aspas e separados por vrgulas. No exemplo 2, os parmetros so passados deuma forma mais completa, atravs de variveis. Esse caso indicado quando se quer enviar mensagem para mais de um endereo eletrnico ou com cpia para outro e-mail.Exemplo 1:

    mail("e-mail", "Assunto", "Contedo da mensagem Linha 1 Linha 2Linha 3", "Ttulo da mensagem");

    Exemplo 2:

    Diviso de Servios Comunidade Centro de Computao Unicamp 31

  • 8/7/2019 apostila_php_intermediario

    32/63

    PHP Intermedirio

    Projeto

    O projeto consiste no desenvolvimento de um sistema (SRC Sistema de Registro deChamados) cujo objetivo registrar chamados de usurios para uma equipe de tcnicosde planto e o conseqente atendimento desses chamados. Tambm vai disponibilizar uma consulta geral a partir dos dados armazenados.

    Os scripts ficaro armazenados no diretrio de publicao do servidor web Apache. Sefor necessrio, devero ser feitas as seguintes inicializaes:

    Inicializar o servidor Apache Inicializar o MySQL Inicializar o Sendmail (Linux)

    Base de dados e tabelas

    O sistema utilizar o servidor de banco de dados MySQL , no qual foi criada a base dedados cursophp , contendo as seguintes tabelas:

    chamados

    num_chamado integer primary key not null auto_increment,data_chamado date not null,hora_chamado time not null,usuario varchar(40 ) not null,email varchar(40) not null,problema tex t not null,equipe_acionada varchar(40) not null

    atendimentos

    num_chamado integer not null,data_atendimento date not null,responsavel varchar(40) not null,

    equipe_responsavel varchar(40) not null,solucao text not null

    usuarios

    login varchar(20) not null,senha varchar(10) not null,

    Diviso de Servios Comunidade Centro de Computao Unicamp 32

  • 8/7/2019 apostila_php_intermediario

    33/63

    PHP Intermedirio

    nome varchar(40) not null,email varchar(40) not null,tipo_usuario varchar(20) not null

    Funes utilizadas no sistema

    Os scripts funcoes.php e misc.php contero as funes utilizadas no sistema. Todosos scripts que chamarem essas funes vo conter os comandos include("funcoes.php") e include ("misc.php") no incio do seu cdigo.

    Include e Require

    O include uma funo que permite a incluso do contedo de umcerto arquivo em outro arquivo. Esse contedo pode ser qualquertipo de cdigo PHP, HTML ou simplesmente texto. Os arquivos aserem includos podem conter uma biblioteca de funes ou classes.

    A funo require tem o mesmo objetivo da funo include, noentanto, em caso de erro, o include apenas mostra uma mensagemde warning e o script continuar executando, j o require causa umFatal Error, encerrando a execuo do script.

    funcoes.php

  • 8/7/2019 apostila_php_intermediario

    34/63

    PHP Intermedirio

    Login: $login



    Incluir

    Chamado

    ";

    if ($tip_us == 'user_atend'){

    echo "
    Registrar Atendimento

    ";

    }

    echo "
    Consultar

    Chamados por Periodo


    Pagina Inicial





    Logout


    ";

    }

    function monta_rodape(){

    echo '

    ';}

    ?>

    Diviso de Servios Comunidade Centro de Computao Unicamp 34

  • 8/7/2019 apostila_php_intermediario

    35/63

    PHP Intermedirio

    Pagina inicial/autenticao do sistema

    misc.php

    Index.php

    A pgina de autenticao do sistema (index.php) ter o seguinte cdigo:



  • 8/7/2019 apostila_php_intermediario

    36/63

    PHP Intermedirio

    color="#264989">Autenticao


    Usurio:

    Senha:





    Diviso de Servios Comunidade Centro de Computao Unicamp 36

  • 8/7/2019 apostila_php_intermediario

    37/63

    PHP Intermedirio

    Os scripts autentica_src.php e a homepage do sistema

    autentica_src.php

    Este script realiza a autenticao do usurio no sistema:

  • 8/7/2019 apostila_php_intermediario

    38/63

    PHP Intermedirio

    $_SESSION["erro_aut"] = 1;header("Location: index.php");

    }

    ?>

    pagina_principal.php

    Esta pgina aparecer aps o usurio realizar a sua autenticao no sistema:



    Objetivo


    Esse sistema registra e armazena informaesreferentes a chamados feitos pelos usurios e atendimentosrealizados pela equipe de planto. Tambm disponibiliza a consultados dados armazenados.



    Diviso de Servios Comunidade Centro de Computao Unicamp 38

  • 8/7/2019 apostila_php_intermediario

    39/63

    PHP Intermedirio



    Mdulo de incluso de chamados

    form_chamado.php

    Esse script cria o formulrio que receber os dados do chamado e ter o seguintecdigo:


    Incluir Chamado

    Diviso de Servios Comunidade Centro de Computao Unicamp 39

  • 8/7/2019 apostila_php_intermediario

    40/63

    PHP Intermedirio

    Usurio:

    E-mail :

  • 8/7/2019 apostila_php_intermediario

    41/63

    PHP Intermedirio

    echo "

    Equipe Acionada:$equipe_acionada
    ";}

    ?>


    incluir_chamado.php

    Esse script vai receber os dados enviados pelo formulrio, vai fazer a consistncia egravar esses dados na tabela chamados.

    Esse script utiliza a funo mail, passando como parmetros destinatrio, assunto,corpo da mensagem e cabealhos adicionais.

    Saiba mais sobre algumas funes utilizadas no script aseguir

    trim: tira espaos em branco no incio e no final de uma varivel.

    header: chama outro script, podendo passar parmetros e noretorna ao script chamador. Nenhum comando de exibio (echo,include, tags html) pode ser executado antes dessa funo.

    mail: envia mensagens por e-mail de acordo com os parmetrosutilizados.

    or die: expresso que pode ser usada como uma alternativa para oif/else. Finaliza a execuo do script.

  • 8/7/2019 apostila_php_intermediario

    42/63

    PHP Intermedirio

    ver_session();

    // Recebe variveis globais

    $usuario = $_SESSION["usuario_sys"];$email = $_SESSION["email_usuario_sys"];

    $problema = trim($_POST["problema"]);$equipe_acionada = trim($_POST["equipe_acionada"]);

    // Consiste camposif (!$problema){

    $_SESSION["problema"] = $problema;$_SESSION["equipe_acionada"] = $equipe_acionada;$_SESSION["erro"] = 1;header("location: form_chamado.php");

    }else{

    include ("funcoes.php");

    // Obtm data// data para exibio no formato dd/mm/aaaa

    $data_exib = date("d/m/Y");// data para ser gravada no banco no formato aaaa/mm/dd

    $data_chamado = date("Y").'-'.date("m").'-'.date("d");

    // Obtm data e hora da ocorrncia$hora_chamado = date("H:i:s");

    // Inclui os dados na tabela acionamentos

    // Declarao SQL

    $sql = "INSERT into chamados values (' ','$data_chamado','$hora_chamado', '$usuario', '$email', '$problema','$equipe_acionada')";

    // Roda a query e trata o resultadoif (mysql_query ($sql)){

    $sql2 = "SELECT num_chamado from chamados where email =

    '$email' and data_chamado = '$data_chamado' and hora_chamado ='$hora_chamado'";

    $query2 = mysql_query ($sql2) or die ("Erro no acesso aobanco");

    $row = mysql_fetch_assoc($query2);$num_chamado = $row["num_chamado"];

    mail ("[email protected]", "SRC - Um Novo Chamado foiIncluido",

    "Mais InformaesNmero do Chamado: $num_chamadoData do Chamado: $data_exibHora do Chamado: $hora_chamadoUsuio: $usuario

    Diviso de Servios Comunidade Centro de Computao Unicamp 42

  • 8/7/2019 apostila_php_intermediario

    43/63

    PHP Intermedirio

    E-mail: $emailProblema: $problemaEquipe Acionada: $equipe_acionada","SRC - Sistema de

    Registro de Chamados");

    $_SESSION["msg_exib"] = "incluir_chamado_ok";

    $_SESSION["data_exib"] = $data_exib;$_SESSION["hora_chamado"] = $hora_chamado;$_SESSION["num_chamado"] = $num_chamado;

    header("Location: exibe_mensagem.php");

    }else{

    $_SESSION["msg_exib"] = "incluir_chamado_erro";header("Location: exibe_mensagem.php");

    } }

    ?>

    exibe_mensagem.php

    No devemos exibir as mensagens finais em um script que acessa banco de dados,pois, se o usurio clicar no boto atualizar do navegador, o script ser processadonovamente. Por isso, criaremos um script s para exibir as mensagens finais. Esse scriptser chamado por meio da funo header.

    Diviso de Servios Comunidade Centro de Computao Unicamp 43

  • 8/7/2019 apostila_php_intermediario

    44/63

    PHP Intermedirio

  • 8/7/2019 apostila_php_intermediario

    45/63

    PHP Intermedirio

    *******************/

    if ($_SESSION["msg_exib"] == "incluir_atendimento_ok"){

    echo "

    Processado comSucesso



    Voltar ";

    unset($_SESSION["msg_exib"]); }

    if ($_SESSION["msg_exib"] == "incluir_atendimento_erro"){

    echo "

    Erro no

    Processamento

    Voltar ";

    unset($_SESSION["msg_exib"]); }

    echo '';

    monta_rodape();

    ?>

    Testando o mdulo de incluso de chamados

    Deixe os campos do formulrio em branco. Clique em enviar. Dever mostrar uma mensagem deerro.

    Preencha os campos do e clique em enviar. Dever mostrar a mensagem Processado com

    Sucesso. Exibir tambm a data/hora da incluso e o nmero do chamado.

    Diviso de Servios Comunidade Centro de Computao Unicamp 45

  • 8/7/2019 apostila_php_intermediario

    46/63

    PHP Intermedirio

    Mdulo de registro de atendimentos

    form_atendimento.php

    Este script cria o primeiro formulrio de atendimento, utilizado para obter o nmero dochamado.


    RegistrarAtendimento

  • 8/7/2019 apostila_php_intermediario

    47/63

    PHP Intermedirio

    Nmero do Chamado:

    Home

    registrar_atendimento.php

    Esse script recebe o dado do formulrio, faz a consistncia, obtm dados do chamado echama o script registrar_atendimento2.php, que vai exibir o formulrio completo deatendimento.

    Saiba mais sobre algumas funes utilizadas no script aseguir

    mysql_num_rows: obtem o nmero de registros que retornou doselect.

    mysql_fetch_assoc: obtem os campos do registro que retornou doselect, usando como ndice o nome do campo.

    mysql_fetch_row: obtem os campos do registro que retornou doselect, da mesma forma que o comando anterior, mas utiliza umndice seqencial, comeando do valor zero.

    substr: seleciona partes de uma varivel string, recebe comoparmetros o nome da varivel, a posio inicial e o nmero deposies que se quer obter. Comea da posio zero.

  • 8/7/2019 apostila_php_intermediario

    48/63

    PHP Intermedirio

    // Consiste nmero do chamadoif (!$num_chamado){

    $_SESSION["erro_atend"] = 1;header("location: form_atendimento.php");

    }else{

    // Declarao do SQL$sql = "SELECT usuario, email, data_chamado, hora_chamado,

    problema, equipe_acionada from chamados where num_chamado ='$num_chamado'";

    // Roda a query e verifica se encontrou registro$query = mysql_query($sql) or die ("Erro no acesso ao banco");$achou = mysql_num_rows($query);

    // Se encontrou, guarda as variveisif ($achou > 0){

    $reg = mysql_fetch_assoc($query);$data_chamado = $reg["data_chamado"];$_SESSION["hora_chamado"] = $reg["hora_chamado"];$_SESSION["problema"] = $reg["problema"];$_SESSION["equipe_acionada"] = $reg["equipe_acionada"];$_SESSION["usuario"] = $reg["usuario"];$_SESSION["email"] = $reg["email"];

    //Coloca a data do chamado em formato de exibio (de

    aaaa-mm-dd para dd/mm/aaaa)$dt = explode("-",$data_chamado);

    $dt2 = mktime(0,0,0,$dt[1],$dt[2],$dt[0]);$data_exib = date("d/m/Y",$dt2);

    $_SESSION["num_chamado"] = $num_chamado;$_SESSION["data_exib"] = $data_exib;

    header("location: registrar_atendimento2.php");

    }else{

    include ("funcoes.php");

    monta_cabecalho();

    echo '';

    monta_menu($_SESSION["usuario_sys"],$_SESSION["tipo_usuario_sys"]);

    echo '

    Diviso de Servios Comunidade Centro de Computao Unicamp 48

  • 8/7/2019 apostila_php_intermediario

    49/63

  • 8/7/2019 apostila_php_intermediario

    50/63

    PHP Intermedirio

    // essas condies so vlidas para quando esse script for

    chamado pelo registrar_atendimento3.php

    if ($_SESSION ["consist"] == 1 || $_SESSION ["consist"] == 2){

    $dia = trim($_SESSION["dia"]);$mes = trim($_SESSION["mes"]);$ano = trim($_SESSION["ano"]);$responsavel = trim($_SESSION["responsavel"]);$equipe_responsavel =

    trim($_SESSION["equipe_responsavel"]);$solucao = trim($_SESSION["solucao"]);

    if ($_SESSION["consist"] == 1){echo ('

    Campo(s)obrigatorio(s) nao preenchido(s)

    ');

    unset($_SESSION["consist"]);}

    if ($_SESSION["consist"] == 2){

    echo ('

    Datainvalida

    ');

    unset($_SESSION["consist"]);}

    } echo "

    Numero do chamado: $num_chamado
    Usuario: $usuario
    E-mail: $email
    Data: $data_exib
    Hora: $hora_chamado
    Problema: $problema
    Equipe acionada: $equipe_acionada

    Data do Atendimento
    (formatodd/mm/aaaa)

    Data :

    Diviso de Servios Comunidade Centro de Computao Unicamp 50

  • 8/7/2019 apostila_php_intermediario

    51/63

    PHP Intermedirio


    ";

    if (!$responsavel){

    echo '

    Responsvel :

    PauloCarlosEduardoCristinaJoseMarcosRicardo

    ';

    }else{

    echo "

    Responsvel : $responsavel

    ";

    }

    if (!$equipe_responsavel){

    echo '

    Equipe Responsvel:

    Suporte Conectividade

    Desenvolvimento

    Producao

    Diviso de Servios Comunidade Centro de Computao Unicamp 51

  • 8/7/2019 apostila_php_intermediario

    52/63

    PHP Intermedirio

    ';}else{

    echo "

    Equipe Responsvel:$equipe_responsavel

    ";

    }

    if (!$solucao){

    echo '

    Soluo :

    ';}else{

    echo "

    Soluo : $solucao

    ";}

    // Passa os dados do chamado para o script seguinte por meio decampos escondidos

    echo "


    ";

    monta_rodape();

    ?>

    Diviso de Servios Comunidade Centro de Computao Unicamp 52

  • 8/7/2019 apostila_php_intermediario

    53/63

  • 8/7/2019 apostila_php_intermediario

    54/63

    PHP Intermedirio

    $_SESSION["consist"] = 2;$_SESSION["num_chamado"] = $num_chamado;$_SESSION["email"] = $email;$_SESSION["dia"] = $dia;$_SESSION["mes"] = $mes;$_SESSION["ano"] = $ano;

    $_SESSION["responsavel"] = $responsavel;$_SESSION["equipe_responsavel"] = $equipe_responsavel;$_SESSION["solucao"] = $solucao;

    header("location: registrar_atendimento2.php");

    }else{

    // Formata a data para ser gravada no banco$data_atendimento = $ano."-".$mes."-".$dia;

    // Declarao SQL$sql = "INSERT into atendimentos values ('$num_chamado',

    '$data_atendimento', '$responsavel', '$equipe_responsavel','$solucao')";

    // Roda a query e trata o resultadoif (mysql_query($sql)){

    // formata a data para exibio (dd/mm/aaaa)$data_atendimento = $dia."/".$mes."/".$ano;

    mail ("$email", "SRC - O chamado $num_chamado foiatendido",

    "Aviso: O chamado $num_chamado foi atendido.Mais Informaes:

    Data do atendimento: $data_atendimentoResponsel: $responsavelEquipe Responsvel: $equipe_responsavelSoluo: $solucao","SRC - Sistema de Registro

    de Chamados");

    $_SESSION["msg_exib"] ="incluir_atendimento_ok";

    header("Location: exibe_mensagem.php");}

    else{$_SESSION["msg_exib"] = "incluir_atendimento_erro";header("Location: exibe_mensagem.php");

    }

    }

    ?>

    Diviso de Servios Comunidade Centro de Computao Unicamp 54

  • 8/7/2019 apostila_php_intermediario

    55/63

    PHP Intermedirio

    exibe_mensagem.php

    Para completar esse mdulo necessrio o script que exibe as mensagens finais. Serutilizado tambm o script exibe_mensagem.php.

    Testando o mdulo de registro de atendimentos

    Deixe o campo Nmero do Chamado do formulrio em branco. Dever exibir uma mensagem deerro.

    No campo Nmero do Chamado do formulrio, digite um nmero inexistente. Dever exibir umamensagem de erro.

    No campo Nmero do Chamado do formulrio, digite um nmero vlido. Dever exibir oformulrio completo para o registro de atendimentos.

    No formulrio completo deixe os campos obrigatrios em branco. Dever exibir uma mensagem

    de erro.No formulrio completo digite datas invlidas no campo Data do atendimento. Dever exibir umamensagem de erro.

    Preencha o formulrio completo com dados vlidos. Dever exibir a mensagem Processado comsucesso.

    Mdulo de consulta

    consulta_chamados_periodo.php

    Este script cria o formulrio de consulta, e obtm um intervalo de datas.

  • 8/7/2019 apostila_php_intermediario

    56/63

    PHP Intermedirio

    $_SESSION["tipo_usuario_sys"]);

    ?>


    Consulta chamados ocorridos num determinadoperodo

    Entre com o perodo:

    De: dia

  • 8/7/2019 apostila_php_intermediario

    57/63

    PHP Intermedirio

    ?>


    consulta_chamados_periodo2.php

    Este script consiste os campos recebidos do formulrio, consulta as tabelas chamadose atendimentos e exibe os dados obtidos.

  • 8/7/2019 apostila_php_intermediario

    58/63

    PHP Intermedirio

    if (!$var_data_ini || !$var_data_fim){

    $_SESSION["consist"] = 1;$_SESSION["dia_ini"] = $dia_ini;$_SESSION["mes_ini"] = $mes_ini;$_SESSION["ano_ini"] = $ano_ini;

    $_SESSION["dia_fim"] = $dia_fim;$_SESSION["mes_fim"] = $mes_fim;$_SESSION["ano_fim"] = $ano_fim;

    header("location: consulta_chamados_periodo.php");}

    // converte as datas no formato Unix/timestamp para compar-lasentre si$data_ini = mktime(0,0,0,$mes_ini,$dia_ini,$ano_ini);$data_fim = mktime(0,0,0,$mes_fim,$dia_fim,$ano_fim);

    // Compara as datas de incio e de fimif ($data_ini > $data_fim){

    $_SESSION["consist"] = 1;$_SESSION["dia_ini"] = $dia_ini;$_SESSION["mes_ini"] = $mes_ini;$_SESSION["ano_ini"] = $ano_ini;$_SESSION["dia_fim"] = $dia_fim;$_SESSION["mes_fim"] = $mes_fim;$_SESSION["ano_fim"] = $ano_fim;

    header("location: consulta_chamados_periodo.php");}

    else

    {//adiciona um zero a esquerda nos valores de 1 a 9//se for digitado 1 nos campos dia ou ms,transforma para 01

    $dia_ini = strftime("%d",$data_ini);$mes_ini = strftime("%m",$data_ini);$ano_ini = strftime("%Y",$data_ini);$dia_fim = strftime("%d",$data_fim);$mes_fim = strftime("%m",$data_fim);$ano_fim = strftime("%Y",$data_fim);

    //Converte as datas para o formato aaaa-mm-dd$data_ini = $ano_ini."-".$mes_ini."-".$dia_ini;

    $data_fim = $ano_fim."-".$mes_fim."-".$dia_fim; //Converte as datas para o formato dd/mm/aaaa$data_ini_exib = $dia_ini."/".$mes_ini."/".$ano_ini;$data_fim_exib = $dia_fim."/".$mes_fim."/".$ano_fim;

    // Declarao do SQL$sql = "SELECT num_chamado, data_chamado, hora_chamado,

    usuario, email, problema, equipe_acionada from chamados wheredata_chamado >= '$data_ini' and

    Diviso de Servios Comunidade Centro de Computao Unicamp 58

  • 8/7/2019 apostila_php_intermediario

    59/63

    PHP Intermedirio

    data_chamado

  • 8/7/2019 apostila_php_intermediario

    60/63

    PHP Intermedirio

    Data do chamado: $data_chamado_exib


    Hora do chamado: $hora_chamado
    Usuario: $usuario
    E-mail: $email
    Problema: $problema
    Equipe acionada: $equipe_acionada


    ";

    // Declaraoo do SQL$sql2 = "SELECT data_atendimento, responsavel,

    equipe_responsavel, solucao from atendimentos where num_chamado ='$num_chamado'";

    // Roda a query e verifica se encontrou registro$query2 = mysql_query($sql2) or die ("Erro no acesso

    ao banco");$achou2 = mysql_num_rows($query2);

    // Se encontrou, guarda as varieisif ($achou2 > 0)

    {echo "


    Atendimento

    ";

    while ($row2 = mysql_fetch_row ($query2)){

    $data_atendimento = $row2[0];$responsavel = $row2[1];$equipe_responsavel = $row2[2];

    $solucao = $row2[3];

    $dt_at = explode("-",$data_atendimento);$dt_at2 =

    mktime(0,0,0,$dt_at[1],$dt_at[2],$dt_at[0]);$data_atendimento_exib =

    date("d/m/Y",$dt_at2);

    echo "

  • 8/7/2019 apostila_php_intermediario

    61/63

    PHP Intermedirio

    size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"> Data do Atendimento:

    $data_atendimento_exib
    Responsavel:

    $responsavel
    Equipe responsavel:

    $equipe_responsavel
    Solucao: $solucao

    ";

    }}

    else{

    echo '
    Obs: Ate o momento, nenhumatendimento foi registrado para esse chamado.

    ';}

    }

    echo "

    Voltar";

    }else{

    monta_cabecalho();

    echo '';

    monta_menu($_SESSION["usuario_sys"],$_SESSION["tipo_usuario_sys"]);

    echo '


    Nao existemchamados para esse periodo.

    Voltar





    ';

    Diviso de Servios Comunidade Centro de Computao Unicamp 61

  • 8/7/2019 apostila_php_intermediario

    62/63

    PHP Intermedirio

    }

    monta_rodape();}

    ?>

    Testando o mdulo de consulta

    Deixe os campos obrigatrios do formulrio em branco. Dever exibir uma mensagemde erro.

    Digite datas invlidas. Dever exibir uma mensagem de erro.

    Digite um intervalo de datas vlido. Dever exibir os dados referentes a esse perodo.

    Expirao de sesso

    logout.php

    Este script realizar a expirao da sesso de usurios no sistema:

    Referncia Bibliogrfica

    Beginning PHP4 - Programando

    Autores : Wankyu Choi, Allan Kent, Chris Lea, ganesh Prasad, Chris Ullman,Jon Blank e Sea CazzellEditora : Makron Books

    Documentao Oficial do PHPhttp://www.php.net

    Consulta a dicas e artigos do site PHP Brasilhttp://www.phpbrasil.com

    Diviso de Servios Comunidade Centro de Computao Unicamp 62

    http://www.php.net/http://www.phpbrasil.com/http://www.php.net/http://www.phpbrasil.com/
  • 8/7/2019 apostila_php_intermediario

    63/63

    PHP Intermedirio

    Para mais informaes sobre o PostgreSQL, consulte o site:http://www.commandprompt.com/ppbook/

    Onde obter ajuda

    Para ajud-lo a solucionar dvidas de informtica, utilize o sistema Rau-Tu deperguntas e respostas, que foi desenvolvido pelo Centro de Computao da Unicamp emconjunto com o Instituto Vale do Futuro. Tem por objetivo possibilitar que um time decolaboradores possa responder a perguntas colocadas por qualquer pessoa no site,cobrindo diversas reas de conhecimento.

    Acesse: www.rau-tu.unicamp.br

    http://www.commandprompt.com/ppbook/http://www.commandprompt.com/ppbook/