GoConqr has a new look! Let us know what you think.

Notes

Notas - PHP

Luis Felipe Guariento Desenvolvimento de Software Concursos Públicos Portuguese 27 pages

Notas - PHP

Content of the notes (27)

Page 1

Programação PHP

Para acessar bases de dados MySQL, por meio do PHP, é necessário antes estabelecer uma conexão. Para isso, deve ser utilizado o comando:

O comando de acesso a uma base de dados MySQL é mysql_connect ou mysql_pconnect. A diferença entre os dois é que no segundo, a conexão é persistente. Essas funções estão depreciadas nas versões mais recentes, o uso agora é unificado na função mysqli_connect() e para que a conexão seja persistente utiliza-se o parâmetro p: como prefixo do host.

<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

if (!$link) {

die('Não foi possível conectar: ' . mysql_error());

}

echo 'Conexão bem sucedida';

mysql_close($link);

?>

<?php

$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {

echo "Error: Unable to connect to MySQL." . PHP_EOL;

echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;

echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;

exit;

}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;

echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

?>

Page 2

Programação PHP

DOM - Document Object Model - é a extensão do PHP que permite que sejam realizadas diversas operações em documentos XML através da API DOM.

A classe SoapClient provê um cliente para servidores SOAP 1.1 e SOAP 1.2 . Pode ser utilizada no modo WSDL or non-WSDL.

* A Web Services Description Language (WSDL) é uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.

$idade = array("Paulo"=>"40", "Pedro"=>"62", "Ana"=>"43", "Marcos"=>"18");

arsort($idade);

foreach($idade as $x => $x_valor) {

echo $x . " = " . $x_valor . " ";

}

?>

arsort($idade); -> Ordenar array segundo os valores da idade em ordem decrescente de valores, r = reverse

foreach($idade as $x => $x_valor) {

echo $x . " = " . $x_valor . " ";

}

Imprime segundo o comando echo, $x -> chave, depois , $x_valor -> valor, foram ordenados em ordem decrescente de valor (idade). Então:

Pedro = 62

Ana = 43

Paulo = 40

Marcos=18

Questão sobre arrays e o método arsort. Como esse é um array com índices associativos, vimos na aula que o asort que ordena o array em ordem crescente dos valores, mantendo o índice. Já o arsort, o r é de reverse, ordena os valores na

ordem inversa, ou seja, decrescente.

Page 3

Programação PHP

Notas - PHP

A variável superglobal que guarda os arquivos é o $_FILES. Perceba que o nome do input do arquivo é file. Ele que será o índice passado para o $_FILES. Agora o nome do arquivo e seu tipo estão dentro do objeto file. Por isso é preciso acessar

com dois índices. $_FILES["file"]["name"] e $_FILES["file"]["type"].

Page 4

Programação PHP

* O código da aplicação Javascript deve ser interpretada pelo cliente HTTP, não pelo servidor. Javascript roda no cliente! Ao passo que uma aplicação PHP deve ser interpretada pelo servidor web!

* Dynamic HTML, ou DHTML, não é uma linguagem mas sim a união das tecnologias: HTML, JavaScript e uma linguagem de apresentação, como folhas de estilo CSS aliada a um DOM (Modelo de Objeto de Documentos), para permitir que uma página Web seja modificada dinamicamente na própria máquina cliente, sem necessidade de novos acessos ao servidor web.

* Ou seja, DHTML deve ser interpretada no cliente!

* Questão tranquila, diferentemente do javascript, os scripts PHP são interpretados no servidor

A função é a mail(), repare que o examinador tenta confundir colocando simbolos, em php os nomes de variáveis é que são precedidas por símbolos ($), os nomes funções não (os parâmetros podem ser precedidos por & para indicar passagem pro referência).

mail('caffeinated@example.com', 'My Subject', $message);

Page 5

Programação PHP

Notas - PHP

O comando que deve ser utilizado na lacuna I para colocar os nomes em ordem alfabética crescente é: sort($nomes);

Page 6

Programação PHP

Notas - PHP

Questão de lógica. Esse algoritmo está fazendo a ordenação do vetor em ordem crescente. É o famoso bubble sort. Ele compara o elemento atual com o próximo, se for maior eles trocam de lugar e assim sucessivamente, voltando para o início a cada vez que realizar a troca.

Page 7

Programação PHP

Vamos ver o que cada função dessas faz:

