Galera, vou mostrar aqui como criar um album de fotos sem usar o banco de dados, foi útil pra mim quando precisei fazer um album e a conta do cliente já não podia mais criar bancos de dados...
O script consiste em 7 arquivos sendo eles:
criarcateg.php - usado para criar uma categoria
enviar.php - para fazer o upload de imagens
gravacat.php - grava a categria descrita no criarcateg.php
mini.php - mostra as imagens selecionadas pelo ver.php
n.txt - grava a quantidade de categoria criadas
postar.php - armazena os dados das categoria
ver.php - seleciona a categoria e mostrar as imagens pelo arquivo mini.php
é necessário ainda criar uma pasta chamada "imagens"
Bom, como podem notar não está incluido nenhum modo de autenticação de usuário (proximo tutorial, espero....) nem arquivo css, porém é bem simples acrescentar esse tipo de script.
Vamos ao script:
Página criarcateg.php
CODE
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div id="quadro">
<h1>Criar nova Galeria de fotos</h1>
<br />
<form action="gravarcat.php" method="get" name="postagem" target="_self" class="style6">
<fieldset>
<legend>Use somente dados...</legend>
<label for="pasta">Pasta :</label>
<input name="pasta" type="text" class="campo" size="30" id="pasta" />
<span>Nome da pasta sem o uso de caracteres especiais ou "espaços" </span>.<br />
<br />
<label for="titulo">Titulo :</label>
<input name="titulo" type="text" class="campo" size="30" id="titulo" />
<span>Titulo da galeria que será mostrado.</span><br /><br />
<br /><br />
<input name="Submit" type="submit" class="botao" value="Enviar" />
<input name="Submit2" type="reset" class="botao" value="Limpar" />
</fieldset>
</form>
</div>
</body>
</html>
enviar.php
CODE
<html>
<body>
<?
include("postar.php");
if($acao == "gravar") {
$pasta = $eventos[$opt]['pasta'];
if($file != "" or $file2 != "" or $file3 != "" or $file4 != ""){
$fp = fopen("$pasta/n.txt", "r");
$n = fgets($fp, 500);
fclose($fp);
$ex = $n;
if ( $file != ""){
$n = $n+1;
$fp = fopen("$pasta/n.txt", "w+");
fputs($fp, $n);
fclose($fp);
$nomearquivo = "$ex";
$none = $nomearquivo;
$status = move_uploaded_file($file,"$pasta"."/"."$nomearquivo.jpg");
chmod ("$pasta"."/"."$nomearquivo.jpg", 0777);
}
if ( $file2 != ""){
$ex = $ex+1;
$n = $n+1;
$fp = fopen("$pasta/n.txt", "w+");
fputs($fp, $n);
$nomearquivo = "$ex"; $none = $nomearquivo;
$status = move_uploaded_file($file2,"$pasta"."/"."$nomearquivo.jpg");
chmod ("$pasta"."/"."$nomearquivo.jpg", 0777);
}
if ( $file3 != ""){
$ex = $ex+1;
$n = $n+1;
$fp = fopen("$pasta/n.txt", "w+");
fputs($fp, $n);
fclose($fp);
$nomearquivo = "$ex"; $none = $nomearquivo;
$status = move_uploaded_file($file3,"$pasta"."/"."$nomearquivo.jpg");
chmod ("$pasta"."/"."$nomearquivo.jpg", 0777);
}
if ( $file4 != ""){
$ex = $ex+1;
$n = $n+1;
$fp = fopen("$pasta/n.txt", "w+");
fputs($fp, $n);
fclose($fp);
$nomearquivo = "$ex"; $none = $nomearquivo;
$status = move_uploaded_file($file4,"$pasta"."/"."$nomearquivo.jpg");
chmod ("$pasta"."/"."$nomearquivo.jpg", 0777);
}
die('<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
Sua Foto Foi Cadastrada com Sucesso!
');
}else{
die('<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
Erro... Prencha todos os campos
');
}}
?>
<div id="quadro">
<h1>Cadastrar imagens em uma Galeria</h1>
<br />
<form method="post" action="enviar.php?acao=gravar" enctype="multipart/form-data">
<fieldset>
<legend>Use somente arquivos com formato JPG.</legend>
<label for="opt">Galeria :</label>
<select name="opt" class="campo" id="opt">
<?php
$fp = fopen("n.txt", "r");
$n = fgets($fp, 500);
fclose($fp);
$cont = 0;
do {
echo '<option value="' .$cont. '">' . $eventos[$cont]['titulo'] . '</option>';
$cont = $cont+1;
} while ( $cont < $n );
?>
</select>
<br />
<br />
<label for="opt1"> Foto 1 : </label>
<input name="file" type="File" class="campo" size="30" id="opt1" />
<br />
<br />
<label for="opt2"> Foto 2 :
<input name="file2" type="File" class="campo" size="30" id="opt2" />
<br />
<br />
<label for="opt3"> Foto 3 :
<input name="file3" type="File" class="campo" size="30" id="opt3" />
<br />
<br />
<label for="opt4"> Foto 4 :
<input name="file4" type="File" class="campo" size="30" id="opt4" />
<br /><br /><br />
** CUIDADO PARA NÃO ESQUECER DE SELECIONAR A PASTA DA GALERIA **
<br />
<br /><br />
<input name="salvar" type="Submit" class="botao" value="Cadastrar" />
<input name="limpar" type="Reset" class="botao" value="Limpar" />
</p>
</fieldset>
</form>
</div>
</body>
gravacat.php
CODE
<html>
<body>
<div id="quadro">
<?php
$nome_arquivo = "";
$fp = "";
if ($pasta !="" and $titulo !="") {
$vali = is_dir("imagens/".$pasta);
if ($vali != "1") {
$nome_arquivo = "postar.php";
$fp = fopen($nome_arquivo, "a+");
fseek($fp, 800);
fputs($fp,"\n", 30);
fputs($fp,'<?php', 512);
fputs($fp,"\n", 512);
fputs($fp,'$eventos[] = array(', 512);
fputs($fp,"\n", 512);
fputs($fp,' \'pasta\' => \'', 512);
fputs($fp,'imagens/', 512);
fputs($fp, $pasta, 512);
fputs($fp,'\',', 512);
fputs($fp,"\n", 512);
fputs($fp,' \'titulo\' => \'', 512);
fputs($fp, $titulo, 512);
fputs($fp,'\'', 512);
fputs($fp,"\n", 512);
fputs($fp,');', 512);
fputs($fp,"\n", 512);
fputs($fp,'?>', 512);
fclose($fp);
$res = mkdir("imagens/".$pasta , 0777);
chmod ("imagens/".$pasta ,0777);
$fdp = fopen("imagens/$pasta/n.txt", "a+");
chmod ("imagens/$pasta/n.txt", 0777);
fputs($fdp, 0);
fclose($fdp);
if ($res == "true") {
echo 'Galeria Criada com Sucesso!! ';
$fp = fopen("n.txt", "r");
$n = fgets($fp, 500);
$n = $n+1;
$fp = fopen("n.txt", "w+");
fputs($fp, $n);
fclose($fp);
}
}
if ($vali == "1") {
echo ' ERRO!!! <br /><br /> Pasta existente, tente novamente...';
}}else {
echo ' ERRO!!! <br /><br /> Campos em branco, tente novamente...';
}
?>
</div>
</body>
</html>
mini.php
CODE
<html>
<?php
include("postar.php");
function get_file_extension($file)
{
$file = strtolower($file);
$extension = split("[/\\.]", $file);
$n = sizeof($extension) - 1;
return $extension[$n];
}
function is_valid_file_extension($file, $types = array())
{
$ext = get_file_extension($file);
return in_array($ext, $types) ? true : false;
}
$cfg = array();
$eventos = array();
$cfg['num_colunas'] = 2;
$cfg['file_exts'] = array('jpg','jpeg','gif', 'png');
include("postar.php");
reset($eventos);
?>
<head>
<title>Galeria - <?php echo $eventos[$galeria]['titulo']; ?></title>
<script type="text/javascript">
function show(url,larg,alt){
newWindow=window.open(url, '', "toolbar=0 ,location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0, " + 'width=' + larg + ', height=' + alt);
}
</script>
</head>
<body>
<div id="quadrog">
<?php echo $eventos[$galeria]['titulo']; ?>
<div id="miniaturas">
<?php
if (isset($_GET['galeria'])){
$galeria = intval($_GET['galeria']);
} else {
die("Galeria não informado");
}
if (file_exists($eventos[$galeria]['pasta']))
{
$dir = @opendir($eventos[$galeria]['pasta']);
}
else
{
die("Pasta não encontrada");
}
?>
<?php
$arr_imagens = array();
while (false !== ($file = readdir($dir)))
{
if ($file != '.' && $file != '..')
{
if (is_valid_file_extension($file, $cfg['file_exts']))
{
$arr_imagens[] = $file;
}
}
}
$k = sizeof($arr_imagens);
for ($i=0; $i<$k; $i++)
{
echo '<a href="java script:show(\' '. $eventos[$galeria]['pasta'] .'/' . $arr_imagens[$i] . '\' ,504 ,494)"><img class="mini" src=' . $eventos[$galeria]['pasta'] .'/' . $arr_imagens[$i] . ' width="130" height="90"></a>' . "\n";
}
?>
</div>
</div>
</body>
</html>
n.txt (valor inicial zero)
CODE
0
postar.php (arquivo vazio... apenas para evitar erro na hora de criar e modificar o arquivo)
ver.php (aqui tem apenas um detalhe que gostaria de explicar, o script vai pegar as categorias e atribuir um valor "galeriae" ou "galeriad" alternadamente com o objetivo desse valores servirem para fazer um alinhamento lado a lado... Ex: a primeira categoria recebe "galeriae" a segunda "galeriad" a terceira novamente "galeriae" assim por diante. podemos setar esse valor como id de uma div e alinhar usando css...)
CODE
<html>
<head>
<title>Galeria de Fotos</title>
</head>
<body>
<div id="quadrog">
<?php
include("postar.php");
$num_colunas = 0;
for ($i=0; $i<sizeof($eventos); $i++)
{
$vali = $i%2;
if ($vali == 0){
$posi = galeriae;
}
if ($vali == 1){
$posi = galeriad;
}
echo '<div id="'. $posi .'">';
echo '<div id="galeriat">';
echo '<a class="texto" href="mini.php?galeria='. $i .'">' . $eventos[$i]['titulo'] . '</a>';
echo '</div>';
echo "</div>";
echo "\n";
}
?>
</div>
</body>
</html>
É isso, espero que vocês possam fazer um bom proveito desse script!
Vlw Galera!
Comentários:
FelipeMorais disse:
Só não reparem no nome dos arquivos, coloquei o primeiro que vei pensei e ficou uma zorra...Foi mal, no proximo eu vou fazer direito =]
ezfoto.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div id="quadro">
<h1>
Excluir Fotos</h1>
<br />
Selecione as fotos que serão excluidas!
<br /><br />
<?php
if ($acao == "sim"){
include('postar.php');
$fpx = fopen(''. $eventos[$opt]['pasta'] .'/n.txt', "r");
$nf = fgets($fpx, 500);
fclose($fpx);
$diretorio = $eventos[$opt]['pasta'];
echo '<div id="tanto">';
echo 'Essa galeria tem o total de: ' .$nf. ' fotos cadastradas...'; echo '</div>';
echo "<form action=\"teste.php?nf=$nf&diretorio=$diretorio\" method=\"post\" name=\"from1\">";
echo '<div id="qmini">';
$cont = 0;
while ($cont < $nf) {
echo '<div id="mini">';
echo "<img src=\"" .$diretorio. '/' .$cont. ".jpg\" width=\"94\" height=\"70\" />\n";
echo '' .$cont. '.jpg';
echo "<input type=\"checkbox\" name=\"selef[" .$cont. "]\" value=\"apaga\" />\n";
$cont++;
echo '</div>';
}
if ($nf != 0){
echo '<div id="qexclui">';
echo '<br />';
echo '<input name="Submit" type="submit" class="botao" value="Excluir" />';
echo '</div>';
echo '</div>';
echo '</form>';
}else{
echo 'Essa galeria não possui fotos cadastrada...';
}
echo '';
echo '';
echo '';
}
?>
</div></div>
</body>
</html>
excluir.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
</div>
<div id="quadro">
<h1>
Excluir imagens de uma Galeria</h1>
<br />
<form method="post" action="ezfoto.php?acao=sim" enctype="multipart/form-data">
<fieldset>
<legend>Selecione a Galeria em que deseja excluir as Imagens</legend>
<label for="opt"> Galeria :</label>
<select name="opt" class="campo" id="opt">
<?php
include('postar.php');
$fp = fopen("n.txt", "r");
$n = fgets($fp, 500);
fclose($fp);
$cont = 0;
do {
echo '<option value="' . $cont . '">' . $eventos[$cont]['titulo'] . '</option>';
$cont = $cont+1;
} while ( $cont < $n );
?>
</select>
<br />
<br />
<input name="salvar" type="Submit" class="botao" value="Avançar" />
</fieldset>
</form>
</div>
</body>
</html>
teste.php
<?php
$testa = count($selef);
$cont = 0;
$contnome = 0;
if ($testa != 0){
do{
if ($cont > 9){
$magem = "$diretorio/$cont.jpg";
}else if($cont > 99){
$magem = "$diretorio/$cont.jpg";
}else{
$magem = "$diretorio/$cont.jpg";
}
if ($selef[$cont]=="apaga"){
unlink($magem);
$fpx = fopen(''. $diretorio .'/n.txt', "r");
$n = fgets($fpx, 500);
fclose($fpx);
$n--;
$fp = fopen(''. $diretorio .'/n.txt', "w+");
fputs($fp, $n);
fclose($fp);
}
if ($selef[$cont]!="apaga"){
if ($contnome > 9){
$magem2 = "$diretorio/$contnome.jpg";
}else if($contnome > 99){
$magem2 = "$diretorio/$contnome.jpg";
}else{
$magem2 = "$diretorio/$contnome.jpg";
}
rename($magem,$magem2);
$contnome++;
}
$cont++;
}
while($cont<$nf);
}
echo '<html>';
echo '<body>';
echo '<div id="quadro">';
if ($testa == 0){
echo 'Selecione as fotos que deseja apagar...';
}else{
echo 'As fotos foram apagadas com sucesso...';
}
echo '</div>';
?>
Excluir categorias
exclui.php
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<div id="quadro">
<div id="titu">
Excluir Galeria de fotos</div>
<br />
<br /><br />
<?php
$fpu = fopen("n.txt", "r");
$ns = fgets($fpu, 500);
fclose($fpu);
if ($ns != 0){
?>
<form action="exeexclui.php" method="get">
<fieldset>
<legend>Selecione qual galeria será excluida, e click em apagar.</legend>
<label for="titi">Galeria :</label>
<select name="titi" class="campo" id="titi">
<?php
include('postar.php');
$fp = fopen("n.txt", "r");
$n = fgets($fp, 500);
fclose($fp);
$cont = 0;
do {
echo '<option value="' . $cont . '">' . $eventos[$cont]['titulo'] . '</option>';
$cont = $cont+1;
} while ( $cont < $n );
?>
</select>
<input name="veri" type="hidden" value="1" />
<input name="rep" type="hidden" value="<?php echo $n; ?>" />
<br /><br /><br />
<input type="submit" class="botao" value="Apagar" />
</fielset>
</form>
<?php
}else{
echo "Não existe Galerias criadas...";
}
?>
</div>
</body>
</html>
exeexclui.php
<body>
<div id="quadro">
<?php
if ($veri == 1) {
$titi++;
$ldi = 1;
$ldf = 8;
if ($titi == 1){
$ldi = 1;
$ldf = 8;
}else{
$conta = 1;
do{
$conta++;
$ldi = $ldi + 8;
$ldf = $ldf + 8;
} while ($conta!=$titi);
}
include('postar.php');
$med = $titi;
if ($titi==1){
$med = 0;
}else{
$med--;
}
$fpa = fopen(''. $eventos[$med]['pasta'] .'/n.txt', "r");
$pega = fgets($fpa, 500);
fclose($fpa);
for ($gira=0; $gira < $pega; $gira++){
if ($gira < 10 && $gira >= 0){
unlink(''. $eventos[$med]['pasta'] .'/' . $gira . '.jpg');
}if ($gira < 100 && $gira > 9){
unlink(''. $eventos[$med]['pasta'] .'/' . $gira . '.jpg');
}if ($gira < 1000 && $gira > 99){
unlink(''. $eventos[$med]['pasta'] .'/' . $gira . '.jpg');
}}
if (file_exists(''. $eventos[$med]['pasta'] .'/Thumbs.db')== 1){
unlink(''. $eventos[$med]['pasta'] .'/Thumbs.db');
}
unlink(''. $eventos[$med]['pasta'] .'/n.txt');
rmdir($eventos[$med]['pasta']);
if (file_exists($eventos[$med]['foto'])== 1){
unlink($eventos[$med]['foto']);
}
include('alterapost.php');
altera($ldi, $ldf);
$fpe = fopen("n.txt", "r");
$nn = fgets($fpe, 500);
fclose($fpe);
$nn--;
$fpe = fopen("n.txt", "w");
fputs($fpe, $nn, 512);
fclose($fpe);
echo '<span class="texto">Galeria Excluida...</span>';
echo '<br /><br /><br /><br /><br /><p class="link"><a class="link" href="exclui.php">Voltar</a></p>';
}
?>
</div>
</body>
alterapost.php
function altera($ldi, $ldf){
$ldi--;
$ldf--;
$nome_arquivo = "postar.php";
$sarray = 0;
$fpm = "";
$fpm = fopen($nome_arquivo, "a+");
rewind($fpm);
do {
if ($ldi <= $sarray && $ldf >= $sarray) {
$sarray++;
$tes = fgets($fpm, 10000);
$aff = feof($fpm);
}else{
$sarray++;
$tes = fgets($fpm, 10000);
$aff = feof($fpm);
$tete[$sarray] = $tes;
}
} while ($aff != 1);
fclose($fpm);
$fpm = fopen($nome_arquivo, "w+");
for ($cont=0; $cont <= $sarray; $cont++) {
fputs($fpm, $tete[$cont], 512);
}
}
?>
nao_sei disse:
então cara... gostei e outros tb gostaram da iniciativa do seu script para montar álbuns de fotos...
Mas ele tem um problema grave: só funciona com register_globals = on . o que é uma falha grande de segurança...
todos os campos vindos de formulário devemos pegar ele com $_POST, $_GET ou $_REQUEST
no inicio do arquivo gravarcat.php, por exemplo, para gente trabalhar corretamente:
$titulo = isset($_GET['titulo']) ? $_GET['titulo'] : "";
e nos forms a gente porderia trabalhar com POST em vez de trabalhar com GET... o GET passa tudo via url, é ruim que o um usuário mais saidinho pode usar isso de uma forma feia.. rs
são só algumas sugestões...
FelipeMorais disse:
Esse é um script que usava a algum tempo e não tinha intenção de atualizar para OFF, mas vou refazer o script com register_globals = OFF e posto aqui...
nao_sei disse:
tamos ae pra dar um help...
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).