Tecnologias Web 2010/11

Tamanho: px
Começar a partir da página:

Download "Tecnologias Web 2010/11"

Transcrição

1 Tecnologias Web 2010/11 Comon Gateway Interface (CGI) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Rui Prior CGI 1

2 CGI O que é? Common Gateway Interface Interface standard para a execução de programas via web (server-side scripts) RFC 3875 Define aspectos como Directório em que o script é executado Variáveis de ambiente Tratamento dos descritores de ficheiro standard Etc. Não necessariamente em Perl Módulo CGI.pm simplifica o desenvolvimento CGI 2

3 CGI Como funciona? O servidor web recebe um pedido HTTP com URL que identifica como recurso dinâmico gerado por CGI E.g., através da extensão ".cgi" ou por estar no directório cgi-bin O servidor lança um novo processo para executar o programa CGI Se for um executável nativo é corrido normalmente Se for um script é corrido o interpretador da linguagem respectiva Se for bytecode Java é corrida a JVM Os parâmetros são passados através de variáveis de ambiente Query string Cabeçalhos HTTP Parâmetros do servidor CGI 3

4 CGI Como funciona? O corpo do pedido HTTP é passado através da entradapadrão Apenas se existir (e.g., no método POST) O programa CGI gera a resposta na saída-padrão Cabeçalhos (parciais) Corpo da resposta O servidor recebe a saída-padrão do CGI e envia-a para o cliente (navegador) Se necessário, completando os cabeçalhos CGI 4

5 Exemplo simples #!/usr/bin/perl -wt print << "END_OF_HTML"; Content-type: text/html <html> <head><title>hello, World!</title></head> <body> <h1>about this server</h1> <ul> <li>server name: $ENV{SERVER_NAME}</li> <li>running on port: $ENV{SERVER_PORT}</li> <li>server software: $ENV{SERVER_SOFTWARE}</li> <li>server protocol: $ENV{SERVER_PROTOCOL}</li> <li>cgi revision: $ENV{GATEWAY_INTERFACE}</li> </ul> </body> </html> END_OF_HTML CGI 5

6 Descritores standard STDIN Usado para obter o corpo do pedido (se existir) Não existe marcador de fim de ficheiro tentativas de ler mais do que foi recebido bloqueiam o script STDOUT Não tentar ler quando o método for GET Quando o método for POST, deve obter-se o valor de Content-length: e ler apenas esse número de bytes Resposta a devolver Alguns cabeçalhos, uma linha em branco e o corpo da resposta CGI 6

7 STDERR Descritores standard CGI não impõe tratamento do STDERR A escrita para STDERR normalmente induz um erro 500 Internal Server Error Alguns servidores (e.g., Apache) guardam saída nos logs Útil para debugging Pedido v.a. e stdin Resposta Servidor Web stdout CGI stderr CGI 7

8 Variáveis de ambiente standard AUTH_TYPE Variável CONTENT_LENGTH CONTENT_TYPE DOCUMENT_ROOT Descrição Método de autenticação (vazio se o pedido não requeria autenticação) Comprimento em bytes do corpo da mensagem Tipo do corpo (e.g., application/x-www-form-urlencoded ) Directório-base a partir de onde se servem os documentos GATEWAY_INTERFACE Versão da interface CGI usada pelo servidor PATH_INFO PATH_TRANSLATED Informação adicional de caminho passada ao script CGI (e.g., sub-recurso) Pathname do recurso no sistema de ficheiros QUERY_STRING Pergunta no URL pedido (tudo a seguir ao "?"). REMOTE_ADDR REMOTE_HOST Endereço IP do cliente que fez o pedido (navegador ou proxy HTTP) Nome do cliente que fez o pedido (navegador ou proxy) CGI 8

9 Variáveis de ambiente standard Variável REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE Descrição Utilizador que fez o pedido (indicado pelo identd) Login do utilizador (se autenticado pelo servidor web) Método HTTP usado para fazer o pedido (GET ou POST) Caminho no URL (e.g., /cgi-bin/program.cgi) do script Nome ou endereço IP do servidor web Porta na qual o servidor web está à escuta Nome e versão do protocolo do pedido (e.g., "HTTP/1.1") Nome e versão do servidor web CGI 9

10 Cabeçalhos do pedido HTTP Todos os cabeçalhos do pedido HTTP que não estão em variáveis standard podem ser acedidos através de HTTP_* HTTP_ACCEPT, HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_ENCODING, HTTP_ACCEPT_LANGUAGE, HTTP_COOKIE, HTTP_FROM, HTTP_HOST, HTTP_REFERER, HTTP_USER_AGENT, Também cabeçalhos desconhecidos Variável HTTPS indica se a conexão é segura ( on ou ON se for, ou OFF se não for) Geralmente é possível configurar o servidor web para passar variáveis adicionais que possam ser úteis CGI 10

11 Saída O programa tem que gerar pelo menos um cabeçalho um dos seguintes é obrigatório Content-type: especificando o conteúdo do corpo gerado Location: especificando um URL para redireccionamento Status: com um código de estado que não requeira dados adicionais (e.g., 204 No Response) A mensagem em texto pode diferir da standard, mas um código deve ser usado só no contexto para o qual foi definido CGI 11

12 Saída Geração de um documento É necessário especificar o tipo de documento gerado print "Content-type: text/html\n\n"; As duas mudanças de linha correspondem à linha vazia que separa os cabeçalhos do corpo O servidor web converte cada mudança de linha em CR-LF, confome especificado pelo HTTP CGI 12

13 Saída Redireccionamento É necessário um cabeçalho Location: para especificar o alvo do redireccionamento print "Location: static_response.html\n\n"; Se o URL for absoluto ou se for relativo com um caminho relativo, é devolvida a resposta ao cliente que faz outro pedido para o novo URL So o URL for relativo com caminho absoluto ocorre um redireccionamento interno O servidor web vai buscar o recurso indicado e retorna-o como se fosse a resposta do CGI mais rápido CGI 13

14 Saída Especificação do código de resposta Feita através do pseudo-cabeçalho Status: Script indica código e descrição O servidor web intercepta este pseudo-cabeçalho e gera a linha de estado em conformidade Este pseudo-cabeçalho é opcional: Se for gerado um Content-type:, o servidor web gera automaticamente uma resposta 200 OK Se for gerado um Location:, o servidor gera automaticamente uma resposta 302 Found CGI 14

15 Cabeçalhos completos Normalmente não é necessário o script gerar todos os cabeçalhos O servidor web interpreta os cabeçalhos emitidos e completa-os conforme necessário Contudo, é possível ser o script a gerar a totalidade dos cabeçalhos Modo NPH (Non-Parsed Headers) Seleccionado iniciando o nome do script por nph- (e.g., nph-mycgi em vez de mycgi) Neste modo, o script tem que gerar também a linha de estado da resposta HTTP CGI 15

16 Exemplo simples com NPH #!/usr/bin/perl -wt print << "END_OF_HTML"; $ENV{SERVER_PROTOCOL} 200 OK Content-type: text/html <html> <head><title>hello, World!</title></head> <body> <h1>about this server</h1> <ul> <li>server name: $ENV{SERVER_NAME}</li> <li>running on port: $ENV{SERVER_PORT}</li> <li>server software: $ENV{SERVER_SOFTWARE}</li> <li>server protocol: $ENV{SERVER_PROTOCOL}</li> <li>cgi revision: $ENV{GATEWAY_INTERFACE}</li> </ul> </body> </html> END_OF_HTML CGI 16

17 Exemplo 1 Devolução de uma imagem num formato suportado pelo navegador #!/usr/bin/perl -wt use strict; my $image_type = $ENV{HTTP_ACCEPT} =~ m image/png? "png" : "jpeg"; my $basename = $ENV{PATH_INFO} =~ /^(\w+)/; my $image_path = "$ENV{DOCUMENT_ROOT}/images/$basename.$image_type"; unless ( $basename and -B $image_path and open IMAGE, $image_path ) { print "Location: /errors/not_found.html\n\n"; exit; } my $buffer; print "Content-type: image/$image_type\n\n"; binmode; while ( read( IMAGE, $buffer, 16_384 ) ) { print $buffer; } CGI 17