* fscanf: faz o parse de uma entrada de um arquivo aberto, de acordo com o formato especificado.

* fpassthru: lê de um arquivo aberto, até o EOF, e escreve o resultado no buffer de saída.

* fseek: move o ponteiro do arquivo para a posição determinada.

* fputs: alias of fwrite(), escreve em um arquivo aberto.

* fnmatch: busca em um nome de arquivo ou string um padrão específico.

(A != B) -> essa operação verifica se o valor de A é diferente do valor de B. O valor 3 é diferente de 6, portanto retorna True e, não, False;

(A %= B) -> essa operação verifica qual o resto da divisão de A por B. 10/3 tem quociente 3 e resto 1, portanto retorna 1;

(A . = B) -> essa operação concatena o conteúdo de A e B e armazena o resultado em A.

!(A == B) -> essa operação verifica se o valor de A é igual ao valor de B e nega o resultado.

(A = = = B) -> essa operação compara o tipo e o valor das variáveis A e B. Portanto, ela retornaria True, caso fossem do mesmo tipo e com o mesmo valor.

Page 8

Programação PHP

Primeiro, lembremos que – em PHP – o índice do array pode ser tanto um valor numérico quando um texto. Portanto, pode haver um array $vetor[0] = “João” ou $vetor[“João”] = 0.

I. $idade = array("Paulo"=>32, "Pedro"=>30, "Ana"=>34);

Vetor I: Correto, trata-se de um array associativo em que $idade[“Paulo”] = 32, $idade[“Pedro”] = 30 e $idade[“Ana”] = 34. Percebam que os índices/chaves desse vetor são “Paulo”, “Pedro” e “Ana” que estão associados por meio do operador =>

aos valores numéricos 32, 30 e 34.

II. $familia = array("Jorge"=>array("Angela","Iracema", "Bia"),"Pedro"=>array("Ana"));

Vetor II: Correto, trata-se de um array multidimensional em que o primeiro elemento “Jorge” é um vetor com os valores “Angela”, “Iracema” e “Bia” e o segundo elemento “Pedro” também é um vetor com o valor “Ana”.

III.

$nome[0] ="Paulo";

$nome[1] ="Pedro";

$nome[2] ="Ana";

Vetor III: Correto, trata-se de um array numérico em que o primeiro elemento é “Paulo”, o segundo é “Pedro” e o terceiro é “Ana”.

IV.

$idade['Paulo'] = "32";

$idade['Pedro'] = "30";

$idade['Ana'] = "34";

Vetor IV: Correto, trata-se de um vetor associativo em que o primeiro elemento é “32”, o segundo é “30” e o terceiro é “34”.

Page 9

Programação PHP

Marcos está desenvolvendo uma aplicação web PHP utilizando o WAMPServer. Como está utilizando um banco de dados MySQL, escolheu uma função para enviar uma consulta ou comando SQL (por exemplo, os comandos select, insert ou delete)

para o banco de dados ativo. A função correta escolhida foi: mysql_query.

Mais uma questão que exige saber funções específicas. Caso vocês não saibam, eu recomendo que tentem ir sempre no mais lógico. A questão pede a classe que fornece acesso cliente aos servidores SOAP, portanto – na minha opinião – o item

mais condizente é o SoapClient. Essa função fornece acesso cliente a servidores SOAP 1.1 e 1.2, podendo ser usada em Modo WSDL e Não-WSDL.

A linguagem PHP permite a instalação de extensões que podem aumentar sua gama de funcionalidades. Uma das funcionalidades extras que podem ser adicionadas se refere a manipulação de arquivos XML. A extensão que possui várias classes que podem ser instanciadas para a leitura e gravação de arquivos XML é chamada DOM.

A flexibilidade do PHP permite-lhe que a avaliação de uma variável seja o nome de outra variável ou mesmo de uma função. Sim, PHP é bastante flexível nesse sentido, i.e., uma variável pode receber o nome de outra variável ou o nome de uma função – são as chamadas variáveis variáveis;

Page 10

Programação PHP

Para o recebimento dos dados de um formulário HTML, enviados por meio do método GET, para uma página PHP, deve-se utilizar $_GET[“nome_text”]

Por exemplo: caso o usuário entre em: http://example.com/?name=Sou+TRE, o resultado da execução de echo $_GET[“name”], será “Sou TRE”.

