Professional Documents
Culture Documents
LW - 06 - PHP
LW - 06 - PHP
Sdirectoria"; exemplo anterior apresenta, no navegador, o contetido da directoria actual. Em Windows seria: $directoria=‘dir; mas nao funciona uma vez que dir é um comando interno do MS-DOS. Em Windows 2000, ou superior, experimentar outro comando: $rede="jpcontig 7.9. Operadores de incremento e decremento O PHP disponibiliza os seguintes operadores de incremento e decremento: TABELA 6.7 - OPERADORES DE INCREMENTO E DECREMENTO EM PHP ExEMPLO Nome RESULTADO | 48a Pré-incremento Incrementa $a de uma unidade e depois devolve $a | gas+ Pés-incremento | Devolve $a e depois incromenta $a de uma unidade ~$a Pré-decremento_| Decrementa $a de uma unidade e depois devolve $a $a Pés-decremento | Devolve $a e depois decrementa $a de uma unidade Consuttar exemplos de aplicagao no ponto 6.1 deste capitulo. 7.10. Operadores légicos Os operadores légicos operam valores Idgicos e permitem construir expressdes légicas complexas.TABELA 6.8 - OPERADORES LOGICOS EM PHP EXEMPLO- NOME RESULTADO Saand$> | Conjungéio TAUE se $a e $b forem TRUE | Saor$b | Disjungao inclusiva | TRUE se $a ou $b forem TRUE $axor $b | Disjungao exclusiva | TRUE se $aou $bforem TRUE, mas nao ambos 18a Negagao légica | TRUE se $a for FALSE $a && Sb | Conjuncao TRUE se $ae $b forem TRUE _ Sali $b Disjungdo inclusiva | TAUE'se Saou $b forem TRUE Os operadores and e && séo equivalentes, assim como os operadores or e II, excepto nas precedéncias (ver ponto 7.1 deste capitulo). 7.11. Operadores de cadeia O PHP possui um operador de concatenagao de cadeias “.” e um operador de concatenagao e atribuigao “=”. Ver ponto 7.3 deste capitulo para mais informagao. Os dois exemplos seguintes sao equivalentes. CODIGO FONTE 6.43 - CONCATENAGAO DE CADEIAS (1) $b = "ola "7 Sb = Sb . "mundo"; // atribui a $b 0 texto “Olé mundo” CODIGO FONTE 6.44 - CONCATENAGAO DE CADEIAS (2) $b = "Ola "7 $b .= "mundo"; // atribui a $b o texto "Ola mundo" 7.12. Operadores de vector © operador “+” acrescenta o segundo vector ao primeito. As chaves duplicadas no sao sobrepostas.CODIGO FONTE 6.45 - CONCATENACGAO DE VECTORES array("a" => "maga", array("a" =>"pera", > “morango", $a + Sb; "banana") ; | Para visualizar 0 conteudo da varidvel $c do exemplo anterior, pode executar-se a instrugo var_dump($c)'. Verifica-se que o resultado array(3) { ["a"] => string(4) “maga” ["b"] => string(é) "banana" ["c"] => string(6) "cereja" ) INSTRUGOES CONDICIONAIS No ponto 3 do capitulo 8 descrevem-se as estruturas de controlo mais comuns as diversas linguagens de programagao. Aconselha-se 0 programador menos experiente a ler esse capitulo antes de continuar. 8.1. A instrugao if A instrugao if em PHP pode ter uma das trés formas seguintes: it (expresséo) instrucao it (expresso) insirugéo else instrugao if (expresso!) instrugaot elseif (expresso2) instrugao2... else instrugaoN Podem existir varios elseif na mesma instrugao, sendo executado o primeiro cuja condigao for verdadeira. Cada instrugao anterior pode ser substituida por diversas instrugdes, desde que delimitadas por chavetas. Segue-se um exemplo de utilizagao: (a fungao var_dump() imprime © contetido de uma variével.CODIGO FONTE 6.46 ~ UTILIZACAO DA INSTRUGAO IF if (Sa > $b) ( print "a é maior que b"; } elseif ($a == $b) { print “a 6 igual a b"; } else { print “a € menor que b"; ) 8.2. Ainstrugao switch A instrugao switch pode, em determinadas situagdes, substituir um conjunto de instrugdes if, da mesma expresso, encadeadas. Segue-se um exemplo simples de aplicagao: CODIGO FONTE 6.47 - UTILIZACAO DA INSTRUCAO SWITCH switch ($i) { case 0: print break @ igual a 0"; case i print “i é igual a 1"; break; case 2: print "i é igual a 2"; break; INSTRUGOES ITERATIVAS 9.1. Ainstrugao while A instrugao iterativa while, do PHP, funciona de forma idéntica a da linguagem C. Asua sintaxe é: while (expresso) instrugaoA instrugao do Ambito do ciclo pode ser substituida por diversas instrugdes, desde que delimitadas por chavetas. CODIGO FONTE 6.48 - UTILIZAGAO DA INSTRUGAO WHILE sisly while ($i <= 10) { print $i++; | /* imprime antes de incrementar */ ; 9.2. Ai A instrugao iterativa do-while, do PHP, funciona de forma idéntica a da linguagem C. A sua sintaxe é: do instrugao while (expressdo) A instrugéo do Ambito do ciclo pode ser substitufda por diversas instrugdes, desde que delimitadas por chavetas. CODIGO FONTE 6.49 - UTILIZAGAO DA INSTRUGAO DO-WHILE $i = 0; do { print $i; } while ($i>0); 9.3. Ainstrugao for A instrugao iterativa for, do PHP, funciona de forma idéntica & da linguagem C. A sua sintaxe 6: for (expressao1; expressao2, expressdo3) instrugao A instrugdo do ambito do ciclo pode ser substituida por diversas instrugdes, desde que delimitadas por chavetas.CODIGO FONTE 6.50 - UTILIZACAO DA INSTRUCAO FOR for ($i = 1; $i <= 10; $it4) { print $i? ) 9.4. A instrugao foreach A instrugdo foreach s6 pode ser utilizada com vectores. O foreach permite percorrer todos os elementos de um yector. A sua sintaxe tem as duas variantes seguintes: foreach ($vector as $valor) insirugéo foreach ($vector as $chave => $valor) instrugao A primeira forma percorre 0 $vector atribuindo a $valor, em cada iteracdo, o valor de um elemento do vector. A segunda forma tem 0 mesmo funcionamento atribuindo também a $chave, em cada iteragao, a chave correspondente ao elemento $valor. A instrugdo do Ambito do ciclo foreach pode ser substitu(da por diversas instru- gées, desde que delimitadas por chavetas. CODIGO FONTE 6.51 ~ UTILIZACAO DA INSTRUGAO FOREACH, APENAS COM VALOR $a = array (1, 2, 3, 17)7 foreach ($a as $v) ( print "Valor: §v.\n"; CODIGO FONTE 6.52 - UTILIZAGAO DA INSTRUCAO FOREACH, COM VALOR E CHAVE array ( mn" => 1, "dois" => 2, “trés" => 3, “dezassete" => 17 oF foreach ($a as $k => $v) { print "\Sa[$k] => $v.\n";9.5. Ainstrugao break A instrugao break quebra uma instrugao for, foreach, while, do-while ou switch. A instrugao break aceita um argumento numérico opcional que indica quantas estrutu- ras aninhadas devem ser quebradas. CODIGO FONTE 6.53 - UTILIZACAO DA INSTRUCAO BREAK Si while (++$i) ( switch ($i) { case 5: echo "Aos 5
nbsp;
snbsp;
utid | Nome | apel ido | Correio-e | Telefone | IP Remoto | Porto Remoto | Navegador | gutid | \n"; echo "$nome | \n"; echo "$apelido | \n echo "$correioe | \n"; echo "$telefone | \n" echo "$ipremoto | \n"; echo "Sportoremoto | \n"; echo "Snavegador | \n"; echo "\n"; ) mysql_close ($1iga¢ao) ; 2
Carregamentos
anbsp;
Lista
$par2 - (Stam octetos) \n";
}
}
function GetDirArray($sPath)
{ ‘ !
//Carrega directoria num vector f
$retVal = array(); }
$listaDir=opendir ($sPath) ; }
while ($£ich = readdir($listaDir)) }
$retVal [count ($retVal)] = $£ich;
//®echa e ordena
closedir ($listaDir);
sort ($retVal) +
return $retVal;
}
2
0 formuldrio tem um parametro — enctype='multiparV/form-data' — que indica que
vai transferir um ficheiro. O tamanho maximo do ficheiro é definido pelo campo
escondido de nome MAX_FILE_SIZE.
Mais abaixo, 0 campo de input 6 do tipo file, 0 que indica ao navegador para
colocar um botdo adicional para o utilizador seleccionar um ficheiro do seu computa-
dor. O nome deste campo (fichutil) é utilizado na recepodo para referenciar o ficheiro
enviado.
A parte de php imprime a listagem da directoria soft, omitindo a directoria actual
() ea directoria mae (..).
Segue-se 0 cddigo do ficheiro carrega.php.
CODIGO FONTE 6.87 - RECEPCAO E ARMAZENAMENTO DE FICHEIROS, POR HTTP
|
Tamanho $ful'size']; if (!preg_match("/\"/",$fu['name']) 66 is_uploaded_file($fu['tmp_name'])) { print "
Ficheiro carregado. Prima voltar para confirmar."; $fich = str_replace(" ", "+", $fu['name']); move_uploaded_file($fu['tmp_name'], $ficheiro); } else { echo "
Algo correu mal: ficheiro '" . $fu['name'] | ) | > |
énbsp;
}