18 Exemplo 2 Geração da resposta de acordo com a autenticação feita pelo servidor $remote_user = $ENV{REMOTE_USER}; if ( $remote_user eq "mary" ) { print "Welcome Mary, how is your company doing these days?\n"; } elsif ( $remote_user eq "bob" ) { print "Hey Bob, how are you doing? I heard you were sick.\n"; } CGI 18

19 Descodificação da entrada de formulários Frequentemente, a entrada para um CGI é obtida a partir de formulários Estes formulários podem estar em páginas estáticas ou ser gerados pelo mesmo ou por outro CGI Se o método for GET, os pares <chave>=<valor> são colocados na query string Se o método for POST, são colocados no corpo do pedido Content-type: application/x-www-form-urlencoded CGI 20

20 Descodificação da entrada de formulários 1. Ler a query string de $ENV{QUERY_STRING} 2. Se $ENV{REQUEST_METHOD} é POST, determinar o tamanho do pedido usando $ENV{CONTENT_LENGTH} e ler essa quantidade de bytes de STDIN. Acrescentar estes dados aos lidos da query string (se presente); a junção faz-se com & 3. Separar os resultados pelo carácter " &" character, que separ os diferentes pares <chave>=<valor> 4. Separar cada par <chave>=<valor> pelo carácter = 5. Descodificar os caracteres URL-encoded no nome (chave) e no valor 6. Associar cada nome com o(s) respectivo(s) valore(s), recordando que cada opção pode ter múltiplos valores Que trabalheira, fazer isto à mão!!! CGI 21

21 Descodificação da entrada de formulários sub parse_form_data { my %form_data; my $name_value; = split /&/, $ENV{QUERY_STRING}; if ($ENV{REQUEST_METHOD} eq 'POST') { my $query = ""; read(stdin, $query, $ENV{CONTENT_LENGTH}) == $ENV{CONTENT_LENGTH} or return undef; split /&/, $query; } foreach $name_value { my($name, $value) = split /=/, $name_value; $name =~ tr/+/ /; $name =~ s/%([\da-f][\da-f])/chr(hex($1))/egi; $value = [] unless defined $value; $value =~ tr/+/ /; $value =~ s/%([\da-f][\da-f])/chr(hex($1))/egi; $value; } return %form_data; } CGI 22

22 O módulo CGI.pm Simplifica muito as tarefas necessárias num CGI É uma das razões para o Perl ser tão popular para CGIs Tratamento da entrada Informação de ambiente (cabeçalhos, etc.) Parsing da entrada de formulários Gestão de uploads Geração da saída Geração de cabeçalhos Geração de código HTML Controlo de erros CGI::Carp permite apanhar die e outras condições de erro que poderiam terminar abruptamente o script CGI 23

23 CGI.pm exemplo simples #!/usr/bin/perl -Tw use strict; use CGI; my $q = new CGI; my $name = $q->server_name(); print $q->header("text/html"), $q->start_html("welcome"), $q->p("hi there! Server at $name speaking."), $q->end_html; Content-Type: text/html; charset=iso <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us"> <head> <title>welcome</title> <meta http-equiv="content-type" content="text/html; charset=iso " /> </head> <body> <p>hi there! Server at localhost speaking.</p> </body> </html> CGI 24

24 Métodos e variáveis correspondentes Método CGI.pm auth_type N/D content_type N/D N/D path_info path_translated query_string remote_addr remote_host remote_ident remote_user Variável de Ambiente CGI AUTH_TYPE CONTENT_LENGTH CONTENT_TYPE DOCUMENT_ROOT GATEWAY_INTERFACE PATH_INFO PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER CGI 25

25 Métodos e variáveis correspondentes Método CGI.pm request_method script_name self_url server_name server_port server_protocol url Accept * http("accept-charset") Variável de Ambiente CGI REQUEST_METHOD SCRIPT_NAME Indisponível SERVER_NAME SERVER_PORT SERVER_PROTOCOL Indisponível HTTP_ACCEPT HTTP_ACCEPT_CHARSET http("accept-encoding") HTTP_ACCEPT_ENCODING * Quando um método do CGI.pm tem o mesmo nome de uma função interna ou palavra-chave do Perl, a primeira letra do método é maiúscula. CGI 26

26 Métodos e variáveis correspondentes Método CGI.pm Variável de Ambiente CGI http("accept-language") HTTP_ACCEPT_LANGUAGE http("from") HTTP_FROM raw_cookie HTTP_COOKIE virtual_host HTTP_HOST referer HTTP_REFERER user_agent HTTP_USER_AGENT https HTTPS https("cipher") HTTPS_CIPHER https("keysize") HTTPS_KEYSIZE https("secretkeysize") HTTPS_SECRETKEYSIZE CGI 27

27 Notas sobre alguns métodos O funcionamento standard para os métodos de acesso a variáveis de ambiente é ser invocados sem parâmetros e devolver o conteúdo da variável correspondente; no entanto há excepções a esta regra. Accept http Invocado sem argumentos retorna a lista de tipos aceites Invocado com um argumento (e.g., text/plain ), devolve o factor de preferência associado Invocado sem argumentos devolve a lista de variáveis de ambiente HTTP_* disponíveis Invocado com o nome de uma variável HTTP_* ou do cabeçalho correspondente devolve o valor desse cabeçalho https Invocado sem argumentos devolve o conteúdo da variável HTTPS, inicializada pelo servidor se a conexão é segura Invocado com um parâmetro, funciona de forma semelhante ao http, mas para HTTPS_* CGI 28

28 Notas sobre alguns métodos query_string Se o método for GET devolve a query string, incluindo quaisquer alterações que entretanto lhe tenham sido feitas, ao contrário de $ENV{QUERY_STRING} Se o método for POST, retorna os parâmetros POST enviados no corpo da mensagem self_url url Neste caso, não inclui a query string (que normalmente não existe com o POST) Devolve um URL que pode ser usado para invocar o CGI com o método GET com os mesmos parâmetros com que foi invocado Ainda que tenha sido invocado com o método POST Semelhante ao anterior, mas sem parâmetros (informação de caminho ou query string) virtual_host Retorna o conteúdo do cabeçalho Host:, se este existir (i.e., HTTP/1.1), ou SERVER_NAME no caso contrário CGI 29

29 Acesso aos parâmetros do formulário O acesso aos parâmetros é feito usando o método param Independentemente de o formulário ter sido submetido por GET ou POST Invocado sem argumentos, param retorna a lista de todos os parâmetros Invocado com o nome de um parâmetro, param devolve A lista de valores para esse parâmetro, se invocado em contexto de lista O primeiro (ou único) valor, se invocado em contexto escalar undef se não existir esse parâmetro no formulário CGI 30

30 Alteração dos parâmetros do formulário É possível alterar o valor de um parâmetro invocando param com dois ou mais argumentos $q->param(name => "John Doe"); $q->param(hobbies => "Biking", "Windsurfing", "Music"); Também é possível apagar um parâmetro específico ou todos os parâmetros $q->delete("age"); $q->delete_all; Pode ser útil para definir valores-padrão para os parâmetros de um formulário CGI 32

31 Exportação de parâmetros para um espaço de nomes Método param não permite a interpolação em strings de forma simples Em alternativa é possível exportar todos os parâmetros para variáveis de um dado espaço de nomes $q->import_names("q"); print "Hi, $Q::user!"; Único senão: maior consumo de memória CGI 33

32 Submissão de ficheiros É possível efectuar a submissão de ficheiros usando formulários com enctype= multipart/form-data O valor fornecido é o nome do ficheiro tal como aparecia no servidor Os delimitadores de directórios são diferentes nos diferentes sistemas operativos Os caracteres válidos num nome também Alguns browsers fazem tradução do nome O conteúdo é guardado num ficheiro temporário Pode obter-se um handle para este temporário usando o método upload com o nome do ficheiro como argumento É possível obter o nome do ficheiro temporário usando o método tmpfilename (método não-documentado, deve evitar-se) Pode pedir-se no formulário o nome com o qual o ficheiro deve ser guardado no servidor CGI 34