A validação de uma data em PHP pode ser realizada pela função checkdate.

getdate() recupera uma data; checkdate() verifica/valida uma data; setdate() modifica o valor de uma data; mktime() obtém um timestamp Unix para uma data. A função checkdate valida uma data do calendário Gregoriano. Sua assinatura é a seguinte: checkdate(month,day,year);

Lembram-se de que a sintaxe da Linguagem PHP é fortemente influenciada pela sintaxe de C/C++ e Perl. Em C, a passagem de parâmetros por referência é feita por meio da utilização do caractere “&”. Nas funções PHP, a passagem por valor é o padrão. Caso você necessite passar um parâmetro por referência, utilize o caractere &. Veja no exemplo abaixo.

<?php

function foo(&$var)

{

$var++;

}

$a=5;

foo($a);

// $a vale 6 aqui.

?>

Page 11

Programação PHP

Cookie é um arquivo texto que pode ser armazenado no computador do usuário, normalmente com informações de sua navegação no site, para ser recuperado posteriormente pelo servidor. Em PHP, um cookie criado pela instrução setcookie("ck", "abcde", time() + 3600); poderá ser recuperado utilizando a instrução:

$_COOKIE["ck"]

Uma String recebida do campo nome de um formulário HTML enviado por meio do método POST para um site deve ser codificada para UTF-8. A forma correta de realizar essa operação, utilizando a linguagem PHP, é $nome = utf8_encode( $_POST['nome'] )

O ‘?’ é o operador ternário do PHP. Sua sintaxe é (exp1 ? exp2 : exp3). Caso a exp1 seja verdadeira o retorno é exp2, caso seja falsa, o retorno é exp3.

B) 100 > 10 ? verdade; Logo retorna 10. Correto.

D) 100 > 10 ? verdade; Logo retorna 100. Incorreto.

Page 12

Programação PHP

Considere que determinada aplicação web a ser desenvolvida em PHP deva ser integrada aos sistemas de controle de acesso já presentes nos ambientes de desenvolvimento e produção da organização. Nesse caso, se esses ambientes forem embasados em Kerberos ou em RADIUS (remote authentication dial in user service), o programador poderá obter êxito na integração por meio do uso de extensões providas pela biblioteca PECL (PHP extension community library), tais como os packages KADM5 e RADIUS.

Correta. RADIUS (Remote Authentication Dial In User Service) é um protocolo de rede que fornece gerenciamento centralizado de Autenticação, Autorização e Contabilização para usuários que conectam-se a e utilizam um serviço de rede.

Kerberos é um protocolo de autenticação, que foi concebido para fornecer um robusta autenticação para aplicações cliente-servidor através de criptografia de chave secreta.

Uma das formas de acessar servidores que utilizam o Kerberos é utilizando o KADM5 (Kerberos Administration 5). Tanto o KADM5 quanto o RADIUS podem ser instalados pelo repositório de extensões PECL.

Gabarito: C

Page 13

Programação PHP

O arquivo de configuração do PHP, de nome php.ini, será lido apenas no momento da inicialização (startup) do servidor HTTP associado ao referido IDE, que, no caso específico, é o Apache 2.2.11.

Correta. O arquivo de configuração, php.ini, é lido quando o PHP inicia. Para as versões de módulo de servidor, isso acontece apenas quando o servidor web for iniciado. Vale notar que para as versões CGI e CLI, isso acontece a cada invocação.

O servidor HTTP é, realmente, o Apache 2.1.11, como podemos ver na imagem fornecida na questão no item Loaded Configuration File.

Gabarito: C

Para que possa depurar os scripts PHP que construirá, o programador não necessita instalar depuradores externos, uma vez que a distribuição padrão de PHP vem acompanhada de depurador.

omo a questão é de 2010, na época o PHP não vinha com depurador, necessitando desta forma de alguma depurador externo (XDebug, por exemplo) em conjunto com alguma IDE (Netbeans, Eclipse, PHPStorm, etc). Porém, a partir da versão 5.6 do PHP, ele vem com um depurador próprio, o phpdbg que é um depurador interativo. Então se a questão cair novamente a resposta muda, beleza?!

Page 14

Programação PHP

