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 (@name_value_pairs) { 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" " <html xmlns=" 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( " ); 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 (@values, $key); print $q->h2("here are the current settings:"); foreach $key ($q->param) { print $q->strong("$key : = $q->param($key); print join(", ",@values), $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

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

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

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

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

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

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança 3 SERVIÇOS IP 3.1 Serviços IP e alguns aspectos de segurança Os serviços IP's são suscetíveis a uma variedade de possíveis ataques, desde ataques passivos (como espionagem) até ataques ativos (como a impossibilidade

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

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

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

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

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

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

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

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

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

COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE. Rui Ribeiro colibri@fccn.pt. FCCN - Dezembro 2010

COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE. Rui Ribeiro colibri@fccn.pt. FCCN - Dezembro 2010 COLIBRI Ambiente Colaborativo Multimédia MÓDULO MOODLE FCCN - Dezembro 2010 Rui Ribeiro colibri@fccn.pt Módulo COLIBRI Concebido por: José Coelho Universidade Aberta Apoiado por: Rui Ribeiro FCCN Vitor

Leia mais

Escola Superior de Tecnologia de Setúbal. Projecto Final

Escola Superior de Tecnologia de Setúbal. Projecto Final Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Projecto Final Computação na Internet Ano Lectivo 2002/2003 Portal de Jogos Executado por:

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

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

1 2 3 W O R K S H O P 4 5 6 W O R K S H O P 7 W O R K S H O P 8 9 10 Instruções gerais para a realização das Propostas de Actividades Para conhecer em pormenor o INTERFACE DO FRONTPAGE clique aqui 11 CONSTRUÇÃO

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

Java Mail Server. Manual do Utilizador

Java Mail Server. Manual do Utilizador Java Mail Server Manual do Utilizador Introdução às Redes e Comunicações 2002/2003 Java Mail Client Janela de Ligação O Java Mail Client (JMC), assim que é inicializado, mostra uma janela que irá possibilitar

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

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco Escola Superior de Tecnologia Instituto Politécnico de Castelo Branco Departamento de Informática Curso de Engenharia Informática Disciplina de Projecto de Sistemas Industriais Ano Lectivo de 2005/2006

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

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR MANUAL DO UTILIZADOR Versão 1.3 ÍNDICE 1. INTRODUÇÃO 2 2. INSTALAÇÃO E CONFIGURAÇÃO 3 2.1 INSTALAÇÃO 3 Instalar o Pacweb 3 Alterar o Ficheiro Default.htm 3 Criar um Virtual Directory 3 2.2 CONFIGURAÇÃO

Leia mais

Um sistema SMS 1 simplificado

Um sistema SMS 1 simplificado 1 Introdução Um sistema SMS 1 simplificado Projecto de Redes de Computadores I - 2007/2008 LEIC IST, Tagus Park 10 de Setembro de 2007 Pretende-se com este projecto que os alunos implementem um sistema

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

O que é o JavaScript?

O que é o JavaScript? JavaScript Introdução O JavaScript é utilizado por milhões de páginas na web para melhorar o design, validar forms, e muito mais O JavaScript foi inicialmente desenvolvido pela Netscape e é a linguagem

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

MANUAL DE CONFIGURAÇÃO -ZIMBRA- Ajuda na configuração e utilização do cliente de correio eletrónico

MANUAL DE CONFIGURAÇÃO -ZIMBRA- Ajuda na configuração e utilização do cliente de correio eletrónico MANUAL DE CONFIGURAÇÃO -ZIMBRA- Ajuda na configuração e utilização do cliente de correio eletrónico Índice Autenticação Pela Primeira Vez... 3 Utilização do Zimbra... 4 Como Aceder... 4 Como fazer Download

Leia mais

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle Luís Filipe Borges Pinto Resumo: Este projecto consiste na implementação de uma aplicação WEB para monitorização

Leia mais

Forms Authentication em ASP.NET

Forms Authentication em ASP.NET Forms Authentication em ASP.NET Em muitos sites web é necessário restringir selectivamente o acesso a determinadas áreas, ou páginas, enquanto para outras páginas pode permitir-se acesso livre. ASP.NET

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

Aplicação Prática de Lua para Web

Aplicação Prática de Lua para Web Aplicação Prática de Lua para Web Aluno: Diego Malone Orientador: Sérgio Lifschitz Introdução A linguagem Lua vem sendo desenvolvida desde 1993 por pesquisadores do Departamento de Informática da PUC-Rio

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

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

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

Introdução. História. Como funciona

Introdução. História. Como funciona Introdução O HTML é uma linguagem de marcação utilizada para desenvolvimento de sites. Esta linguagem surgiu junto com o HTTP, ambos possibilitaram a internet ser popularizada. História O HTML foi criado

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

Cookies. Krishna Tateneni Jost Schenck Tradução: José Pires

Cookies. Krishna Tateneni Jost Schenck Tradução: José Pires Krishna Tateneni Jost Schenck Tradução: José Pires 2 Conteúdo 1 Cookies 4 1.1 Política............................................ 4 1.2 Gestão............................................ 5 3 1 Cookies

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

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

EMULADOR 3270 VIA WEB BROWSER

EMULADOR 3270 VIA WEB BROWSER EMULADOR 3270 VIA WEB BROWSER Host On-Demand - HOD Versão 6.0 Fev/2002 Suporte Técnico: Central de Atendimento SERPRO CAS 0800-782323 Gilson.Pereira@serpro.gov.br Marcio.Nunes@serpro.gov.br O que é o serviço

Leia mais

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A Módulo 18 Ferramentas de Desenvolvimento de Páginas Web Criar uma relação mestre-detalhe 1. Cria uma cópia da página «listaferram.php»

Leia mais

2.3. PHP Tipos de dados e operadores

2.3. PHP Tipos de dados e operadores Programação para Internet II 2.3. PHP Tipos de dados e operadores Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Tipos de dados Embora não seja necessário declarar os tipos de dados das variáveis,

Leia mais

Acronis Servidor de Licença. Manual do Utilizador

Acronis Servidor de Licença. Manual do Utilizador Acronis Servidor de Licença Manual do Utilizador ÍNDICE 1. INTRODUÇÃO... 3 1.1 Descrição geral... 3 1.2 Política de licenças... 3 2. SISTEMAS OPERATIVOS SUPORTADOS... 4 3. INSTALAR O SERVIDOR DE LICENÇA

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Comunicação entre Processos - Sistemas Operacionais fornecem mecanismos para comunicação entre processos (IPC), tal como filas de mensagens, semáfaros e memória compartilhada.

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

Guia de Instalação do "Google Cloud Print"

Guia de Instalação do Google Cloud Print Guia de Instalação do "Google Cloud Print" Versão A POR Definições de notas Ao longo deste manual do utilizador, é utilizado o estilo de nota seguinte: As Notas indicam o que fazer se ocorrerem determinadas

Leia mais

Agentes Inteligentes segundo o Chimera

Agentes Inteligentes segundo o Chimera Agentes Inteligentes segundo o Chimera C Heuristic I M E R A No ambiente de desenvolvimento de Agentes Inteligentes Chimera, uma extensão do LPA Win-Prolog, um agente é funcionalmente composto por: Código,

Leia mais

Formador: Paulo Ramos IGRI13: Rui Bárcia Nº15. Windows 2008 Server. Módulo 16. Instalação e configuração

Formador: Paulo Ramos IGRI13: Rui Bárcia Nº15. Windows 2008 Server. Módulo 16. Instalação e configuração Formador: Paulo Ramos IGRI13: Rui Bárcia Nº15 Módulo 16 Windows 2008 Server Instalação e configuração Roles DNS Nº 001 Começamos por selecionar o Server Manager. Roles DNS Nº 002 Visualização da janela

Leia mais

1.1 Porque um nível de aplicação proxy?

1.1 Porque um nível de aplicação proxy? 1.0 Introdução Os proxies são principalmente usados para permitir acesso à Web através de um firewall (fig. 1). Um proxy é um servidor HTTP especial que tipicamente roda em uma máquina firewall. O proxy

Leia mais

CONFIGURAÇÃO DO ACESSO REMOTO PARA HS-DHXX93 E HS-DHXX96

CONFIGURAÇÃO DO ACESSO REMOTO PARA HS-DHXX93 E HS-DHXX96 CONFIGURAÇÃO DO ACESSO REMOTO PARA HS-DHXX93 E HS-DHXX96 1 CONFIGURAR PARÂMETROS DE REDE DO DVR Para maior fiabilidade do acesso remoto é recomendado que o DVR esteja configurado com IP fixo (também pode

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

www.coldfusionbrasil.com.br

www.coldfusionbrasil.com.br www.coldfusionbrasil.com.br 2000 PASSANDO VARIÁVEIS ATRAVÉS DE FORM E URL 3 ALTERA.CFM 3 FORMALTERA.CFM 4 ALTERA.CFM 4 FORMALTERA.CFM 4 CRIANDO E MANIPULANDO VARIÁVEIS COM CFSET 4 VALORES ESTÁTICOS 5 PARÂMETROS

Leia mais

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa? Que tipo de navegadores são suportados? Preciso permitir 'cookies' O que são 'cookies' da sessão? O sistema está pedindo que eu faça meu login novamente e diz que minha sessão expirou. O que isso significa?

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

ZS Rest. Manual Avançado. Ementas : Email e SMS. v2011

ZS Rest. Manual Avançado. Ementas : Email e SMS. v2011 Manual Avançado Ementas : Email e SMS v2011 1. Índice 2. INTRODUÇÃO... 2 3. INICIAR O ZSRest FrontOffice... 3 1 4. CONFIGURAÇÃO INICIAL... 4 b) Configurar E-Mail... 4 c) Configurar SMS... 5 i. Configurar

Leia mais

JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem

JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem 1 JSP trata-se de uma tecnologia que possibilita o desenvolvimento de páginas web dinâmicas utilizando todas as potencialidades do Java como linguagem orientada a objectos. Tal como em ASP e PHP, os ficheiros

Leia mais

INTRODUÇÃO: 1 - Conectando na sua conta

INTRODUÇÃO: 1 - Conectando na sua conta INTRODUÇÃO: Com certeza a reação da maioria dos que lerem esse mini manual e utilizarem o servidor vão pensar: "mas porque eu tenho que usar um console se em casa eu tenho uma interface gráfica bonito

Leia mais

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais Brad Hards Tradução: Pedro Morais 2 Conteúdo 1 Introdução 5 2 O protocolo do Remote Frame Buffer 6 3 Utilizar o Desktop Sharing 7 3.1 Gerir convites do Desktop Sharing............................ 9 3.2

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

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Lista de Erros Discador Dial-Up

Lista de Erros Discador Dial-Up Lista de Erros Discador Dial-Up Erro Código Descrição Ok 1 Usuário autenticado com sucesso e conexão encerrada pelo usuário OK 11 Usuário autenticado com sucesso e discador terminado pelo usuário OK 21

Leia mais

Editor Eclipse para Programas F

Editor Eclipse para Programas F Editor Eclipse para Programas F Guia de instalação e utilização Instalação no Windows (XP/Vista) Comece por descarregar a aplicação de instalação setupcp2008.exe do endereço http://www.math.ist.utl.pt/~jabr/cp/

Leia mais

Módulo 3936 ASP.NET. Financiado pelo FSE

Módulo 3936 ASP.NET. Financiado pelo FSE 2 EISnt Centro de Formação Profissional, Engenharia Informática e Sistemas, Novas Tecnologias, Lda Avª D. João I, nº 380/384 Soutelo 4435-208 Rio Tinto Portal Internet : www.eisnt.com E-Mail : formação@eisnt.com

Leia mais

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH) TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! Autoria e revisão por: PET Sistemas

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

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira

