Fotogalerie bez databáze - využívá adresářů -
zdrojový kód
<?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///Dobrý den, jsem rád, že jste se rozhodli vyzkoušet mojí fotogalerii.
/// autor: Jan Kosnar
/// honza.kacko@seznam.cz
/// prozatímní www : www.honzakacko.tk, patrně zde naleznete novější verze této galerie
/// verze 1.1.2 (6.3.2005)
///Pokud by se Vám moje galerie opravdu líbila a našli by jste pro ní uplatnění, prosím upozorněte mě na to, zařadím vás na seznam
/// spokojených uživatelů
///Tato galerie je volně šiřitelná, můžete jí jakkoliv pozmněnovat, avšak Vás žádám, ponechte přiloženu vždy alespoň informaci o autorovi, můj e-mail
///
///
///
///galerie umožňuje:
///sama si vytáří náhledy obrázků
///snadné procházení dvěma různými způsoby (gallery browser zobrazí vše najednou, galerie pomocí náhledů)
///řadí fotografie podle data přidání
///komentovat fotografie (každou zvlášť)
///stylopis CSS je psán přímo do souboru pro snadnou editaci
///
///
///potřebujete:
///neměnit název souboru galerie.php
///mít práva pro zápis do adresáře
///vyžaduje mít v php nainstalováno gd2
///
///
///
///
///INSTALACE:
///Nahrajte soubor galerie.php (nepřejmenovávat) do libovolného adresáře (např. GALERIE)
///V tomto adresáří vytvořte libovlné množství PODADRESÁŘŮ do kterých nahrajte své fotografie
///Galerie si sama najde všechny fotografie v podadresářích!!!!
///
///
///prosím čtěte poznámky v programu,
///
///
/// pozor: soubory v galerii jsou řazeny podle data, pokud mají dva soubory stejné datum, zobrazí se pouze jeden z nich
/// v takovém případě doporučuji použít zavolat cast tohot skriptu ktera vam vyrobi u kazdeho souboru jine datum ulozeni
/// zavolejte tedy odkaz galerie.php?id=udrzba , pozor mozna bute musec pomoci chmod nastavit spravna prava k souborum
///
///hodně štěstí
/// doporučení na závěr: odkazujete-li na svých stránkách do fotogalerie, zahrňte již cestu k prvnímu adresáři s fotkamy, např galerie.php?cesta=foto1
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fotogalerie</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
<!--
.nadpis {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #006600;
background-color: #00CC00;
}
.text-kniha-jmeno {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #00CC00;
font-weight: bold;
}
.text-kniha-prispevek {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: normal;
color: #000000;
text-decoration: none;
background-color: #009900;
}
a {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: white;
text-decoration: none;
font-variant: small-caps;
filter: FlipH;
}
a:hover {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: #00FF00;
text-decoration: none;
font-variant: small-caps;
}
-->
</style>
<body style="margin-bottom: 0px; margin-right: 0px; margin-left: 0px; margin-top: 0px; background: black; color: white" >
<div style="position: absolute; left: 0px; width: 200; top: 2px; overflow: hidden; height: 50px; background-color: #000000; font-family: verdana; font-size: 20px"><strong>FOTOGALERIE</strong></div>
<?
///////////////////////////////////////////////NADPIS VAŠÍ FOTOGALERIE
?>
<? if($id == ""): ?>
<?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$oa = array("notgal", "temp");
/// do této proměné vepište adresáře které si NEpřejete zahrnout do vaší fotogalerie, oddělujte čárkami, pište každé zvlášť do uvozovek, to samé prosím učintě ještě v části "gallery browser"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$adresar = Dir (getcwd());
while ($polozka=$adresar->read()):
if (Is_Dir($polozka) and $polozka !="." and $polozka !=".."):
$pp[] = $polozka ;
endif;
endwhile;
$adresar->close();
$ppv = array_values(array_diff ($pp, $oa));
?>
<div style="position: absolute; left: 200px; top: 5px; overflow: hidden; height:15px; background-color: #000000; font-family: verdana; font-size: 15px">
<? ///////////////////////////////////////////////////// MENU
echo "<span > adresáře:</span>";
for ($i = 0; $i < Count ($ppv); $i++):
echo " <a href=\"galerie.php?id=&cesta=$ppv[$i]\">$ppv[$i]</a> ";
endfor;
?>
</div>
<?
/////
$adresar = Dir ("./$cesta");
while ($polozka=$adresar->read()):
$date = filemtime("./$cesta/" .$polozka);
$pp[$date] = $polozka;
endwhile;
$adresar->close();
ksort($pp);
$polepolozek = array_values($pp);
for ($i = 0; $i < Count ($polepolozek); $i++):
$cast = explode(".", $polepolozek[$i]);
for ($j = 0; $j < Count ($cast); $j++):
if (($cast[$j]=="jpg" or $cast[$j]=="JPG") && $cast[$j+1]!="thumb" && $cast[$j+2]!="jpeg"):
$polejpegu[] = $polepolozek[$i];
endif;
endfor;
endfor;
///
for ($i = 0; $i < Count ($polejpegu); $i++):
$puvodniobrazek=$polejpegu[$i];
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$sirka=150;
$vyska=150;
/// tyto dvě proměnné určují velikost vytvářeného náhledu
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (!file_exists("./$cesta/$puvodniobrazek.thumb.jpeg")):
$dataobrazku = getimagesize("./$cesta/".$puvodniobrazek);
if ($sirka && ($dataobrazku[0] < $dataobrazku[1])):
$sirka = ($vyska / $dataobrazku[1]) * $dataobrazku[0];
else:
$vyska = ($sirka / $dataobrazku[0]) * $dataobrazku[1];
endif;
$nahled = ImageCreateTrueColor($sirka,$vyska);
$obrazek = ImageCreateFromJpeg("./$cesta/".$puvodniobrazek);
imagecopyResampled ($nahled, $obrazek, 0, 0, 0, 0, $sirka, $vyska, $dataobrazku[0], $dataobrazku[1]);
ImageJpeg($nahled, "./$cesta/" .$puvodniobrazek .".thumb.jpeg", 70);
$obrazek="";
endif;
endfor;
for ($i = 0; $i < Count ($polejpegu); $i++):
$puvodniobrazek=$polejpegu[$i];
$dataobrazku = getimagesize("./$cesta/".$puvodniobrazek);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ($dataobrazku[0] < "600"): $velkasirka=$dataobrazku[0];
else: $velkasirka="600";
endif;
/// Zde můžete nastavit velikost zobrazovaného obrázku, nyní je to 600, na vás je pouze nahradit toto číslo (2x) vámi zvoleným.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if ($obrazek == $polejpegu[$i]):
?>
<div style="position: absolute; left: 180px; top: 53px; ">
<? //////////////////////////////////////// odsazení vlastní fotografie
echo "<center><img border = \"0\" src=\"" .$cesta ."/" .$polejpegu[$i] ."\"" ." width=\"" .$velkasirka ."\"></center><br>" ;
$zobdat = filemtime ("$cesta/$polejpegu[$i]");
echo "<center><span class=\"text-kniha-odkaz\">" .(Date("H:i:s" .", " . "j. " . "m. " . "Y ", $zobdat)) ."</span></center><br>";
endif;
endfor;
if ($obrazek != ""): ?>
<div class="nadpis">komentáře</div>
<form method="post">
<span class="text-kniha-jmeno">Od: </span><input name="jmeno" type="text" size="15" maxlength="60" style="background-color: #009900; border-width: 0px; height: 20 px" >
<span class="text-kniha-jmeno">Komentář: </span><textarea cols="25" rows="1" name="koment" style="background-color: #009900; border-width: 0px; height:20px"></textarea>
<input type="submit" value="Odeslat" style="background-color: #00CC00; border-width: 0px">
<input type="hidden" name="odeslano" value="ano">
</form>
<?
if ($odeslano=="ano"):
if ($jmeno == ""):
$jmeno = "Anonym";
endif;
if ($koment != ""):
$jmeno = "<span class=\"text-kniha-jmeno\">$jmeno</span>";
$koment = HTMLSpecialChars($koment);
$koment = Trim($koment);
$koment = Str_Replace("\n"," <BR> ", $koment);
$slovo = Split("[[:blank:]]+", $koment);
for($y=0;$y<Count($slovo);$y++):
$slovo[$y] = Trim($slovo[$y]);
$celek .= $slovo[$y] . " ";
endfor;
$koment = $celek;
$koment = Str_Replace("<b>", "<b>", $koment);
$koment = Str_Replace("</b>", "</b>", $koment);
$koment = Str_Replace("<i>", "<i>", $koment);
$koment = Str_Replace("</i>", "</i>", $koment);
$koment = Str_Replace("<u>", "<u>", $koment);
$koment = Str_Replace("</u>", "</u>", $koment);
$koment = "<div class=\"text-kniha-prispevek\">$koment</div>";
$cesta2 = "<!-- ,$cesta-$obrazek, ****<a href=\"galerie.php?id=&obrazek=$obrazek&cesta=$cesta\">Tento obrázek </a>**** --> \n";
$ip = "<!-- ($REMOTE_ADDR) -->";
$write = StripSlashes($ip .$jmeno .$koment .$cesta2); //odstraneni koncu radku
if (File_Exists ("galerie-data.dat")):
$fp = FOpen ("galerie-data.dat", "r");
$zaloha = File ("galerie-data.dat");
if (Count($zaloha)>10):
copy ("galerie-data.dat", "galerie-data.dat.zaloha");
endif;
$data = FRead ($fp, FileSize("galerie-data.dat"));
FClose($fp);
endif;
$fp = FOpen ("galerie-data.dat", "w");
FWrite ($fp, $write.$data);
FClose($fp);
?> <div class="nadpis">Komentář odeslán!</div> <?
endif;
$data2 = File ("./galerie-data.dat");
for ($i = 0; $i < Count ($data2); $i++):
$slovo = explode(",", $data2[$i]);
for ($j = 0; $j < Count ($slovo); $j++):
if ($slovo[$j]==$cesta."-".$obrazek):
echo $data2[$i];
endif;
endfor;
endfor;
else:
$data2 = File ("./galerie-data.dat");
for ($i = 0; $i < Count ($data2); $i++):
$slovo = explode(",", $data2[$i]);
for ($j = 0; $j < Count ($slovo); $j++):
if ($slovo[$j]==$cesta."-".$obrazek):
echo $data2[$i];
endif;
endfor;
endfor;
endif;
?>
<br><br><br>
</div>
<? endif;
?>
<div style="position: absolute; left: 0px; width: 170; top: 50px; overflow: auto; height: 89%; background-color: #000000">
<? /////////////////////////////////////////////////////// zde nezapomeňte změnit width pokud měníte velikost náhledů
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// V tomto odstavci můžete měnit kolik náhledů zobrazovat na stránku (v budocnu na to udělám proměnou, nyní vám znázorním co dělat
/// pokud chcete změnit počet náhledů na stránce např. na 20
///
if (!IsSet($idprispevek)):
$idprispevek=1;
endif;
$zacatek = $idprispevek*5-5; //// sem přijde 20-20
$konec = $idprispevek*5-1; /// 20-1
for ($j=$zacatek;$j<=$konec;$j++):
if ($polejpegu[$j] != ""):
echo "<center><a href=\"galerie.php?id=&idprispevek=$idprispevek&obrazek=" .$polejpegu[$j] ."&cesta=" .$cesta ."\"><img border=0 src=\"".$cesta ."/" .$polejpegu[$j] .".thumb.jpeg" ."\"></a></center>";
endif;
endfor;
$strana = Ceil(Count($polejpegu)/5); /// sem 20
?> </div>
<div style="position: absolute; left: 0px; top: 30px; background-color: #00CC00">
<? //////////////////////////////////////////////////// upravuje polohu odkazů na jednotlivé stránky
echo " <span style=\"color: red; font-weight: bold; font-size: 9px \">" ."(" .($idprispevek*5-4) ."-" .($idprispevek*5).")" ." </span>"; //// sem 20-19 a 20
for ($x=1;$x<=$strana;$x++):
echo "<a href=\"galerie.php?cesta=$cesta&id=&idprispevek=$x\" style=\"font-size: 9px\">" . ($x*5-4) . "-" . $x*5 . " </a> "; ///// sem 20-19 a 20
endfor;
echo " <a href=\"galerie.php?id=galbrow&cesta=$cesta\" style=\"font-size: 10px\" >gallery browser</a> ";
/// tady končí nastavení počtu na stránku
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
?>
<?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///Gallery browser je rozšíření, které automaticky vypisuje všechny adresáře vaší galerie a umožňuje prohlížet jejich obsah najednou.
///volá se pomocí proměnné id="galbrow", odkaz na něj tedy bude vypadat následnovně
////http://www.neco.cz/galerie.php?id=galbrow
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
?>
<? elseif($id == "galbrow"):
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// doporučuji do tohoto odkazu dopsat cestu k prvnímu adresáří vaší fotogalerie ?>
<br><br><br><a href="galerie.php">zpět do galerie</a><br><?
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$oa = array("notgal");
/// do této proměné vepište adresáře které si NEpřejete zahrnout do vaší fotogalerie, oddělujte čárkami, pište každé zvlášť do uvozovek
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$adresar = Dir (getcwd());
while ($polozka=$adresar->read()):
if (Is_Dir($polozka) and $polozka !="." and $polozka !=".."):
$pp[] = $polozka ;
endif;
endwhile;
$adresar->close();
$ppv = array_values(array_diff ($pp, $oa));
echo "<span class=\"text-kniha-prispevek\"> adresáře:</span>";
for ($i = 0; $i < Count ($ppv); $i++):
echo " <a href=\"galerie.php?id=galbrow&cesta=$ppv[$i]\">$ppv[$i]</a> ";
endfor;
echo "<br><div class=\"text-kniha-prispevek\"> $cesta </div><br>";
$adresar2 = Dir ("./$cesta/");
while ($polozka2=$adresar2->read()):
$date = filemtime("./$cesta/" .$polozka2);
$pp2[$date] = $polozka2;
endwhile;
ksort($pp2);
$pp2 = array_values($pp2);
$data2 = File ("./galerie-data.dat");
for ($i = 0; $i < Count ($pp2); $i++):
$cast = explode(".", $pp2[$i]);
for ($j = 0; $j < Count ($cast); $j++):
if (($cast[$j]=="jpg" or $cast[$j]=="JPG") && $cast[$j+1]!="thumb" && $cast[$j+2]!="jpeg"):
echo "<img src=\"$cesta/$pp2[$i]\"> <br>";
$obrazek = $pp2[$i];
for ($k = 0; $k < Count ($data2); $k++):
$slovo = explode(",", $data2[$k]);
for ($l = 0; $l < Count ($slovo); $l++):
if ($slovo[$l]==$cesta."-".$obrazek):
echo $data2[$k];
endif;
endfor;
endfor;
echo "<a href=\"galerie.php?id=&obrazek=$obrazek&cesta=$cesta\">Komentovat</a><br><br>";
endif;
endfor;
endfor;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// nasledujci skriptik resi problem se stejnymi daty u obrazku, jeho prubeh muze trvat delsi dobu v zavislosti na poctu fotografii, nezapomente
/// zadat cestu, pozor take na nastaveni "maximum execution time" ve vašem php
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
elseif($id == "udrzba"):
$adresar = Dir ("./$cesta/");
while ($polozka=$adresar->read()):
if ($polozka !="." and $polozka !=".."):
sleep(2); //// Zde může být i 1 - ušetříte tím čas....na Windows občas dělá neplechu
touch("$cesta/$polozka",time());
endif;
endwhile;
echo "hotovo";
endif;
////Opravdu jste dočetli až sem???
?>
</body>
</html>