O acesso otimizado ao sistema gerenciador de banco de dados (SGBD) em uso nos ambientes de desenvolvimento e produção da organização pode ser obtido por meio da extensão PDO (PHP data objects), desde que seja habilitado o driver PDO específico do SGBD em uso, uma vez que a PDO não provê abstração completa do banco de dados, mas apenas uma camada de abstração para acesso aos dados, que não reescreve SQL nem emula funcionalidades de um SGBD.

O PDO (PHP Data Object) realiza uma abstração do banco de dados fornecendo uma biblioteca limpa e consistente, que unifica as características das extensões que acessam os bancos de dados. Porém, o PDO possui também algumas desvantagens, por exemplo, não efetua a leitura e tradução das instruções SQL, é apenas realizada uma fusão dos métodos mandados para as extensões respectivas. Principais características do PDO:

▪ Flexibilidade – Como o PDO carrega o driver específico do banco de dados em tempo de execução, não é preciso reconfigurar o PHP sempre que um banco de dados diferente for usado.

▪ Desempenho – O PDO está escrito em C e compilado no PHP, o que lhe garante um aumento considerável no desempenho em relação a soluções escritas em PHP.

▪ Consistência de código – No PDO não existe a inconsistência de código, pois é oferecida apenas uma interface unificada que é está disponível para qualquer banco de dados.

▪ Características de orientação de objetos – Possui recursos de orientação de objetos, o que resulta em uma comunicação mais poderosa e eficiente com banco de dados.

Page 15

Programação PHP

Caso o programador deseje criar, gerenciar e distribuir internamente à organização um ou mais packages que contenham módulos ou extensões por ele desenvolvidos, é correto o uso da técnica de channels, que é embasada em arquitetura orientada a serviços (SOA), por meio da utilização de XML e REST (representational state transfer).

Correta. A questão mistura muitos conceitos causando uma confusão e, aparentemente, parece estar errada por falar de um técnica do SOA (channels) e terminar falando de REST. Bem, um dos princípios do SOA é o reuso logo, se um programador desenvolveu um pacote de funcionalidade é interessante que este fique disponível para toda a organização, assim, caso alguém sinta a necessidade de alguma funcionalidade já coberta por este pacote, basta consumi-lo. Uma das formas de consumo é através de channels implementados em REST que é um forma de consumo para webservices mais simples que o SOA.

Para instalar extensões do repositório PEAR (PHP extension and application repository), é correto o uso do Pyrus, uma versão refatorada do instalador PEAR, capaz de prover maior segurança aos processos, permitindo o gerenciamento e a distribuição de packages.

O PEAR (PHP Extension and Application Repository) é um repositório de diversas extensões do PHP, escritas em PHP. Um dos gerenciadores de pacotes PHP que suportava pacotes PEAR era o pyrus descontinuado em 2011 devido a popularidade de um outro gerenciador de pacotes, o Composer.

Vale lembrar que utilizam-se gerenciadores de pacotes devido a facilidade com que eles integram as diversas dependências entre os pacotes, facilitando a vida do programador que não tem que ficar instalando as dependências dos pacotes uma a uma.

Page 16

Programação PHP

Segundo a PSR (PHP Standard Recommendations), mais especificamente a PSR 2, ou Guia de estilo de codificação (Coding Style Guide), que aborda como deve ser feita a formatação do código para facilitar a leitura por outros desenvolvedores, algumas das indicações são:

• Devemos usar 4 espaços para indentação, não tabs.

• Não devemos fixar um número de caracteres por linha, mas é bom que uma linha tenha menos de 80 caracteres.

• A abertura de colchetes de classes e métodos devem vir na próxima linha.

• A abertura de colchetes de estruturas de controle devem vir na mesma linha com um espaço em branco.

• Comentários podem ser feitos com // (Tal como C e C++) , # ou /* … */ (Para

blocos de comentário)

// comentario

# comentario

/* Comentario

Multi linhas

...

*/

• Arrays em PHP são atribuídos da seguinte forma:

<?php

$cars = array("Volvo", "BMW", "Toyota");

?>

Sobre os comentários no estile PEARL, na documentação oficial do PHP não há menção alguma sobre evitar comentários com # (cerquilha, estilo PEARL), assim a questão está errada porém o CESPE considerou correta.

Page 17

Programação PHP

Um teste phpt é um pequeno script usado pelo php-src e equipes de Garantia de Qualidade (QA) para testar as funcionalidades do PHP, e ele pode ser usado com novos lançamentos para certificar-se de que eles continuem funcionando como nas versões anteriores, ou para ajudar a encontrar erros em versões atuais.