WEBDESIGN. Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira WEBDESIGN Professor: Paulo Trentin paulo@paulotrentin.com.br http://www.paulotrentin.com.br Escola CDI de Videira 1 CDI - Curso de Webdesign - Prof. Paulo Trentin Objetivos para esta aula Debater sobre

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

www.victorpinheiro.jimdo.com www.victorpinheiro.jimdo.com

www.victorpinheiro.jimdo.com www.victorpinheiro.jimdo.com SERVIÇOS DE REDES DE COMPUTADORES Prof. Victor Guimarães Pinheiro/victor.tecnologo@gmail.com www.victorpinheiro.jimdo.com www.victorpinheiro.jimdo.com Modelo TCP/IP É o protocolo mais usado da atualidade

Leia mais

Manual de Administração Intranet BNI

Manual de Administração Intranet BNI Manual de Administração Intranet BNI Fevereiro - 2010 Índice 1. Apresentação... 3 2. Conceitos... 5 3. Funcionamento base da intranet... 7 3.1. Autenticação...8 3.2. Entrada na intranet...8 3.3. O ecrã

Leia mais

PROGRAMAÇÃO WEB DO LADO DO CLIENTE

PROGRAMAÇÃO WEB DO LADO DO CLIENTE PROGRAMAÇÃO WEB DO LADO DO CLIENTE FORMULÁRIO Na linguagem HTML é permitido que o usuário interaja com o servidor através de formulários ligados a scripts desenvolvidos em linguagens como PHP, Servlets,

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