33 Prevenir ataques DoS Na configuração standard, o módulo CGI permite upload de ficheiros e não limita o tamanho de um POST Seria possível lançar um DoS que enchesse o disco ou a memória do servidor Para evitar este problema, é conveniente usar o seguinte código antes de criar o objecto CGI: $CGI::DISABLE_UPLOADS = 1; $CGI::POST_MAX = 102_400; # 100 KB CGI 35

34 Submissão de ficheiros #!/usr/bin/perl -wt use strict; use CGI; use Fcntl qw( :DEFAULT :flock ); use constant UPLOAD_DIR => "/usr/local/apache/data/uploads"; use constant BUFFER_SIZE => 16_384; use constant MAX_FILE_SIZE => 1_048_576; # Limit each upload to 1 MB use constant MAX_DIR_SIZE => 100 * 1_048_576; # Limit total uploads to 100 MB use constant MAX_OPEN_TRIES => 100; $CGI::DISABLE_UPLOADS = 0; $CGI::POST_MAX = MAX_FILE_SIZE; my $q = new CGI; $q->cgi_error and error( $q, "Error transferring file: ". $q->cgi_error ); my $file = $q->param( "file" ) error( $q, "No file received." ); my $filename = $q->param( "filename" ) error( $q, "No filename entered." ); my $fh = $q->upload( $file ); my $buffer = ""; if ( dir_size( UPLOAD_DIR ) + $ENV{CONTENT_LENGTH} > MAX_DIR_SIZE ) { error( $q, "Upload directory is full." ); } CGI 36

35 Submissão de ficheiros (cont.) # Conversão do nome do ficheiro de destino $filename =~ s/[^\w.-]/_/g; if ( $filename =~ /^(\w[\w.-]*)/ ) { $filename = $1; } else { error( $q, "Invalid file name; files must start with a letter or number." ); } # Abrir ficheiro de destino, garantindo que o nome é único until ( sysopen OUTPUT, UPLOAD_DIR. $filename, O_WRONLY O_CREAT O_EXCL ) { $filename =~ s/(\d*)(\.\w+)?$/($1 0) + 1. $2/e; $1 + 0 >= MAX_OPEN_TRIES and error( $q, "Unable to save your file." ); } # Necessário em sistemas não-unix; não faz nada em sistemas Unix binmode OUTPUT; binmode $fh; # Copiar conteúdo do ficheiro temporário para o de destino por blocos while ( read( $fh, $buffer, BUFFER_SIZE ) ) { print OUTPUT $buffer; } close OUTPUT; CGI 37

36 Submissão de ficheiros (cont.) sub dir_size { my $dir = shift; my $dir_size = 0; } # Somar o tamanho de todos os ficheiros no directório opendir DIR, $dir or die "Unable to open $dir: $!"; while ( readdir DIR ) { $dir_size += -s "$dir/$_"; } return $dir_size; sub error { my( $q, $reason ) } print $q->header( "text/html" ), $q->start_html( "Error" ), $q->h1( "Error" ), $q->p( "Your upload was not procesed because the following error ", "occured: " ), $q->p( $q->i( $reason ) ), $q->end_html; exit; CGI 38

37 Submissão de ficheiros com hook #!/usr/bin/perl use CGI; # Questões de segurança / prevenção de DoS omitidas my $q = CGI->new(\&hook, undef, 0); # $hook, $data, $use_tempfile sub hook { # Invocado antes de CGI->new() retornar => objecto $q não existe my ($filename, $buffer, $bytes_read, $data) our $fh; unless (defined($fh)) { open $fh, '>', $filename; binmode $fh; } print $fh $buffer; } print $q->header("text/html"); if (defined($fh)) { # Invocado pela submissão dum ficheiro print $q->start_html("upload finished!"), $q->h1("well Done!"), $q->end_html; } else { # Invocado sem submissão => gerar formulário print $q->start_html("testing upload using hooks"), $q->start_multipart_form, $q->filefield(-name => 'uploaded_file'), $q->submit, $q->end_form, $q->end_html; } CGI 39

38 Geração de saída com o CGI.pm O módulo CGI.pm simplifica grandemente a geração de respostas Cabeçalhos HTTP Código HTML Incluindo formulários CGI 40

39 Geração de cabeçalhos HTTP Tipo de media print $q->header( "text/plain" ); print $q->header( -type => "text/plain" ); Código de estado print $q->header( -type => "text/html", -status => "404 Not Found" ); Expiração do documento gerado p/ caching Instante absoluto, relativo ou now print $q->header( -type => "text/html", -expires => "+30m" ); Especificação do alvo (frame, janela) print $q->header( -type => "text/html", -target => "main_frame" ); CGI 41

40 Geração de cabeçalhos HTTP Redireccionamento print $q->redirect( "http://localhost/survey/thanks.html" ); Outros cabeçalhos Basta passar o par nome/valor ao método header; os sublinhados são automaticamente convertidos para hífenes print $q->header( -content_encoding => "gzip" ); CGI 42

41 Geração de (X)HTML O método start_html gera a parte inicial do documento, até à etiqueta <body> (inclusive) Algumas opções possíveis: Especificação de meta-informação com -meta Inclusão de script com script Código do script numa string ou Referência a hash com chaves possíveis language, -src, ou code Alternativa se o browser não suportar JavaScript com -noscript CGI 43

42 Geração de (X)HTML Algumas opções possíveis (cont.): Especificação de folha de estilos CSS com style Código CSS numa string ou Referência a hash com chaves possíveis code ou src Título do documento com title Especificação de URL-base como o URL do script com base e valor true Útil com sub-recursos Especificação de URL-base passado como argumento seguinte com -xbase CGI 44

43 Geração de (X)HTML Elementos HTML standard Linha horizontal print $q->hr; Mudança de linha print $q->br; Parágrafo print $q->p( "This is a paragraph." ); print $q->p( "The server name is:", $q->em( $q->server_name ) ); { } Sem espaço adicional local $" = ""; print $q->p( "Server=", $q->server_name ); CGI 45

44 Geração de (X)HTML Elementos HTML standard (cont.) Âncora (link) print $q->a( { -href => "/downloads" }, "Download Area" ); Listas Propriedade distributiva print $q->ol( $q->li( [ "First", "Second", "Third" ] ) ); <ol> <li>first</li> <li>second</li> <li>third</li> </ol> CGI 46

45 Geração de (X)HTML Elementos HTML standard (cont.) Tabelas print $q->table( { -border => 1, -width => "100%" }, $q->tr( [ $q->th( { -bgcolor => "#cccccc" }, [ "Name", "Age" ] ), $q->td( [ "Mary", 29 ] ), $q->td( [ "Bill", 27 ] ), $q->td( [ "Sue", 26 ] ) ] ) ); <table border="1" width="100%"> <tr> <th bgcolor="#cccccc">name</th> <th bgcolor="#cccccc">age</th> </tr> <tr> <td>mary</td> <td>29</td> </tr> <tr> <td>bill</td> <td>27</td> </tr> <tr> <td>sue</td> <td>26</td> </tr> </table> CGI 47

46 Geração de formulários A geração de formulários também é facilitada pelo módulo CGI.pm A tabela mostra os métodos disponíveis, bem como as etiquetas (X)HTML por eles geradas Método CGI.pm start_form, start_multipart_form end_form textfield password_field filefield button Etiqueta (X)HTML <form> </form> <input type="text"> <input type="password"> <input type="file"> <input type="button"> CGI 48

47 Geração de formulários (cont.) Método CGI.pm Etiqueta (X)HTML image_button <input type="image"> submit <input type="submit"> reset <input type="reset"> checkbox, checkbox_group <input type="checkbox"> radio_group <input type="radio"> popup_menu <select size="1"> scrolling_list <select size="n"> (n > 1) textarea <textarea> hidden <input type="hidden"> CGI 49