Notas - PHP

Trata-se de uma requisição do tipo GET. Vejamos a constituição da requisição:

http://localhost:8080/teste.php?nome=joao

URL para onde é mandada a requisição: http://localhost:8080/

Script que será executado: teste.php?

Variável nome com valor joao: ?nome=joao

Vamos analisar linha a linha:

$ponteiro = fopen ( $_REQUEST[‘nome’].’.txt’] );

Cria um arquivo com o nome passado na URL através da variável nome (http://localhost:8080/teste.php?nome=joao) e extensão “.txt”, porém, faltou especificar que o modo é de escrita (poderíamos usar ‘r+’, ‘w’, ‘w+’, ‘a’, ‘a+’).

Especificando os parâmetros de abertura do arquivo:

'r': Abre somente para leitura; coloca o ponteiro do arquivo no começo do arquivo.

'r+' : Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.

'w' : Abre somente para escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

'w+': Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.

'a' : Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.

'a+' : Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.

'x' : Cria e abre o arquivo somente para escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada afopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

'x+': Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada afopen() falhará, retornando FALSE e gerando um erro de nível E_WARNING. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

fwrite($ponteiro,$nome);

Escreve no arquivo criado o valor da variável $nome (no caso joao).

fclose($ponteiro);

Fecha o arquivo recem criado.

echo $_GET[‘nome’];

Imprime para usuário o valor da variável nome passado na requisição do tipo GET.

Vale notar que as variáveis $_GET, $_POST e $_REQUEST são ditas 'superglobais', ou globais automáticas. Isto significa que elas estão disponíveis em todos escopos pelo script. Não há necessidade de fazer global $variable; para acessá-las dentro de uma função ou método. Pessoal, embora o $_REQUEST trate tanto requisições POST quanto GET é aconselhável utilizar utilizar $_GET para requisições GET e $_POST para requisições POST não só por questões de performance, estilo e boa práticas. As variáveis $_REQUEST são providas para o script PHP via mecanismos de entradas GET, POST, e COOKIE e portanto poderiam ser modificadas por um usuário remoto e não podem ser confiadas.

Page 18

Programação PHP

Notas - PHP

Se o pedido http://localhost/teste.php?nome=joao

for aplicado de forma bem sucedida ao script apresentado abaixo, então a saída de dados deverá conter a string Você deve preencher os campos. É correto afirmar, ainda, que uma conexão de socket foi estabelecida entre dois processos que se executam no mesmo computador onde se encontra o serviço HTTP associado ao referido pedido, sendo uma extremidade da conexão associada à porta 80 e a outra, a uma porta cujo número não se pode determinar pelas informações apresentadas.

Correta. Pessoal vamos analisar as duas afirmativas da questão. Primeiro vamos entender o que a cláusula if testa. A entrada na cláusula if está condicionada a verificação das variáveis $nome e $email, se ao menos uma estiver vazia então será impresso “Você deve preencher os campos”. Se ambas não forem vazias então será escrito “Olá $nome”, onde $nome será substituído pelo valor da variável.

Observando a URL da requisição http://localhost/teste.php?nome=joao, percebemos que se trata de um requisição do tipo GET com apenas a variável $nome=joao, não há a passagem da variável email, logo, será impresso a string “Você deve preencher os campos”.

Agora vamos a segunda afirmação que fala da porta do socket. Como podemos perceber pela própria URL, estamos realizando requisições para o endereço de localhost (ou 127.0.0.1 - loopback), ou seja, a conexão socket foi estabelecida entre dois processos do mesmo computador. Por se tratar de um requisição HTTP então a porta é de fato a 80.

Page 19

Programação PHP

Notas - PHP

Pessoal, vamos resolver linha a linha:

Linha 1: $num = 14 ; $deslocado = $num >> 2;

O operador >> desloca $num de 2 bits para esquerda isso na prática corresponde a dividir por 4, vejamos: $num em binário é 1110, logo 1110 >> 2 fica 11, então

$deslocado assume o valor 11 em binário, ou seja, 3. Assim terminamos a primeira linha com:

$num = 14 e $deslocado = 3

Linha 2: $soma=$deslocado;$valor1=10;$valor2=20;$valor3=30;

Aqui não temos nada demais a não ser atribuição de valores a variáveis. Terminamos a linha com:

$soma=3, $valor1=10, $valor2=20 e $valor3=30

Linha 3: $soma+=$valor1+$valor2;$soma*=$valor3;

Nada demais, vejamos: $soma+=$valor1+$valor2 equivale a $soma = $soma +

$valor1 + $valor2 = 3 + 10 + 20 = 33; $soma*=$valor3 equivale a $soma = $soma

* $valor3 = 33 * 30 = 990; Assim terminamos a linha 3 com:

$soma = 990

Linha 4: $soma%=100;

Aqui estamos utilizando o operador resto da divisão inteira, logo: $soma%=100

equivale a $soma = $soma % 100 = 990 % 100 = 90. Assim terminamos a linha 4 com:

$soma = 90

Linha 5: echo $soma;

Termina imprimindo o valor da variável $soma que é igual a 90 e não 900.

Page 20

Programação PHP

Pessoal, esta questão trata de como a função array_multisort funciona. Ela é usada para ordenar vários arrays de uma vez ou apenas um array multidimensional de acordo com uma das dimensões. Os arrays dados são tratados como colunas de uma tabela a ser classificada pelas linhas - isso lembra a funcionalidade da cláusula ORDER BY da SQL.

O primeiro array é o principal na ordenação. As linhas (valores) no primeiro array servem de base para a ordenação do próximo, e assim por diante. A estrutura de argumentos dessa função não é muito normal, mas bastante flexível. O primeiro argumento de todos deve ser um array. Subsequentemente, cada argumento pode ser um array ou um dos sinais de classificação da lista a seguir.

Sinais de ordem de classificação:

• SORT_ASC - classifica na ordem crescente

• SORT_DESC - classifica na ordem decrescente

Sinais de tipos de ordenação:

• SORT_REGULAR - compara os elementos normalmente

• SORT_NUMERIC - compara os elementos como itens numéricos

• SORT_STRING - compara os elementos como strings

Não podem existir dois sinais de ordenação do mesmo tipo especificados para um mesmo array. Os sinais de ordenação especificados depois de um array se aplicam apenas para esse array - a eles são atribuídos por padrão os valores SORT_ASC e SORT_REGULAR antes de cada novo argumento do tipo array.

Realizando o algoritimo na primera array, a segunda “acompanha” com os índices correspondentes, como linhas de uma tabela (lembrando que o PHP utiliza o algoritmo Quicksort para ordenação de arrays).

Logo, a afirmação está correta! Para fins de ilustração, vejamos outros exemplos da

função array_multisort

Exemplo 1:

<?php

$ar1 = array("10", 100, 100, "a");

$ar2 = array(1, 3, "2", 1);

array_multisort($ar1, $ar2);

?>

Saída: ”10”, ”a”, 100, 100 e 1, 1,”2”, ”3”

Exemplo 2:

<?php

$ar = array(array ("10", 100, 100, "a"), array (1, 3, "2", 1));

array_multisort($ar[0], SORT_ASC, SORT_STRING,

$ar[1], SORT_NUMERIC, SORT_DESC);

?>

Saída: ”10”, 100, 100, ”a” e 1, ”3”, ”2”, 1

Page 21

Programação PHP

Notas - PHP

Sabendo-se que a função natsort() opera com o conceito de ordenação natural, na qual as strings alfanuméricas são ordenadas da forma que um ser humano ordenaria, enquanto a função asort() opera com o conceito de ordenação classicamente usado em algoritmos de ordenação de strings, na ciência da computação, então a execução bem sucedida do script PHP apresentado abaixo produzirá, na saída, a primeira ocorrência da string img12.png antes da primeira ocorrência da string img2.png e a segunda ocorrência da string img12.png depois da segunda ocorrência da string img2.png.

Correta. Bom primeiro precisamos entender como natsort() e asort() ordenam. O algoritmo de ordenação utilizado em natsort() ordena conforme um ser humano ordena, então, o resultado de natsort() sobre o array $A1, tem como resultado:

$A1 = [“img1.png”, ”img2.png”, ”img10.png”,”img12.png”]

Agora o algoritmo de ordenação utilizado em asort(), compara as strings caractere por caractere, de forma a preservar a ordem de cada um dos caracteres que compõem as strings. Assim, asort() sobre o array $array2, tem como resultado:

$array2 = [“img1.png”, ”img10.png”, ”img12.png”, ”img2.png”]

Agora vamos a saída do script PHP. Como a ordem de execução é do asort($A1), seguida da impressão do array $A1 e depois do natsort($array2) e a impressão do array $array2, temos:

[“img1.png”, ”img10.png”, ”img12.png”, ”img2.png”]

[“img1.png”, ”img2.png”, ”img10.png”, ”img12.png”]

Logo, a primeira ocorrência de img12.png ocorre antes da primeira ocorrência de img2.png e a segunda ocorrência de img12.png ocorre depois da segunda ocorrência de img2.png.

Page 22

Programação PHP

Notas - PHP

Uma sessão web é bem parecida com a sessão de um PC, que ao iniciar, temos que colocar usuário e senha, assim seu computador pode saber quem está usando a máquina e guardar os registros com segurança. Em um site ou sistema web, a sessão é importante quando se quer mais segurança na página ou quando se quer ter um controle de usuário.

Também alguns programadores utilizam-se deste recurso para guardar informações e ou montar um carrinho de compras de um site de vendas, pois assim vão armazenando-se os itens ou produtos e só no final é que os dados são jogados no banco de dados.

Nota: A variável de sessão PHP é usada para armazenar informações sobre, ou alterar as configurações do sistema ou site para uma sessão de usuário. As variáveis de sessão armazenam informações sobre um único usuário e estão disponíveis para todas as páginas em um único aplicativo.

No código apresentado não há em momento algum a utilização da variável $_SESSION, logo, não será possível recuperar a sessão.

Errada. Pessoal essa questão ao meu ver é polêmica. De fato não há elementos que nos permitam afirmar que a senha está ou não criptografada no banco de dados.

Para isso precisaríamos ter ciência se os valores salvos na coluna “senha” foram submetidos a alguma função de hash (MD5, SHA256, etc). Contudo é muito provável que não esteja criptografada pois não é aplicada nenhuma função de hash sobre a senha no código PHP fornecido.

Quanto a ataques de dicionário não tem mistério, é usar SENHAS FORTES. Como sabemos que muitas vezes os usuários, mesmo conscientes, negligenciam isso podemos implementar mecanismos extras como autenticação de dois fatores (2FA), bloqueio de conta após um certo número de tentativas falhas, entre outros.

Gabarito: E

Correta. É fácil verificar que o banco é o MySQL, pois o conector usado é o conecta_mysql.inc. E sim, a conexão com o banco deveria ter sido encerrada com um mysql_free_result($r), isso evita que memória fique alocada para consultas que já passaram.

Errada. Pessoal esta questão está bem confusa. Primeiro os cookies foram criados sem estabelecer um tempo de validade, assim, eles vão expirar ao fim da sessão, ou seja, não adianta nada setar os cookies, pois em um novo acesso o usuário terá que colocar as credenciais de acesso novamente e conforme a lógica de login os cookies nu e su serão sobrescritos.

Quanto a sujeição à ataques de SQL injection, é uma boa práctica validar os dados dos campos usuário e senha, que são utilizados para montar uma consulta SQL.

Poderíamos usar um caractere de escapamento e fazer outras buscas além do nome do usuário e de sua senha. Existem formas de fazer isso utilizando a função htmlspecialchars() e a mysql_real_escape_string();

Page 23

Programação PHP

Os softwares de servidores web, ao aderirem à arquitetura de sistemas operacionais, empregam modelo de memória virtual, que atua como um cache de memória e contém parte das instruções e dados executados por um script em determinado instante de tempo. Assim, o script não precisa estar armazenado simultaneamente na memória principal e no disco; com isso, a memória total disponível para um script ou programa pode exceder o tamanho da memória principal do sistema.

Errada. Quem emprega o modelo de memória virtual é o sistema operacional, a memória utilizada é transparente para o software. Além disso cache e memória virtual são coisas distintas. Memória cache ou simplesmente cache é usado para armazenar dados acessados com frequência, a fim de acessar rapidamente os dados sempre que for necessário.

Ambos são conceitualmente a mesma coisa, porém diferem principalmente em matéria de execução, que resulta em diferentes aspectos, como velocidade e controle de mecanismo. Memória virtual é usada para ocultar a informação da memória física real do sistema. Estende-se a memória disponível do computador, armazenando as partes inativas do conteúdo RAM em um disco.

Memória virtual cria uma ilusão de que um usuário tem um ou mais espaços de endereços contíguos que começam com endereço zero.

Page 24

Programação PHP

O formato JSON (javascript object notation) permite representar objetos e classes como estruturas de dados e arrays associativos, sendo possível seu uso em combinação com Ajax e PHP, por meio de bibliotecas diversas, como DOJO.

Correta. JSON (JavaScript Object Notation - Notação de Objetos JavaScript) é uma formatação leve de troca de dados. Para seres humanos, é fácil de ler e escrever.

Para máquinas, é fácil de interpretar e gerar. Está baseado em um subconjunto da linguagem de programação JavaScript, Standard ECMA-262 3a Edição - Dezembro - 1999.

JSON é em formato texto e completamente independente de linguagem, pois usa convenções que são familiares às linguagens C, C++, C#, Java, JavaScript, Perl,Python e muitas outras. Estas propriedades fazem com que JSON seja um formato ideal de troca de dados.

Já o DOJO é uma biblioteca de JavaScript modular de código aberto (ou mais especificamente o kit de ferramentas do JavaScript), projetado para facilitar o rápido desenvolvimento de aplicativos e sites da plataforma baseados em JavaScript / Ajax.

Entre os módulos disponibilizados há o dojo/json que trata de json (parsing, serialization, etc).

Page 25

Programação PHP

Arrays associativos, usados em PHP e em outras linguagens de script, podem ser implementados de forma eficiente, do ponto de vista de consumo de memória, por meio do uso de tabelas de dispersão. Para garantir eficiência, essas tabelas precisam ser totalmente livres de colisão, tal que, na implementação de métodos de busca, as pesquisas sejam executadas em tempo constante, independentemente do valor pesquisado.

Errada. Pessoal, tabelas de dispersão nada mais são que os famosos hash (plural hashes). Ela é uma estrutura de dados especial, que associa chaves de pesquisa a valores. Seu objetivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado. Estas tabelas utilizam funções de espalhamento, que nada mais são que funções que geram a partir de uma chave um determinado índice que facilita a busca subsequente.

O ideal para a função de espalhamento é que sejam sempre fornecidos índices únicos para as chaves de entrada. A função perfeita seria a que, para quaisquer entradas A e B, sendo A diferente de B, fornecesse saídas diferentes. Quando as entradas A e B são diferentes e, passando pela função de espalhamento, geram a mesma saída, acontece o que chamamos de colisão.

Na prática, funções de espalhamento perfeitas ou quase perfeitas são encontradas apenas onde a colisão é intolerável (por exemplo, nas funções de dispersão da criptografia), ou quando conhecemos previamente o conteúdo da tabela

armazenada. Nas tabelas de dispersão comuns a colisão é apenas indesejável, diminuindo o desempenho do sistema.

Muitos programas funcionam sem que seu responsável suspeite que a função de espalhamento seja ruim e esteja atrapalhando o desempenho. Por causa das colisões, muitas tabelas de dispersão são aliadas com alguma outra estrutura de dados, tal como uma lista encadeada ou até mesmo com árvores balanceadas. Em outras oportunidades a colisão é solucionada dentro da própria tabela.

Page 26

Programação PHP

Estruturas de dados padronizadas, como listas ligadas duplamente encadeadas, pilhas, filas, filas de prioridade e arrays numéricos de tamanho fixo, são disponíveis em PHP por meio da extensão SPL (standard PHP library).

Correta. Essa é fácil. A maioria das linguagens de alto nível orientadas a objeto já tem em suas bibliotecas padrão, implementações para diversos problemas conhecidos na computação. A SPL é a Standard PHP Library e fornece uma coleção de interfaces e classes que servem para resolver problemas padrões.

Page 27

Programação PHP

Algoritmos recursivos normalmente têm menor tempo de resposta que seus equivalentes iterativos, mas as linguagens PHP e Javascript, por serem linguagens de script, não permitem nem necessitam de recursividade.

Errada. Primeiramente algoritmos recursivos são classicamente mais custosos que os iterativos e estão suscetíveis a diversos problemas como o famoso stackoverflow (estouro da pilha de memória). Além disso PHP e javascript permitem sim o uso da recursividade.

Information

Description
Concursos Públicos Desenvolvimento de Software (Eclipse, NetBeans e Visual Studio, PHP, DOT NET) Note on Notas - PHP, created by Luis Felipe Guariento on 18/11/2021.
Views
7
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?