INSTALANDO E CONFIGURANDO O MY SQL

INSTALANDO E CONFIGURANDO O MY SQL INSTALANDO E CONFIGURANDO O MY SQL Este tutorial tem como objetivo mostrar como instalar o banco de dados My SQL em ambiente Windows e é destinado aqueles que ainda não tiveram um contato com a ferramenta.

Leia mais

Internet Update de PaintManager TM. Manual de instalação e utilização do programa de actualização

Internet Update de PaintManager TM. Manual de instalação e utilização do programa de actualização Internet Update de PaintManager TM Manual de instalação e utilização do programa de actualização ÍNDICE O que é o programa Internet Update? 3 Como se instala e executa o programa? 3 Aceder ao programa

Leia mais

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro

ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE. André Esteves nº3412 David Monteiro ENHANCED SERVER FAULT- TOLERANCE FOR IMPROVED USER EXPERIENCE André Esteves nº3412 David Monteiro INTRODUÇÃO É proposto uma arquitectura de servidor Web dividida que tolera perfeitamente tanto falhas na

Leia mais

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org)

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org) J820 Testes de interface Web com HttpUnit Helder da Rocha (helder@acm.org) O que é HttpUnit API Java para comunicação com servidores HTTP Permite que programas construam e enviem requisições, e depois

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

