javascript - aula07

Upload: cleber-paiva

Post on 07-Mar-2016

264 views

Category:

Documents


0 download

DESCRIPTION

JavaScript - Aula03

TRANSCRIPT

  • ELFS, 2003 167

    7. Recursos PHP para a Internet

    w Protocolo HTTP. Na aula passada vimos um script simples de autenticao de usurios. Neste script foi usado o tag META para passar uma URL ao servidor web. A linguagem PHP dispe da funo header para facilitar esta tarefa.

    Login: Senha:

    aula07_01.htm

    aula07_01.php

    Note que com o protocolo HTTP possvel executarum script PHP a partir de outro script PHP.

  • ELFS, 2003 168

    Recursos PHP para a Internet

    w Exerccio. Considere uma pgina como mostra a figura abaixo. Implementar o script aula07_02.php que exibe a pgina da instituio selecionada.

    w E-Mail. A funo mail() do PHP deve ser usada para envio de e-mail. Sua sintaxe a seguinte:

    mail(Destinatrio, Assunto, Mensagem, Informaes_Adicionais);

    Exemplo:

    aula07_02.htm

    Considere que, para serem enviados, os dados devem satisfazer as seguintes condies: Todos os campos so obrigatrios; A consistncia do campo e-mail deve ser feita

    verificando apenas a existncia do caractere @; O campo telefone deve ter sete ou oito caracteres.aula07_03.htm

  • ELFS, 2003 169

    Recursos PHP para a Internet

    aula07_03.phpNote nas atribuies varivel $erro o uso combinado dos operadores de concatenao ( . ) e de atribuio ( = ) resultando no operador ( .= ). Escrever $erro .= "string" equivalente a escrever: $erro = $erro . "string"

    Para usar a funo mail preciso configurar a sesso [mail function] do arquivo c:\apache\php\php.ini:SMTP = mail.feg.unesp.brsendmail_from = seu_email@seu_domnio.br

  • ELFS, 2003 170

    Recursos PHP para a Internet

    w Upload de arquivos. Existe um tipo de campo de formulrio que permite o envio de arquivos da mquina do usurio para o servidor. Isto muito til para enviar um arquivo para o servidor sem a necessidade de liberao de um acesso por FTP. Exemplo:

    aula07_04.htm

  • ELFS, 2003 171

    Recursos PHP para a Internet

    w A funo int copy(string origem, string destino) copia o arquivo origem para o arquivo destino. Os strings origem e destino devem conter os nomes completos dos arquivos (incluindo os caminhos). A pasta destino deve existir (at mesmo em outro computador) e permitir gravao para que a cpia seja realizada. A funo retorna 0 (false) caso a cpia no seja realizada.

    w Protocolo FTP. A seqncia de tarefas para uso do protocolo FTP a seguinte: Conectar ao servidor, Identificao (login e senha), Envio/Busca de arquivo(s), Desconectar. Os comandos para cada uma destas tarefas so os seguintes:$con = ftp_connect('servidor');$log = ftp_login($con, 'login', 'senha');ftp_put($con, 'arquivo_remoto', 'arquivo_local', FTP_BINARY);ftp_quit($con);

    else {$dest = "c:\\apache\\htdocs\\DAIaula07\\".$arq_name;if (copy($arq, $dest) == 0) echo("No foi possvel copiar o arquivo!");

    elseecho("Upload realizado com sucesso!");

    }echo("");

    ?>

    Para download s usar a funo ftp_get($con, 'arquivo_local','arquivo_remoto', FTP_BINARY);

  • ELFS, 2003 172

    Recursos PHP para a Internet

    w Exerccio. Refazer a aplicao de upload de arquivos de modo a usar o protocolo FTP. Use o servidor 200.145.11.141, usurio "teste_php" e senha "123456789". Em seguida, experimente fazer o download do arquivo copiado no servidor para a pasta c:\temp.

    w Cookies. Os cookies so usados para gravar alguma informao no computador cliente. Cada cookie representa um par (nome, valor). Cookies so teis para armazenar algumas informaes do usurio, tais como a quantidade de vezes que j visitou a pgina, ou algum dado fornecido numa visita anterior.

    w Existem cookies persistentes e cookies de sesso. Os cookies persistentes so gravados em arquivo e perduram mesmo aps o browser ser fechado, mas possuem data e hora de expirao. Os cookies de sesso no so armazenados em disco e permanecem ativos apenas enquanto a sesso do browser no for encerrada. Por padro, existem algumas limitaes para o uso de cookies: 300 cookies no total, 4 Kbytes por cookie, 20 cookies por servidor ou domnio.

    w Para gravar cookies no cliente, deve ser utilizada a funo setcookie(), que possui a seguinte assinatura:int setcookie(string nome, string valor, int exp, string path, string dominio, int segura);

    onde:n nome - nome do cookie;n valor - valor armazenado no cookie;

  • ELFS, 2003 173

    Recursos PHP para a Internet

    n exp - data de expirao do cookie (opcional). Se no for definida, o cookie ser de sesso;

    n path - path do script que gravou o cookie;n dominio - domnio responsvel pelo cookie;n segura - o valor 1 indica que o cookie s pode ser transmitido por uma

    conexo segura (https).

    w Exemplo: setcookie("Campus", "FEG", time()+3600);Neste caso, ser gravado um cookie de nome "Campus" e valor "FEG", com tempo de expirao de uma hora (3600 segundos alm do horrio atual).

    w Importante: Cookies s podem ser gravados antes do envio de qualquer informao para o cliente. Portanto todas as chamadas funo setcookie()devem ser feitas antes do envio de qualquer header ou texto.

    w Existem duas formas de recuperar cookies gravados por scripts PHP:n acessando o array $HTTP_COOKIE_VARS[] com ndice igual ao nome do

    cookie;n acessando uma varivel $nome, onde nome o nome do cookie.

    Por exemplo, para recuperar o valor do cookie acima podemos escrever: $HTTP_COOKIE_VARS["Campus"] ou$Campus

  • ELFS, 2003 174

    Recursos PHP para a Internet

    w O script aula07_05.php ir, com base no valor da varivel $Escolha, gravar ou recuperar um cookie de sesso.

    Exemplo de Cookie

    Exemplo de Cookie Nome: Valor:

    ArmazenarRecuperar

    aula07_05.htm

  • ELFS, 2003 175

    Recursos PHP para a Internet

    w Defina alguns cookies e tente recuper-los. Em seguida, feche o browser e carregue a pgina aula07_05.htm novamente e tente recuperar os cookies definidos. O que ocorre?

    aula07_05.php

    Note que a funo setcookie() deve ser executada antes de que algo seja enviado ao cliente.

  • ELFS, 2003 176

    Recursos PHP para a Internet

    Tratamento de Errosw A linguagem PHP permite a verificao e o tratamento de erros ocorridos na

    execuo de scripts. O tratamento de erros pode ser feito no prprio script. O PHP possui vrios nveis de erros e avisos, os quais so estabelecidos por constantes pr-definidas (ou por valores inteiros).

    w Algumas constantes de erro:

    w O padro do PHP o nvel E_ALL & ~E_NOTICE, ou seja, mostrar todos os erros exceto as notificaes. Isto pode ser alterado em tempo de execuo, chamando a funo error_reporting(nvel) com o nvel desejado. Por exemplo, error_reporting(E_ERROR | E_WARNING | E_PARSE), o que equivalente a error_reporting(7). Note que 7 = 1 + 2 + 4, que so os valores inteiros associados s constantes E_ERROR, E_WARNING e E_PARSE.

    Todos os erros e advertncias.2047E_ALL

    Notificaes de possveis erros (avisos sobre possveis erros nocdigo do script). Interessante para a depurao do script.

    8E_NOTICE

    Erros de sintaxe (parse errors).4E_PARSE

    Advertncias (a execuo do script no interrompida).2E_WARNING

    Erros fatais (no podem ser recuperados), tais como: erros de alocao de memria.

    1E_ERROR

    SignificadoValorConstante

  • ELFS, 2003 177

    Recursos PHP para a Internet

    w Com o nvel 0 (zero) nenhum aviso ou mensagem de erro ser gerada em tempo de execuo. Neste caso, podemos usar a varivel $php_errormsg que conter o ltimo erro gerado pelo script, para criar rotinas especficas detratamento de erros e para personalizar mensagens de erro para o usurio.

    w Para criar rotinas de tratamento de erros e para a exibio de todas as mensagens de erro preciso configurar o arquivo c:\apache\php\php.ini, alterando a diretiva track_erros para: track_errors = on.

    w Exemplo. O script a seguir ir criar um arquivo erro.log (em formato XML) e ir enviar um e-mail com as mensagens de erro.

  • ELFS, 2003 178

    Recursos PHP para a Internet

    8 => "Notificao",16 => "Erro do interpretador PHP",32 => "Advertncia do interpretador PHP",64 => "Erro de compilao",128 => "Advertncia de compilao",256 => "Erro definido pelo usurio",512 => "Advertncia definida pelo usurio",1024=> "Notificao definida pelo usurio");

    // Estabelecer os tipos para os quais sero exibidas mensagens de erro $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);

    $erro = "\r\n";$erro .= "\t".$dhora."\r\n";$erro .= "\t".$errno."\r\n";$erro .= "\t".$errortype[$errno]."\r\n";$erro .= "\t".$errmsg."\r\n";

    if (in_array($errno, $user_errors))$erro .= "\tMensagem do usurio!!\r\n";

    $erro .= "\t".$filename."\r\n";$erro .= "\t".$linenum."\r\n";$erro .= "\r\n";

  • ELFS, 2003 179

    Recursos PHP para a Internet

    // Para testar// echo $erro;

    // Salvar arquivo erro.log e enviar e-mail caso haja erro crticoerror_log($erro, 3, "erro.log");if ($errno == E_USER_ERROR)mail("[email protected]","Erro Crtico",$erro);

    }

    function distancia($vect1, $vect2) {if (!is_array($vect1) || !is_array($vect2)) {trigger_error("Parmetros incorretos (so esperados vetores).",

    E_USER_ERROR);return NULL;

    }

    if (count($vect1) != count($vect2)) {trigger_error("Vetores precisam ser do mesmo tamanho.",

    E_USER_ERROR);return NULL;

    }

    for ($i=0; $i

  • ELFS, 2003 180

    Recursos PHP para a Internet

    if (!is_numeric($c1)) {trigger_error("Coordenada $i no vetor 1 considerada como zero.",

    E_USER_WARNING);$c1 = 0.0;

    }if (!is_numeric($c2)) {trigger_error("Coordenada $i no vetor 2 considerada como zero.",

    E_USER_WARNING);$c2 = 0.0;

    }$d += $c2*$c2 - $c1*$c1;

    }return sqrt($d);

    }

    $old_error_handler = set_error_handler("TrataErro");

    // Constante indefinida, gerar uma advertncia.$t = NAO_ESTOU_DEFINIDA;

    // Definir alguns vetores$a = array(2,3,"bobo");$b = array(5.5, 4.3, -1.6);$c = array (1,-3);

    A funo set_error_handler estabelece uma funo definida pelo usurio para o tratamento de erros, advertncias ou notificaes. A funo retorna o tratador de erro anterior (caso exista).

  • ELFS, 2003 181

    Recursos PHP para a Internet

    // Gerar um erro de usurio$t1 = distancia($c,$b)."\n";

    // Gerar outro erro$t2 = distancia($b,"eu no sou um vetor")."\n";

    // Gerar uma advertncia$t3 = distancia($a,$b)."\n";

    ?>

    A funo error_log envia uma mensagem de erro para o servidor web, para uma porta TCP ou para um arquivo. O segundo parmetro da funo especifica qual deve ser o destino da mensagem. Os valores possveis so:0 - a mensagem enviada para o sistema de log mantido pelo PHP (ou para um arquivo,

    dependendo de como est configurada a diretiva error_log).1 - a mensagem enviada por e-mail para o endereo especificado no terceiro parmetro.2 - a mensagem enviada para um endereo IP (e, opcionalmente, para uma porta) estabelecido no

    terceiro parmetro.3 -

  • ELFS, 2003 182

    Recursos PHP para a Internet

    w Exerccio. Criar um site para manuteno do quadro de horrios de uma escola. Considere as seguintes funcionalidades:

    w O boto Mostrar dever exibir o quadro de horrio atual como um documento HTML, de acordo com as informaes armazenadas no banco de dados.

    w O boto Enviar dever enviar uma mensagem com as informaes do quadro de horrio atual para um endereo de e-mail.

    Crie um novo banco de dados MySQL horariocontendo duas tabelas: horario, com campos codhora (smallint) e horario (varchar(11)) e disciplinas, com campos coddisc(smallint) e nomedisc (varchar(20)).O boto Executar dever executar a operao de banco de dados selecionada (Incluir, Excluir ou Alterar) correspondente aos dados estabelecidos nos campos Dia, Horrio e Disciplina.