48 Geração de formulários (cont.) O método HTTP normalmente usado para submissão por start_form é o POST Possível especificar GET com method => 'GET' Nos métodos que geram elementos do formulário é possível especificar o valorpadrão com a opção default Se o CGI tiver sido invocado pela submissão de um formulário com esse elemento, o valor submetido é usado em vez do padrão Possível forçar uso do padrão com override => 1 CGI 50

49 Formulários Exemplo use CGI; my $q = CGI->new(); print $q->header('text/html'), $q->start_html(-title => 'Register'), $q->h1('registration form'), $q->start_form, $q->start_table, $q->tr([ $q->td([ 'Name:', $q->textfield(-name => 'name') ]), $q->td([ ' ', $q->textfield(-name => ' ') ]), $q->td([ 'Password:', $q->password_field(-name => 'pass') ]), $q->td([ 'Confirm password:', $q->password_field(-name => 'cpass') ]), $q->td([ 'Receive newsletter:', scalar ($q->radio_group(-name => 'rcvnl', -values => [ 'yes', 'no' ], -default => 'no')) ]), ]), $q->end_table, $q->submit(-value => 'Register'), $q->end_form, $q->end_html; CGI 51

50 Formulários Exemplo CGI 52

51 Formulários Exemplo 2 print $q->start_form; print $q->table( { -border => 0, -width => 550 }, $q->tr( $q->td($q->textfield(-name => 'fname', -default => 'John', -size => 25), $q->br, "First Name"), $q->td($q->textfield(-name => 'mi', -size => 2, -default => 'A'), $q->br, "M.I."), $q->td($q->textfield(-name => 'lname', -default => 'Doe', -size => 25), $q->br, "Last Name") ), $q->tr( $q->td({ colspan => 3 }, $q->textfield(-name => 'address', -size => 75), $q->br, "Street Address") ), $q->tr( $q->td($q->textfield(-name => 'city', -size => 25), $q->br, "City"), $q->td($q->textfield(-name => 'state', -size => 2), $q->br, "State"), $q->td($q->textfield(-name => 'zip', -size => 10), $q->br, "Zip Code") ) ), $q->hr; Pode testar-se em CGI 53

