Salve a tutti,
navigando qui su html.it (o su qualche altro portale?), ho trovato uno script che genera una photogallery davvero stupenda...
Ora, l'unico difetto è che non supporta una struttura di directory per organizzare le immagini!
Quindi, modificando il sorgente, ho provato ad implementarla; ma niente, non c'è verso! E' come se le mie istruzioni (quelle che ho aggiunto) venissero totalmente ignorate!
Il php non mi dà nessun errore, dove sta il problema?
Vi allego un po' di files coinvolti (almeno per l'upload), mi aiutate? Perché una volta capito il meccanismo penso di poterlo implementare anche nel visualizzatore!
Allora, iniziamo con la pagina principale:
<?
session_start();
$_SESSION["alb"] = $_GET["alb"];
require 'config.php';
if ($handle = opendir($f_thumb)) {
$array = array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file !="Thumbs.db") {
$array[] = $file;
}
}
closedir($handle);
}
usort($array, "strnatcmp");
$id = (101 + count($array));
?>
<html>
<head>
<style>
body{font-family:verdana;font-size:12px; text-align:center}
table{font-family:verdana;font-size:12px; margin-right:auto; margin-left:auto;}
h1{font-family:verdana;font-size:20px;font-weight:bold}
</style>
<title>Modifica la Galleria</title>
</head>
<body>
<h1>aggiungi immagine</h1>
Torna alla Galleria</p>
<form action="aggiungi.php" method="post" enctype="multipart/form-data">
<table border="1" cellpadding="10" align="center">
<tr>
<td>Immagine: </td>
<td align="right"><input name="id" type="hidden" value="<? echo "$id" ?>">
<input type="file" name="img" size="20"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Aggiungi"></td>
</tr>
</table>
</form>
<table border="1" cellpadding="10" width="400px" align="center">
<tr>
<td>thumb</td>
<td colspan="2">ordine</td>
<td>nome</td>
<td>azione</td>
</tr>
<form action="rinomina.php" method="post">
<?php
$x = 0;
while ($x < (count($array))) {
?>
<tr>
<td>[img]<? echo $f_thumb. $array[$x] ?> [/img]</td>
<td><input name="id<? echo ("$x") ?>" type="text" value="<? echo $x+1 ?>" size="1"></td>
<td><? if ($x != 0) {
echo '+
';
}
if ($x < (count($array)-1)) {
echo '-';
}
?></td>
<td><input name="nome<? echo ("$x") ?>" type="text" value="<? echo (substr(rtrim ($array[$x], ".jpg.gif.png.jpeg.JPG"),4)) ?>" size="30">
<input type="submit" value="rinomina" ></td>
<td>Elimina</td>
</tr>
<? $x++;
}
?></form>
</table>
</body>
</html>
Poi proseguiamo con il file aggiungi.php, che elabora il form inviato dalla pagina di sopra:
<?
session_start();
require 'config.php';
//controllo se esistono le cartelle degli album, se non esistono le creo
if(!is_dir($f_photo)) mkdir($f_photo,0777);
if(!is_dir($f_slide)) mkdir($f_slide,0777);
if(!is_dir($f_thumb)) mkdir($f_thumb,0777);
#Controllo se il file è stato inviato; controllo se il file è un immagine jpg o png e assegno alla variabile ext l’estensione giusta
if (isset($_POST['submit'])) {
if(!is_uploaded_file($_FILES["img"]["tmp_name"])) {
print("<center>[b]Errore nell’upload del file");
exit;
}
if($_FILES["img"]["type"] != "image/jpeg" && $_FILES["img"]["type"] != "image/pjpeg" && $_FILES["img"]["type"] != "image/png" && $_FILES["img"]["type"] != "image/gif" && $_FILES["img"]["type"] != "image/x-png") {
print("<center>[b]Devi caricare un file valido!
Il file caricato è : ".$_FILES["img"]["type"])."
Torna indietro";
exit;
}
}
#Genero un nome per il file inviato. L'ID è un numero di 3 cifre che serve per controllare l'ordine dei file nella visualizazione; il valore viene generato nel file index.php così: (numero di immmagini della galleria + 101).
$nomefile = $_POST["id"] . "-" . $_FILES["img"]["name"];
#Definisco il percorso delle immagini
$filetemp = $nomefile;
$filebig = $f_photo . $nomefile;
$filesmall = $f_thumb . $nomefile;
$fileslide = $f_slide . $nomefile;
#Sposto il file inviato dal form nella directory scelta e con il nome definito sopra
move_uploaded_file($_FILES["img"]["tmp_name"], $filetemp) or die("<center>Errore durante l’upload del file");
#Assegno alle variabili w e h rispettivamente la larghezza e l’altezza dell’immagine originale
list($w, $h) = getimagesize($filetemp);
if($_FILES["img"]["type"] == "image/jpeg" or $_FILES["img"]["type"] == "image/pjpeg") {
$im = @imagecreatefromjpeg($filetemp);
}
if($_FILES["img"]["type"] == "image/gif") {
$im = @imagecreatefromgif ($filetemp);
}
if($_FILES["img"]["type"] == "image/png" or $_FILES["img"]["type"] == "image/x-png") {
$im = @imagecreatefrompng($filetemp);
}
#thumb
$ntw = ($w / ($h / $hthumb));
$nti=imagecreatetruecolor ($ntw,$hthumb);
imagecopyresized($nti,$im,0,0,0,0,$ntw,$hthumb,$w, $h);
imagejpeg($nti,$filesmall,75);
#slide
$nsw = ($w / ($h / $hslide));
$newh = $hslide;
# ridimensiono l'immagine dello slideshow se la larghezza supera le misure del contenitore (settato in config.php)
if ($nsw > $wphoto) {
$nsw = $wphoto;
$newh = ($h / ($w / $nsw));
}
$nsi=imagecreatetruecolor ($nsw,$newh);
imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
imagejpeg($nsi,$fileslide,75);
#big
# ridimensiono l'immagine caricata se supera le misure indicate nel file config.php
if ($h > $hbig) {$newh = $hbig;}
else {$newh = $h;}
$nsw = ($w / ($h / $newh));
if ($nsw > $wbig) {
$nsw = $wbig;
$newh = ($h / ($w / $nsw));
}
$nsi=imagecreatetruecolor ($nsw,$newh);
imagecopyresized($nsi,$im,0,0,0,0,$nsw,$newh,$w,$h );
imagejpeg($nsi,$filebig,75);
unlink($filetemp);
header("Location: index.php");
?>
Quindi, visto che entrambi questi files richiedono un file chiamato config.php, qui sotto vi incollo anche quello:
<?
# ATTENZIONE: le cartelle dovranno avere gli opportuni permessi di scrittura.
$f_photo = "../".$_SESSION["al"]."/big/"; # path dove lo script creerà l’immagine grande.
$f_thumb = "../".$_SESSION["al"]."/tmb/"; # path dove lo script creerà l’immagine per le thumb.
$f_slide = "../".$_SESSION["al"]."/img/"; # path dove lo script creerà l’immagine per lo slide show.
$wphoto = 720; # assegnare la larghezza del layout che contiene thumbnails e slideshow.
$hbig = 1000; # assegnare l'altezza massima delle immagini grandi.
$wbig = 1000; # assegnare la larghezza massima delle immagini grandi.
$hslide = 300; # assegnare l'altezza standard delle immagini dello slide show.
$hthumb = 50; # assegnare l'altezza standard delle thumbnails.
$spthumb = 3; # assegnare lo spazio tra una thumb e l'altra.
$interv = 150; # intervallo di tempo per la durata delle slide (escluso l'intervallo della dissolvenza incrociata).
$crossx = 30; # intervallo di tempo per la durata della dissolvenza incrociata.
$keygallery ="Photogallery"; # parola chiave che compare in diversi punti della pagina; ad es. nel title delle thumb e dello slide;
?>
In pratica, quello che vorrei ottenere è che venisse creata una cartella chiamata con il nome dell'album (che è in $_GET["alb"]), quindi all'interno di questa cartella creare le sottocartelle tmb, big e img.. Così, nel visualizzatore, indicherò l'album da mostrare, in modo che sappia da quale directory andare a prendere le immagini...
Dove sta il problema?
Secondo voi è questo il metodo migliore per implementare questa feature nello script? O conviene procedere in maniera diversa (come) (non ho mysql)?
Grazie in anticipo a chi potrà/vorrà aiutarmi!