Ok. Então cá vai.
Código:
<?php
1 | if ($_REQUEST['act']==1){
a | unlink("imagens/".$_REQUEST['f']);
b | echo $_REQUEST['f']." eliminado com sucesso.<br><br>";
| }
2 $pasta=opendir("imagens");
3 while(($ficheiro=readdir($pasta))!=false){
4 if($ficheiro<>"." && $ficheiro<>".."){
5 echo '<a href="teste.php?act=1&f='.$ficheiro.'">[x]</a> -
<a href="imagens/'.$ficheiro.'" target="_self">'.$ficheiro.'</a><br>';
}
}
?>
Como deves reparar, o que está a amarelo foi apenas introduzido para servir de referência à explicação de cada linha.
Vamos, por instantes, ignorar o bloco 1 e passar directamente para o ponto 2 e já vais perceber porquê.
No ponto 2 definimos uma variável $pasta que serve de referência ao processo de abertura da pasta definida na instrução opendir("imagens"). Depois, no ponto 3, iniciou-se a construção de um ciclo no qual vai ser carregado (em cada volta de ciclo) o nome de cada um dos ficheiros contidos na pasta cuja referência é a variável $pasta. O que a instrução While define é que, enquando a variável $ficheiro for diferente de falso, isto é, enquanto existirem ficheiros na pasta e o comando readdir retorne o nome do ficheiro seguinte, o ciclo é executado.
Ao ser executada uma volta de ciclo com sucesso, surge a linha 4 na qual é analizado se $ficheiro é diferente de '.' ou '..'. Esta filtragem é necessária uma vez que iriam aparecer no browser listados logo à cabeça essas duas entradas que têm a sua justificação vinda já do velhinho MSDOS(não interessa agora vir ao caso). A instrução if da linha 4 define então um filtro para que apenas sejam processados os nomes de ficheiros que não sejam '.' ou '..'. Segue-se então o ponto 5 no qual é enviado um output para o browser.
Neste ponto 5, a instrução echo inicia-se fazendo um link para o próprio script, seguido de 2 variáveis:
1º Act=1 - Indicador de que existe uma variável Act(action)(pode ter outro nome) que tem um valor 1 no sentido de ser avaliada no bloco 1 do código. Quando o código verifica que existe a variável Act com o valor 1, executa o bloco de código assinalado em 1 (já lá vamos).
2º f=$ficheiro - a identificação completa do nome do ficheiro listado.
O que estas duas variáveis vão permitir é que o script seja "reeniciado" com as informações suficientes para que o bloco 1 de código seja executado. Ao ser executado esse bloco, é feita a eliminação do ficheiro através da instrução unlink (a), seguida dos parâmetros devidamente concatenados e, por fim, é apresentada uma frase ao utilizador informando que o acto de eliminação do ficheiro foi realizado com sucesso (b).
Espero que tenha sido relativamente claro.