52 Formulários Exemplo 2 print $q->table( { -border => 0, -width => 550 }, $q->tr( $q->td($q->em("what Operating Systems Do You Use?"), $q->br, $q->checkbox_group( -name => 'Operating Systems', ) ) ) ), $q->hr; -values -linebreak => 'yes', -defaults => ['Linux', 'Windows'] => ['Linux', 'MacOS', 'Windows', 'Other'], ) ), $q->td($q->em("what Platform is used most?"), $q->br, $q->radio_group( -name -values -linebreak => 'yes', -default => 'PC' => 'platform', => ['PC', 'Mac', 'Sun', 'Other'], print $q->hidden('hidden Reference', 'Bet you did not see me'); CGI 54

53 Formulários Exemplo 2 print $q->p( $q->em("how are you connected to the Internet?"), $q->br, $q->popup_menu( -name => 'Connection', -values => ['ADSL', 'Cable', 'T-1/E-1', 'Dial-up', 'Satellite'], -default => 'Dial-up' ) ); print $q->p( $q->em("what Peripherals are connected to your computer?"), $q->br, $q->scrolling_list( -name => 'configuration', -values => ['CDROM', 'Sound Card', 'Video Camera', '3D Graphics'], -size => 4, -multiple => 'true' ) ); print $q->p($q->em("what do you like about the World Wide Web?"), $q->br, $q->textarea(-name => 'Comments', -rows => 8, -columns => 60)); print $q->p($q->checkbox('add me to your mailing list')); CGI 55

54 Formulários Exemplo 2 print $q->p( $q->reset, $q->submit('action', 'Send Free Catalog'), $q->submit('action', 'No Free Catalog') ); print $q->endform, $q->hr; # Imprime valores recebidos da submissao anterior if ($q->param) { my $key); print $q->h2("here are the current settings:"); foreach $key ($q->param) { print $q->strong("$key : = $q->param($key); print join(", $q->br; } print $q->hr; } else { print $q->strong("no query submitted yet."); } CGI 56

55 Tratamento de erros Um CGI não deve morrer, pois originaria um erro 500 Internal Server Error Um simples warn gera esse erro No entanto, existe muito código que invoca die, warn ou funções relacionadas Pode-se colocar código perigoso dentro de blocos eval, mas não é muito prático Módulo CGI::Carp simplifica o tratamento de erros Adiciona informação (timestamp e nome do CGI) às mensagens de erro Permite gerar páginas de erro personalizadas CGI 57

56 Tratamento de erros CGI::Carp Parâmetro fatalstobrowser para apanhar os erros e warnings Ajuda de valor incalculável na fase de desenvolvimento CGI::Carp::set_message para personalizar a página de erro use CGI; $CGI::HEADERS_ONCE = 1; use CGI::Carp 'fatalstobrowser'; BEGIN { sub carp_error { my $error_message = shift; my $q = new CGI; print $q->start_html( "Error" ), $q->h1( "Error" ), $q->p( "Sorry, the following error has occurred: " ); $q->p( $q->i( $error_message ) ), $q->end_html; } CGI::Carp::set_message( \&carp_error ); } CGI 58

57 Modularização do código Para simplificar a manutenção do código e a uniformidade do site é conveniente criar código modular Criação de módulo Definir package com o nome do módulo sequência de identificadores separados por :: Dar ao ficheiro o nome do último desses identificadores e a extensão.pm Guardar esse ficheiro num subdirectório constituído pelos restantes identificadores separados por / em vez de :: Este subdirectório deve estar num directório O ficheiro deve terminar com 1; para ser incluído com sucesso É comum definir a versão em $VERSION Exemplo: o módulo MyMods::CGI::Login deve pertencer a um package com o mesmo nome e ser guardado no ficheiro Login.pm dentro, e.g., do directório /usr/lib/perl5/vendor_perl/5.8.8/mymods/cgi CGI 59

58 Modularização do código: Exemplo #!/usr/bin/perl -wt package MyMods::CGI::Login; use CGI; use base Exporter; = qw( login_form ); # Exporta a subrotina login_form() our $VERSION = "0.1"; # Versão do módulo sub login_form { my $q = shift; # Objecto CGI passado como primeiro argumento print $q->header(-type => 'text/html'), $q->start_html('login'), $q->start_form(-action => $scriptname), # Processado pelo próprio script $q->p('username:', $q->textfield(-name => 'user')), $q->p('password:', $q->password_field(-name => 'pass', -default => '', -override => 1)), $q->p($q->submit(-value => 'Login')), $q->end_form(), $q->end_html(); } 1; CGI 60

59 Manutenção de estado HTTP é stateless (mesmo com conexões permanentes) Por vezes é necessário manter estado entre diversos ciclos pedido/resposta. Técnicas possíveis: Técnica Aplicação Fiabilidade e desempenho Requisitos do cliente Query strings Extra path info Grupo de páginas ou site inteiro; perde-se se o utilizador deixar o site e voltar mais tarde Difícil interceptar de forma fiável todos os links; é pesado passar conteúdos estáticos através de CGIs Nenhuns Hidden fields Sequência de submissões de formulários Fácil implementação; não afecta o desempenho Nenhuns Cookies Sempre, mesmo que o utilizador saia do site e regresse mais tarde Fácil implementação; não afecta o desempenho Suporte para cookies implementado e activo CGI 61

60 Query strings & extra path information Necessário configurar servidor web para invocar CGI quando se acede a determinadas zonas do sistema de ficheiros <Directory /usr/local/apache/htdocs/store> AddType text/html.html AddType Tracker.html Action Tracker /cgi/track.cgi </Directory> Quando é feito um pedido de o CGI (query track) é invocado como O script atribui ao utilizador um identificador único e altera todos os links para incluir esse identificador E.g., CGI 62

61 Query strings & extra path information Este método implica a intercepção de todos os links nos documentos estáticos servidos para introduzir o ID Pode utilizar-se o módulo HTML::Parser para o efeito Parsing é tarefa pesada penalização em termos de desempenho Em alternativa podem pré-processar-se os documentos para agilizar o processo (e.g., colocar em todos os links #SESSID# no sítio onde deve introduzir-se o ID) sub parse { my( $filename, $id ) local *FH; open FH, $filename or die "Cannot open file: $!"; } while (<FH>) { s/#sessid#/$id/g; print; } CGI 63

62 Cookies Geração do cabeçalho Set-cookie: my $cookie = $q->cookie( -name => 'cart_id', -value => 12345, -domain => '.oreilly.com', -expires => '+1y', -path => '/cgi', -secure => 1 ); print $q->header( -type => 'text/html', -cookie => $cookie ); Recuperação de uma cookie recebida my $cookie = $q->cookie( 'cart_id' ); Problema: se houver várias cookies com o mesmo nome apenas retorna a primeira Possível desde que tenham path ou domain distintos Podem recuperar-se as restantes através de $ENV{HTTP_COOKIE} CGI 64

CGI Common Gateway Interface. É um standard para transmitir dados entre um servidor web e uma aplicação externa

CGI Common Gateway Interface. É um standard para transmitir dados entre um servidor web e uma aplicação externa CGI Common Gateway Interface É um standard para transmitir dados entre um servidor web e uma aplicação externa Uma aplicação CGI é um programa que gera em tempo real um documento (normalmente HTML) que

Leia mais

Programação para Internet I

Programação para Internet I Programação para Internet I Aula 6 PHP: Include, Require, Variáveis de ambiente Prof. Teresinha Letícia da Silva leticiasfw@yahoo.com.br Inclusão de arquivos com Include e Require no PHP Uma técnica muito

Leia mais

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 VARIÁVEIS CGI 3 CGI.NOME_DA_VARIÁVEL 3 VARIÁVEIS CGI SERVIDOR 3 VARIÁVEIS CGI CLIENTE 3 USANDO AS VARIÁVEIS CGI 4 REDIRECIONANDO APLICAÇÕES 4 INTERAGINDO COM ARQUIVOS 5

Leia mais

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para Internet I 2. O protocolo HTTP Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Protocolos Conjunto de regras que define o modo como aplicações informáticas comunicam entre si. Permite

Leia mais

Programação para Internet I

Programação para Internet I Programação para Internet I Aulas 09 e 10 Fernando F. Costa nando@fimes.edu.br Formulários O formulário representa o modo mais importante de interatividade que a linguagem HTML oferece. Um formulário pode

Leia mais

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos Internet e protocolos web A Internet é uma rede descentralizada de recursos computacionais Tolerante a falhas (no single point of failure) Topologia tem de fornecer caminhos alternativos entre 2 computadores

Leia mais

7. Formulários em XHTML

7. Formulários em XHTML Programação para Internet I 7. Formulários em XHTML Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Os formulários constituem uma das principais formas de interacção entre clientes e servidores. São

Leia mais

PHP: Cookies e Sessões

PHP: Cookies e Sessões PHP: Cookies e Sessões Programação de Servidores Marx Gomes Van der Linden Protocolo HTTP O protocolo HTTP não tem conceito de sessões. Modelo simples de Requisição e Resposta. http://marx.vanderlinden.com.br/

Leia mais

Ferramentas para Multimídia e Internet - 1486

Ferramentas para Multimídia e Internet - 1486 1 Ferramentas para Multimídia e Internet - 1486 HTML BÁSICO: O que é uma página WEB? Uma página WEB, também conhecida pelo termo inglês webpage, é uma "página" na World Wide Web, geralmente em formato

Leia mais

WWW, CGI e HTTP Java Deployment Course: Aula 2. por Jorge H. C. Fernandes (jhcf@di.ufpe.br) DI-UFPE 28 de Abril de 1999

WWW, CGI e HTTP Java Deployment Course: Aula 2. por Jorge H. C. Fernandes (jhcf@di.ufpe.br) DI-UFPE 28 de Abril de 1999 WWW, CGI e HTTP Java Deployment Course: Aula 2 por Jorge H. C. Fernandes (jhcf@di.ufpe.br) DI-UFPE 28 de Abril de 1999 WWW, CGI e HTTP Copyright 1999, 1998, 1997 Jorge H. C. Fernandes (jhcf@di.ufpe.br)

Leia mais

HTML -- Criação de Home Page

HTML -- Criação de Home Page PPáággi innaa 1 LISTAS Na linguagem HTML existem elementos específicos para a criação de listas, que podem ser listas ordenadas (OL), listas sem ordenação (UL), ou listas de definição (DL). Um detalhe

Leia mais

Curso de PHP. FATEC - Jundiaí

Curso de PHP. FATEC - Jundiaí Curso de PHP FATEC - Jundiaí Cookies Cookies são arquivos texto que podem ser armazenados no computador or do usuário, para serem recuperados posteriormente pelo servidor no qual seu site está hospedado.

Leia mais

COMO FUNCIONA UM FORMULÁRIO

COMO FUNCIONA UM FORMULÁRIO FORMULÁRIOS Constitui-se numa das formas de a máquina cliente enviar informações para que um programa no servidor receba estes dados, processe-os e devolva uma resposta ao usuário, por meio do navegador,

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir HTML - Formulários @wre2008 1 Sumário Formulários HTML @wre2008 2 Formulários: Muitos elementos de um formulário html são definidos pela tag . Cada tipo de elemento

Leia mais

INTRODUÇÃO AO DESENVOLVIMENTO WEB

INTRODUÇÃO AO DESENVOLVIMENTO WEB INTRODUÇÃO AO DESENVOLVIMENTO WEB PROFª. M.Sc. JULIANA H Q BENACCHIO Formulários Os formulários em HTML são usados para selecionar diferentes tipos de entradas do usuário. Um formulário é uma área que

Leia mais

1.264 Lição 11. Fundamentos da Web

1.264 Lição 11. Fundamentos da Web 1.264 Lição 11 Fundamentos da Web Navegadores e servidores da Web A Internet é apenas um conjunto de redes interconectadas livremente. Um conjunto de redes de área local conectado via redes de área ampla

Leia mais

Os componentes de um formulário são: Form, Input, Select e AreaText

Os componentes de um formulário são: Form, Input, Select e AreaText HTML Formulário O elemento FORM, da HTML, é o responsável por prover documentos interativos no ambiente WWW de forma que uma pagina web exibida a um usuário possa submeter um conjunto de dados, informados

Leia mais

files, que devolve um objeto do tipo FileList.

files, que devolve um objeto do tipo FileList. WEB STORAGE 199 7.4.3 FILE API A File API foi introduzida para nos fornecer maior flexibilidade no acesso ao conteúdo de ficheiros a partir de uma página HTML. Por predefinição, o acesso a um ficheiro

Leia mais

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva Mini-curso de PHP Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva Aula 1 Breve introdução de HTML, Conceitos básicos de PHP, Sintaxe, Separador de instruções e Comentários (Cap 1

Leia mais

Mais sobre uso de formulários Site sem Ajax

Mais sobre uso de formulários Site sem Ajax Mais sobre uso de formulários Site sem Ajax Página com busca padrão 1 Página com o resultado da busca carregada no local da anterior (o formulário está vazio) Site com Ajax 2 Site usando Ajax para preencher

Leia mais

Internet. Protocolos. Principais Serviços. E-MAIL Chat TELNET FTP. Definições Básicas

Internet. Protocolos. Principais Serviços. E-MAIL Chat TELNET FTP. Definições Básicas Internet A Internet surgiu a partir de um projeto da agência norte-americana ARPA com o objetivo de conectar os computadores dos seus departamentos de pesquisa. Essa conexão iniciou-se em 1969, entre 4

Leia mais

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br Desenvolvimento de Aplicações Web Programação Contextualização de aplicações Web: navegadores e servidores como interpretadores, tecnologias do lado do cliente (XHTML, CSS, Javascript) e do lado do servidor

Leia mais

Ajax Asynchronous JavaScript and Xml

Ajax Asynchronous JavaScript and Xml Ajax Asynchronous JavaScript and Xml Ajax permite construir aplicações Web mais interactivas, responsivas, e fáceis de usar que aplicações Web tradicionais. Numa aplicação Web tradicional quando se prime

Leia mais

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico. A Web e o HTTP Web Até a década de 1990, a Internet era utilizada por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico. Então, no início dessa década, iniciou-se

Leia mais

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web Introdução Formulários rios & Conteúdo Dinâmico Mário Antonio Meireles Teixeira Dept o. de Informática - UFMA A Web surgiu inicialmente como uma nova forma de comunicação de informações, fazendo uso de

Leia mais

OWASP. The OWASP Foundation http://www.owasp.org. As 10 mais críticas vulnerabilidades de segurança em Aplicações Web

OWASP. The OWASP Foundation http://www.owasp.org. As 10 mais críticas vulnerabilidades de segurança em Aplicações Web As 10 mais críticas vulnerabilidades de segurança em Aplicações Web Carlos Serrão Portugal ISCTE/DCTI/Adetti/NetMuST Abril, 2009 carlos.serrao@iscte.pt carlos.j.serrao@gmail.com Copyright 2004 - The Foundation

Leia mais

HTML - 7. Vitor Vaz da Silva Paula Graça

HTML - 7. Vitor Vaz da Silva Paula Graça HTML - 7 Vitor Vaz da Silva Paula Graça 1 Formulários Os formulários forms no HTML, são utilizados para a introdução de dados de uma determinada aplicação Os programas JavaScript têm como um dos seus maiores

Leia mais

Programação web Prof. Wladimir

Programação web Prof. Wladimir Programação web Prof. Wladimir Linguagem PHP Cookie e Sessão @wre2008 1 Sumário Header; Cookie; Sessão; Exemplos. @wre2008 2 Header Esta função permite que um script php redirecione para outra página.

Leia mais

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia3.zip dezembro 1995 Tutorial - Autoria em World Wide Web

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia3.zip dezembro 1995 Tutorial - Autoria em World Wide Web RNP REDE NACIONAL DE PESQUISA Centro Regional de Brasília CR/DF ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia3.zip dezembro 1995 Tutorial - Autoria em World Wide Web Parte III - Hypertext

Leia mais

5/10/10. Implementação. Building web Apps. Server vs. client side. How to create dynamic contents?" Client side" Server side"

5/10/10. Implementação. Building web Apps. Server vs. client side. How to create dynamic contents? Client side Server side 5/10/10 Implementação Mestrado em Informática Universidade do Minho! 6! Building web Apps How to create dynamic contents?" Client side" Code runs on the client (browser)" Code runs on a virtual machine

Leia mais

PHP. Hypertext Pre-Processor

PHP. Hypertext Pre-Processor PHP Hypertext Pre-Processor O que é o PHP? Uma linguagem de scripting é uma linguagem cujo código não tem de ser compilado para ser executado! O código escrito é interpretado em tempo de execução para

Leia mais

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Universidade Federal do Espírito Santo CCA UFES Programação WEB Desenvolvimento de Sistemas para WEB

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Departamento de Informática Unidades Curriculares Serviços de Acesso a Informação Licenciatura em Tecnologias e Sistemas de Informação Cap. 6 - Sumário ü Introdução ü World

Leia mais

HyperText Transfer Protocol (HTTP)

HyperText Transfer Protocol (HTTP) Programação Na Web HyperText Transfer Protocol () António Gonçalves Arquitectura Protocolo de transporte de documentos hypertexto RFC 1945 - Versão 1.0 RFC 2616 - Versão 1.1 O pedido é feito em ASCII e

Leia mais

O código acima descreve o formulário com uma caixa de texto e dois botões

O código acima descreve o formulário com uma caixa de texto e dois botões Formulários Formulários permitem que os usuários interajam com um servidor Web passando informações. Assim, através da Web, se pode ler e gravar informações em Banco de Dados, gerando enormes possibilidades

Leia mais

Formulários HTML. Envio de Informação para o servidor

Formulários HTML. Envio de Informação para o servidor Programação Na Web Formulários HTML Envio de Informação para o servidor 1 António Gonçalves Agenda Envio de dados através de formulários A Marca FORM Controle para Text Botões tipo Push Botões Check boxes

Leia mais

Input de dados a partir de formulários HTML

Input de dados a partir de formulários HTML Input de dados a partir de formulários HTML Entrada (input) de dados do utilizador é feito através de uma : tabuada tabuada dos:

Leia mais

Laboratório 4 Validação do Formulário

Laboratório 4 Validação do Formulário Laboratório 4 Validação do Formulário Introdução Agora que já definimos os nossos documentos usando xhtml e já os embelezámos através da utilização das CSS, está na hora de validar a informação que o utilizador

Leia mais

MANUAL DO UTILIZADOR DE REDE

MANUAL DO UTILIZADOR DE REDE MANUAL DO UTILIZADOR DE REDE Guardar o registo de impressão na rede Versão 0 POR Definições de notas Ao longo do Manual do utilizador, é utilizado o seguinte ícone: Notas sobre como enfrentar situações

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Web Container: e JSP Sumário Protocolo HTTP Exemplos de JSP (Java Server Pages) Exemplos JSP 2 Protocolo HTTP URL: Um URL (Uniform

Leia mais

LAB08 Protocolo HTTP Servidor Apache

LAB08 Protocolo HTTP Servidor Apache LAB08 Protocolo HTTP Servidor Apache A. Protocolo HTTP Neste exercício vamos utilizar a aplicação telnet, ligar-nos directamente à porta TCP 80 do servidor web, e familiarizarmo-nos com os comandos do

Leia mais

APLICAÇÕES E SERVIÇOS WEB

APLICAÇÕES E SERVIÇOS WEB http://tutorials.jenkov.com/web-services/message-formats.html APLICAÇÕES E SERVIÇOS WEB Laboratórios de Informática 2014-2015 João Paulo Barraca, André Zúquete, Diogo Gomes Aplicações WEB A maioria de

Leia mais

Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy?

Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy? Redes de Computadores Aulas Práticas Implementação de um Proxy HTTP Material de suporte às aulas de Redes de Computadores Copyright DI FCT/UNL / 1 O que é um proxy? Genericamente é um processo que actua

Leia mais

Tarefas práticas da disciplina

Tarefas práticas da disciplina Tarefas práticas da disciplina Objetivo: As atividades têm por objetivo consolidar os conceitos de redes de computadores, aplicando os conceitos teóricos de forma a desenvolver no estudante a capacidade

Leia mais

O protocolo HTTP. O que é o protocolo HTTP?

O protocolo HTTP. O que é o protocolo HTTP? O protocolo HTTP Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP. Quais são as partes de um a resposta HTTP. IIS - HTTP 1 O que é o protocolo HTTP? Hyper

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome

O espaço de nomes DNS Registros de recursos de domínio Servidores de nome DNS Sistema de Nomes de Domínio O espaço de nomes DNS Registros de recursos de domínio Servidores de nome Camada de Aplicação DNS Telnet e SSH SNMP SMTP, POP e IMAP WWW FTP O espaço de nomes DNS Parte

Leia mais

Sistemas de Telecomunicações

Sistemas de Telecomunicações Departamento de Engenharia Electrotécnica Sistemas de Telecomunicações 2014/2015 Trabalho 1: Aplicação sobre sockets procurador web Mestrado integrado em Engenharia Eletrotécnica e de Computadores http://tele1.dee.fct.unl.pt

Leia mais

Este arquivo é parte integrante do CD MEGA CURSOS Acesse - www.megacursos.com.br PERL CURSOMASTER 2003

Este arquivo é parte integrante do CD MEGA CURSOS Acesse - www.megacursos.com.br PERL CURSOMASTER 2003 PERL CURSOMASTER 2003 1 SUMÁRIO INTRODUÇÃO......4 I O QUE É PERL...5 1.1- Desenvolvimento Rápido...5 1.2- Segurança...5 1.3-Exemplo de Programa escrito em Perl...5 II - TIPOS DE VARIÁVEIS...6 2.1-Variáveis

Leia mais

Tecnologias para apresentação de dados - HTML. Aécio Costa

Tecnologias para apresentação de dados - HTML. Aécio Costa Tecnologias para apresentação de dados - HTML Aécio Costa Apresentação de Dados na Web Tecnologias client-side HTML CSS JavaScript HyperText Markup Language Uma linguagem de marcação utilizada para produzir

Leia mais

Ajax Asynchronous JavaScript and Xml

Ajax Asynchronous JavaScript and Xml Ajax Asynchronous JavaScript and Xml Ajax permite construir aplicações Web mais interativas, responsivas, e fáceis de usar que aplicações Web tradicionais. Numa aplicação Web tradicional quando se prime

Leia mais

PHP (Seções, Cookies e Banco de Dados)

PHP (Seções, Cookies e Banco de Dados) PHP (Seções, Cookies e Banco de Dados) André Tavares da Silva andre.silva@udesc.br Seções Basicamente, as seções são métodos que preservam determinados dados ativos enquanto o navegador do cliente estiver

Leia mais

Curso De PHP. Aula 4. Formulários. Cookies. Session. Mail

Curso De PHP. Aula 4. Formulários. Cookies. Session. Mail Curso De PHP Aula 4 Formulários Cookies Session Mail Formulários Nós preenchemos diariamente diversos formulários web, seja para se logar e-mail ou criar uma conta em um site. Nesta parte do curso, vamos

Leia mais

Helder da Rocha. Criação de. Web Sites II. Servidor Web Aplicações Web Programas CGI e SSI. Rev.: CWS2-04-2000/01 A4

Helder da Rocha. Criação de. Web Sites II. Servidor Web Aplicações Web Programas CGI e SSI. Rev.: CWS2-04-2000/01 A4 Helder da Rocha Criação de Web Sites II Servidor Web Aplicações Web Programas CGI e SSI Rev.: CWS2-04-2000/01 A4 Copyright 2000 por Helder Lima Santos da Rocha. Todos os direitos reservados. Os direitos

Leia mais

Apresentação de REDES DE COMUNICAÇÃO

Apresentação de REDES DE COMUNICAÇÃO Apresentação de REDES DE COMUNICAÇÃO Curso Profissional de Técnico de Gestão e Programação de Sistemas Informáticos MÓDULO VII Acesso a Bases de Dados via Web Duração: 50 tempos Conteúdos (1) Conceitos

Leia mais

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner Objetivo Disseminar boas práticas para o desenvolvimento de código seguro em php. Exemplificar como são feitos os ataques e suas respectivas

Leia mais

Impressão do Manual do Utilizador

Impressão do Manual do Utilizador bibliopac Interface WWW Versão 2003 Guia de instalação rápida Junho 2003 ATENÇÃO! Impressão do Manual do Utilizador No CD de instalação está disponível o ficheiro Interface WWW Manual.PDF. Este manual,

Leia mais

> Herbet Ferreira Rodrigues > contato@herbetferreira.com

> Herbet Ferreira Rodrigues > contato@herbetferreira.com Curso HTML & CSS > Herbet Ferreira Rodrigues > contato@herbetferreira.com Sumário > Apresentação > Introdução ao HTML História Começando a Programar > Tags em HTML Headings (Cabeçalhos) Parágrafos Formatação

Leia mais

Capítulo 4. Programação em ASP

Capítulo 4. Programação em ASP Índice: CAPÍTULO 4. PROGRAMAÇÃO EM ASP...2 4.1 REGISTRAR...2 4.1.1 Códigos para configuração do objeto...2 4.1.2 Formulário para transferir dados da impressão digital...3 4.1.3 Código Javascript para registro

Leia mais

Linguagem de Programação III Aula 2 Revisão Parte II

Linguagem de Programação III Aula 2 Revisão Parte II Linguagem de Programação III Aula 2 Revisão Parte II Prof. Moser Fagundes Curso Técnico em Informática (Modalidade Integrada) Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas Revisão de PHP

Leia mais

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto Java Enterprise Edition by Antonio Rodrigues Carvalho Neto Enterprise Edition Architecture O que é Java Enterprise Edition? Java EE é uma plataforma que reune diversas especificações relacionadas a computação

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

Aula 05 HTML FORMULÁRIOS Prof. Daniela Pires Sumário

Aula 05 HTML FORMULÁRIOS Prof. Daniela Pires Sumário Sumário FORMULÁRIO EM HTML... 2 FORM... 2 ACTION... 2 METHOD... 2 INPUT... 2 INPUT TYPE TEXT... 2 INPUT TYPE PASSWORD... 2 CHECKBOX - Múltipla escolha... 4 RADIO - Escolha única... 4 Botões de ação...

Leia mais

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes Desenvolvimento Web XHTML Formulários Prof. Bruno E. G. Gomes 2014 Introdução Um recurso bastante utilizado no desenvolvimento Web é o envio de dados de uma página para o servidor quando fornecemos informações,

Leia mais

4. A Linguagem JavaScript

4. A Linguagem JavaScript 4. A Linguagem JavaScript! A linguagem XHTML, por não ser uma linguagem de programação e sim uma linguagem de marcação, não permite interação entre o usuário e a página, além de clicar em um link, fazendo

Leia mais

7. Recursos PHP para a Internet

7. Recursos PHP para a Internet 7. Recursos PHP para a Internet Protocolo HTTP. Na aula passada vimos um script simples de autenticação de usuários. Neste script foi usado o tag META para passar uma URL ao servidor web. A linguagem PHP

Leia mais

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Procuraremos mostrar os principais procedimentos para fazer um cadastro de registros numa base de dados MySQL utilizando a linguagem

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática 1 Este é o seu teste de avaliação de frequência. Leia as perguntas com atenção antes de responder. Escreva as suas respostas nesta folha de teste, marcando um círculo em volta da opção ou opções que considere

Leia mais

A autoria - II. A autoria - II. Tecnologias básicas da Web. A autoria - II. 2001 Wilson de Pádua Paula Filho. Tópicos:

A autoria - II. A autoria - II. Tecnologias básicas da Web. A autoria - II. 2001 Wilson de Pádua Paula Filho. Tópicos: A autoria - II Tópicos: A autoria - II World Wide Web hipermídia na Internet: sítios Web: páginas de hipertexto; material multimídia; aplicativos Web: muitos tipos de tecnologias de software: scripts,

Leia mais

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP Alan Jelles Lopes Ibrahim, alan.jelles@hotmail.com Eduardo Machado Real, eduardomreal@uems.br

Leia mais

Algumas informações sobre a rede informática do ISA

Algumas informações sobre a rede informática do ISA Algumas informações sobre a rede informática do ISA Fernanda Valente Graça Abrantes A grande maioria dos computadores do Instituto Superior de Agronomia estão ligados entre si constituindo uma Intranet,

Leia mais

HTML (Hyper Text Markup Language) É a linguagem com que se escrevem as páginas web;

HTML (Hyper Text Markup Language) É a linguagem com que se escrevem as páginas web; HTML Introdução Introdução ao HTML HTML (Hyper Text Markup Language) É a linguagem com que se escrevem as páginas web; É uma linguagem de hipertexto; Permite escrever texto de forma estruturada, que está

Leia mais

Tecnologias para Web Design

Tecnologias para Web Design Tecnologias para Javascript e DOM Introdução à Scripts Um script do lado cliente é um programa que acompanha um documento HTML Pode estar incluído no próprio documento embutido ou acompanha-lo num arquivo

Leia mais

World Wide Web e Aplicações

World Wide Web e Aplicações World Wide Web e Aplicações Módulo H O que é a WWW Permite a criação, manipulação e recuperação de informações Padrão de fato para navegação, publicação de informações e execução de transações na Internet

Leia mais

Teia de alcance mundial (World Wide Web WWW) Web composta de

Teia de alcance mundial (World Wide Web WWW) Web composta de Web Teia de alcance mundial (World Wide Web WWW) Web composta de Agentes de usuário para a Web (browsers) Servidores Web Protocolo de transferência de hipertexto (HyperText Transfer Protocol HTTP) Web

Leia mais

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] ) Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Introdução. HyperText Markup Language HTML. Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário

Introdução. HyperText Markup Language HTML. Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário Introdução HyperText Markup Language HTML Formulário Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br http://professor.ifsertao-pe.edu.br/nicolas.trigo/ O usuário interage com os serviços

Leia mais

SECRETARIA DA JUSTIÇA E DEFESA DA CIDADANIA FUNDAÇÃO DE PROTEÇÃO E DEFESA DO CONSUMIDOR - PROCON/SP MANUAL DE INSTALAÇÃO DO SISTEMA

SECRETARIA DA JUSTIÇA E DEFESA DA CIDADANIA FUNDAÇÃO DE PROTEÇÃO E DEFESA DO CONSUMIDOR - PROCON/SP MANUAL DE INSTALAÇÃO DO SISTEMA MANUAL DE INSTALAÇÃO DO SISTEMA 1. INTRODUCÃO Este manual tem como objetivo orientar o usuário durante o processo de instalação do SIGA Sistema Global de Atendimento. 2 de 27 2. PRÉ-REQUISITOS DE INSTALAÇÃO

Leia mais

Instalando servidor Apache

Instalando servidor Apache Instalando servidor Apache Apache é um software livre de código aberto que corre mais de 50% dos servidores web do mundo. Para instalar o apache, abra um terminal e digite o comando: 1- # yum install httpd

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server Índice Resumo sobre este documento... 3 Integrando o IBM HTTP Server com o IBM WebSphere Application Server... 3

Leia mais

Bibliografia. Pedro Quaresma 2008/2009. A diferença entre um manual (de estudo), e um manual de referência.

Bibliografia. Pedro Quaresma 2008/2009. A diferença entre um manual (de estudo), e um manual de referência. Bibliografia Programação Avançada Pedro Quaresma Departamento de Matemática Faculdade de Ciências e Tecnologia Universidade de Coimbra 2008/2009 PHP and MySQL Web Development (3rd Edition) Luke Welling,

Leia mais

Meta Programming. Nelson Ferraz nferraz@gmail.com

Meta Programming. Nelson Ferraz nferraz@gmail.com Meta Programming Nelson Ferraz nferraz@gmail.com Resumo Meta Programming Code Generation AppML 23/11/07 Nelson Ferraz 2 Meta Programming Programas que manipulam programas Geração de

Leia mais

Criação de Web Sites II. Formulários HTTP e CGI

Criação de Web Sites II. Formulários HTTP e CGI Criação de Web Sites II Formulários HTTP e CGI Conteúdo 6. Formulários... 65 6.1. Elemento ... 65 Botões de envio... 66 Entrada e envio de dados... 66 Múltiplos campos de entrada de dados... 67 Outros

Leia mais

1 Introdução. O sistema permite:

1 Introdução. O sistema permite: A intenção deste documento é demonstrar as possibilidades de aplicação da solução INCA Insite Controle de Acesso - para controle de conexões dia-up ou banda larga à Internet e redes corporativas de forma

Leia mais

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON) Márcio Koch 1 Currículo Formado na FURB em Ciência da Computação Pós graduado em Tecnologias para o desenvolvimento de aplicações web Mestrando em Computação Gráfica na UDESC Arquiteto de software na Senior

Leia mais

Pen-test de Aplicações Web: Técnicas e Ferramentas

Pen-test de Aplicações Web: Técnicas e Ferramentas Divisão de Informática - DINF MJ Departamento de Polícia Federal Pen-test de Aplicações Web: Técnicas e Ferramentas Ivo de Carvalho Peixinho Perito Criminal Federal Agenda 1. Introdução 2. Ferramentas

Leia mais

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora. www.novateceditora.com.br

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora. www.novateceditora.com.br Guia de Consulta Rápida HTTP Décio Jr. Novatec Editora www.novateceditora.com.br Guia de Consulta Rápida HTTP de Décio Jr. Copyright 2001 da Novatec Editora Ltda. Todos os direitos reservados. É proibida

Leia mais

6. Introdução à Linguagem PHP

6. Introdução à Linguagem PHP 6. Introdução à Linguagem PHP A comunicação na Web exige dois agentes: o cliente web e o servidor web. O cliente requer informação (a partir de uma página HTML acessada pelo navegador) e o servidor fornece

Leia mais

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1 Segurança na Web Capítulo 9: Segurança em Aplicações Web Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW Page 1 Introdução Quando se fala em segurança na WEB é preciso pensar inicialmente em duas frentes:

Leia mais

WWW - World Wide Web

WWW - World Wide Web WWW World Wide Web WWW Cap. 9.1 WWW - World Wide Web Idéia básica do WWW: Estratégia de acesso a uma teia (WEB) de documentos referenciados (linked) em computadores na Internet (ou Rede TCP/IP privada)

Leia mais

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza Sessions e Cookies progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net Cookies e Sessions Geralmente, um bom projeto

Leia mais

ArcGIS 10.1 - Instalação e Licenciamento

ArcGIS 10.1 - Instalação e Licenciamento ArcGIS 10.1 - Instalação e Licenciamento Este documento descreve os passos necessários para efectuar o download, instalação e activação das licenças de ArcGIS 10.1. Efectuar o download do software Extracção

Leia mais

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache

Capítulo 7. Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache Capítulo 7 Hyper Text Transfer Protocol (HTTP). Serviço Apache. - Protocolo HTTP - Sessão HTTP - Configuração do serviço Apache Gestão de Redes e Serviços (GRS) Capítulo 7 1/1 Protocolo HTTP Funciona na

Leia mais

Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18

Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18 Hyper Text Transfer Protocol (HTTP) ADI HTTP 1/18 Protocolo HTTP Funciona na filosofia cliente-servidor sobre o protocolo TCP na porta 80 Cliente tcp 80 Servidor Web Netscape, iexplorer, opera ( apache,

Leia mais

PHP é um acrónimo para Hypertext Preprocessor.

PHP é um acrónimo para Hypertext Preprocessor. PHP 101 O que é o PHP? PHP é um acrónimo para Hypertext Preprocessor. É uma linguagem de scripting open-source que funciona do lado do servidor e é usada para gerar páginas web dinâmicas. Os scripts de

Leia mais

Documentação de Integração ao Human Gateway

Documentação de Integração ao Human Gateway Documentação de Integração ao Human Gateway Documentação de Integração v1.20 10 de Agosto de 2009 Índice 1 Sobre este documento... 3 2 Uso Geral da Interface... 4 3 Dicas Gerais Sobre a Integração... 5

Leia mais

Interface Web services

Interface Web services Declarações Electrónicas Interface Web services DGCI, 2008/06/18 Objectivo Promover a integração de aplicações remotas com os Web services fornecidos pela DGITA para a submissão de declarações fiscais

Leia mais

Manual de Boas Práticas

Manual de Boas Práticas MINISTÉRIO DA EDUCAÇÃO E CIÊNCIA Serviços de Informática da Universidade Aberta Manual de Boas Práticas Temas: Cuidados a ter com os anexos do correio eletrónico (email) Navegar na internet de forma segura:

Leia mais

O que é o Javascript?

O que é o Javascript? O que é o Javascript? JavaScript é uma linguagem para criação de Home-Pages. Funções escritas em JavaScript podem ser embutidas dentro de seu documento HTML. Com JavaScript você tem muitas possibilidades

Leia mais