Sistema de impressão da Divisão de Informática

Sistema de impressão da Divisão de Informática Sistema de impressão da Índice 1Introdução... 4 2Configuração de impressoras no sistema MacOS X...5 2.1Instalação de Papercut...5 2.2Adição de impressoras...8 2.3Observações MacOS X...10 3Instalação de

Leia mais

Conteúdo Programático de PHP

Conteúdo Programático de PHP Conteúdo Programático de PHP 1 Por que PHP? No mercado atual existem diversas tecnologias especializadas na integração de banco de dados com a WEB, sendo o PHP a linguagem que mais se desenvolve, tendo

Leia mais

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007

SAFT para siscom. Manual do Utilizador. Data última versão: 07.11.2008 Versão: 1.01. Data criação: 21.12.2007 Manual do Utilizador SAFT para siscom Data última versão: 07.11.2008 Versão: 1.01 Data criação: 21.12.2007 Faro R. Dr. José Filipe Alvares, 31 8005-220 FARO Telf. +351 289 899 620 Fax. +351 289 899 629

Leia mais

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito Mais informação Acesso ao Sistema de Transferência Electrónica de dados de Inquéritos (STEDI). Onde se acede ao sistema de entrega de Inquéritos? Deverá aceder ao sistema através do site do GEP www.gep.mtss.gov.pt

Leia mais

4.1. TRABALHAR COM O CALENDÁRIO

4.1. TRABALHAR COM O CALENDÁRIO Calendário 2Calendário 14 INTRODUÇÃO O Calendário é uma grande ferramenta do Outlook que se pode usar como livro de reuniões para escalonar eventos, aperceber-se de datas importantes e gerir a lista de

Leia mais

Linux - Servidor de Redes

Linux - Servidor de Redes Linux - Servidor de Redes Servidor Web Apache Prof. Roberto Amaral WWW Breve histórico Início 1989 CERN (Centro Europeu de Pesquisas Nucleares) precisava de um meio de viabilizar o trabalho cooperativo

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

1.2.4. Organizar a estrutura do site

1.2.4. Organizar a estrutura do site 1.2.4. Organizar a estrutura do site 1 Organizar a estrutura do site A organização da estrutura do site passa pela definição das ligações entre as páginas que o compõem Esta organização deve ser intuitiva

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

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador EAmb V.1 ESPOSENDE AMBIENTE GestProcessos Online Manual do Utilizador GestProcessos Online GABINETE DE SISTEMAS DE INFORMAÇÃO E COMUNICAÇÃO EAmb Esposende Ambiente, EEM Rua da Ribeira 4740-245 - Esposende

Leia mais