Como excluir diretório recursivamente com função em PHP?

21, abril, 2009

Simples, utilizando esta função você pode excluir um diretório com tudo o que existe nele. Poré, deve tomar cuidado para não excluir o que não quer excluir!

Segue o código:


<?php
/**
* CUIDADO!!! Exclui todo o diretório e também tudo o que existe dentro dele
*
* @param String $dir
*   Diretorio que sera excluído
* @return boolean
*   Se tudo ocorrer bem retorna verdadeiro
* @name _rmdir
* @author Michel Wilhelm <michel@surrealartweb.com.br>
*/
function _rmdir( $dir )
{
# Abrindo diretório
$handle = opendir($dir);

# Varrendo o diretório
while ( false !== ( $FolderOrFile = readdir( $handle ) ) )
{

# Verificando o diretório
if ( $FolderOrFile != ‘.’ && $FolderOrFile != ‘..’ )
{

# Verificando se é um diretório ou não
if ( is_dir( $dir . ‘/’ . $FolderOrFile ) )
{

# Se for um diretório executa novamente esta função
@_rmdir( $dir . ‘/’ . $FolderOrFile );
}
else
{

# Se for um arquivo, exclui o arquivo do diretório
@unlink( $dir . ‘/’ . $FolderOrFile );

} # if is_dir

} # if . / ..

} # while

# Fecha o diretório
closedir( $handle );

# Exclui o diretório
if ( @rmdir( $dir ) )
{

$success = true;

}

# Retornando
return $success;

# function  _rmdir
?>


Visualizar código fonte

admin Funções, Sistema de Arquivos , , , , ,

Como criar um formulário de upload de imagens com PHP?

31, março, 2009

Aqui vou mostrar uma forma simples de enviar uma imagem utilizando PHP.
A algum tempo atrás criei uma classe para o envio de imagens e também a manipulação delas para tornar o trabalho menos fatídico.

/ form.php [Ver source]


<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>Formulário de upload</title>
</head>
<body>
<h2>Upload de imagens</h2>
<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
<input type=”file” id=”imagem” name=”imagem” />
<br />
<input type=”submit” name=”Enviar” id=”Enviar” value=”Enviar” />
</form>
</body>
</html>


/ upload.php [Ver source]


<?php
/**
* Puxando script
*/
require_once(‘includes/class.Img.php’);

# Verificando se foi ou não enviada a imagem
if( $_FILES["imagem"][error] ==0 )
{

# Instanciando a classe de manipulação de imagens
$Img = new Img();

# Alterando o nome da imagem para que não contenha caracteres inválidos (opcional)
$Img->salvar_nome = md5( time() . $_FILES["imagem"][name] ) . ‘.jpg’;

# Diretório destino
$Img->salvar_dir = ‘./destino/’;

# Efetuando o upload
$Img->Upload( $_FILES["imagem"] );

}
?>

/ includes / class.Img.php [Ver source]


<?
/**
* Classe responsavel pelas funcoes de imagem
* @package Vision
* @version 1.0
* @link http://www.surrealartweb.com.br/
*  Exemplo de utilizacao ”img.php”
*
*  require_once(”img.class.php”);
*  $Img = new Img();
*  $Img->imagem = $_GET[src];
*  $Img->mostrar = true;
*  $Img->salvar  = false;
*  $Img->salvar_nome = ”logo.jpg”;
*  $Img->salvar_dir  = ”./foi/”;
*  $Img->width       = $_GET[w];
*  $Img->height      = $_GET[h];
*  $Img->redimensiona(); / $Img->quadrado();
*/
class Img {

/** Tipo mime da imagem */
var $mime = “image/jpeg”;

/** Permissao da imagem */
var $chmod = “0777″;

/** Largura da imagem */
var $width = 100;

/** Altura da imagem */
var $height = 100;

/** Qualidade da imagem (Compactacao JPG) */
var $qualidade = 100;

/** Local da imagem pai*/
var $imagem;

/** Salvar ou nao a imagem */
var $salvar = false;

/** Se salvar, pasta onde sera salva */
var $salvar_dir = “./img/”;

/** Nome da imagem que sera salva */
var $salvar_nome = “temp.jpg”;

/** Mostrar a imagem no navegador ou nao */
var $mostrar = true;

/* Upload */

/** $_FILE */
var $PicFile;

/** Nome temporario */
var $TmpName;

/** Tamanho da imagem */
var $Size;

/**
* Objeto que transforma a imagem em um pequeno quadrado
* @param void
*/
function quadrado() {
if(
file_exists($this->imagem)) {
list(
$w0,$h0) = getimagesize($this->imagem);
if(
$w0<$h0) {
$d0=$w0;
$x0=0;
$y0=($h0-$w0)/2;
} else {
$d0=$h0;
$x0=($w0-$h0)/2;
$y0=0;
}
$fringe=$d0/10;
$x0+=$fringe;
$y0+=$fringe;
$d0-=(2*$fringe);
$image = $this->criarImagem($this->imagem);
$square=imagecreatetruecolor($this->width,$this->height);
imagecopyresampled($square,$image,0,0,$x0,$y0,$this->width,$this->height,$d0,$d0);
if(
$this->salvar==true) {
$img_temp = $this->salvar_dir.$this->salvar_nome;
imagejpeg($square,$img_temp,$this->qualidade);
chmod($img_temp,0777);
}
if(
$this->mostrar==true) {
header(‘Content-type: image/jpg’);
imagejpeg($square,,$this->qualidade);
}
imagedestroy($square);
} else {
return
false;
}
}

/**
* Objeto responsavel por criar a imagem
* @param $img Local da imagem
*/
function criarImagem($img){
$tipo = strtolower(substr($img, strrpos($img, “.”), strlen($img)-strrpos($img, “.”)));
if (
$tipo==“.jpeg” || $tipo==“.jpg”) {
return
imagecreatefromjpeg($img);
} elseif (
$tipo==“.gif”) {
return
imagecreatefromgif($img);
} elseif (
$tipo==“.png”) {
return
imagecreatefrompng($img);
}
}

/**
* Objeto que redimensiona a imagem
* @param void
*/
function redimensiona() {
if(
file_exists($this->imagem)) {
$W=$this->width;
$H=$this->height;
list(
$w0,$h0) = getimagesize($this->imagem);
if(
$h0*$W/$w0 <= $H) {
$w1=$W;
$h1=$h0*$W/$w0;
} else {
$w1=$w0*$H/$h0;
$h1=$H;
}
$image = $this->criarImagem($this->imagem);
$resized=imagecreatetruecolor($w1,$h1);
imagecopyresampled($resized,$image,0,0,0,0,$w1,$h1,$w0,$h0);
if(
$this->salvar==true) {
$img_temp = $this->salvar_dir.$this->salvar_nome;
imagejpeg($resized,$img_temp,$this->qualidade);
chmod($img_temp,0777);
}
if(
$this->mostrar==true) {
header(‘Content-type: image/jpg’);
imagejpeg($resized,,$this->qualidade);
}
}
}

function Upload($PicFile) {
$this->Size = $PicFile["size"];
$this->tipo_img = $PicFile["type"];
$this->TmpName = $PicFile["tmp_name"];
$TmpPath = $this->salvar_dir.$this->salvar_nome;
copy($this->TmpName,$TmpPath);
chmod($TmpPath,0777);
}
}
?>


[ Download do source completo (rar) ]

admin Imagens, Upload , , , , , ,

Como criar lista de estados e cidades dinamicamente com AJAX

24, março, 2009

Aqui vou mostrar uma rápida e simples forma de criar uma lista dinamica de cidades baseadas na seleção do estado em um form utilizando Prototype.

Mãos a obra!

Antes de mais nada, você irá precisar criar o formulário.

/index.php (Exibe o combobox)

———————————-

<?php
require_once( ‘./conn.php’ );
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>Exemplo ComboBox</title>
<script type=”text/javascript” src=”js/scriptaculous/prototype.js”></script>
<script type=”text/javascript”>
//<![CDATA[
function CarregaCidades( SelectEstado, div_destino )
{
// Nova requisição AJAX do prototype
new Ajax.Request('backend.php?estadoId=' + SelectEstado.value,
{
method : 'get',
onCreate:function()
{
$(div_destino).innerHTML = 'Carregando as cidades...';
}, // onCreate
onComplete : function(transport)
{
if(transport.status==200)
{
$(div_destino).innerHTML = transport.responseText;
} // transport.status
} // onComplete
}); // ajax Request
} // function CarregaCidades
//]]>
</script>
</head>
<body>

<select id="estado" name="estado" onChange="CarregaCidades(this, 'lista_cidades')">
<option selected="selected" value="null">Selecione um estado...</option>
<?php
$Consulta
= mysql_query( ‘SELECT * FROM estado ORDER BY estado_nome ASC’ ) or die (mysql_error());
while (
$Estado = mysql_fetch_object( $Consulta ) )
{
printf(‘<option value=”%s”>%s</option>’, $Estado->estado_id, $Estado->estado_nome );
}
?>
</select>
<br />
<br />
<div id=”lista_cidades”>Selecione um estado primeiro…</div>
</body>
</html>

———————————-

/backend.php (Exibe a lista de cidades após selecionar o estado)
———————————-

<?php
require_once ( ‘./conn.php’ );
?>
<select id=”cidade” name=”cidade”>
<option selected=”selected” value=”null”>Selecione um estado…</option>
<?php
$Consulta
= mysql_query( ‘SELECT * FROM cidade WHERE estado_id=\” . $_GET['estadoId'] . ‘\’ ORDER BY cidade_nome ASC’ ) or die (mysql_error());
while (
$Cidade = mysql_fetch_object( $Consulta ) )
{
printf(‘<option value=”%s”>%s</option>’, $Cidade->cidade_id, $Cidade->cidade_nome );
}
?>
</select>


———————————-

Veja em funcionamento

Fazer download dos arquivos do exemplo

admin Ajax, Prototype ,