галерия - валидация

val4o0o0

Registered
Код:
<?php
// КОНФИГУРАЦИЯ //

$pics_folder = "images/lightbox"; // в коя папка са картинките и категориите
$max_width = 170; // максимална широчина
$max_height = 170; // максимална височина
$pics_per_page = 6; // по колко картинки на страница
$pics_ex = array('jpg','jpeg','gif','png'); // кои файлове да зачита като картинки

// КРАЙ НА КОНФИГУРАЦИЯТА //

function resize($pic)
{
    global $max_width, $max_height;
    $max_width_pic = $max_width;
    $max_height_pic = $max_height;
    list($width,$height) = getimagesize($pic);
    $ratio = $width / $height;
    
    if ($width > $max_width_pic || $height > $max_height_pic)
    {
        if ($width > $height)
        {
            $width = $max_width_pic;
            $height = $width / $ratio;
        }
        elseif ($width < $height)
        {
            $height = $max_height_pic;
            $width = $height * $ratio;
        }
        elseif ($width == $height)
        {
            $width = $max_width_pic;
            $height = $max_height_pic;
        }
    }
    $width = intval($width);
    $height = intval($height);
    return array("width" => $width, "height" => $height);
}

$pics_folder = preg_replace('/[\/]+/', '/', preg_replace('/^[\/]+/', '', $pics_folder).'/');

function all_images()
{
    global $pics_folder, $pics_ex;
    $folders = array($pics_folder);
    $out_files = array();
    while (count($folders))
    {
        foreach ($folders as $folder)
        {
            array_shift($folders);
            $dir = opendir($folder);
            while ($file = readdir($dir))
            {
                if ($file != '.' && $file != '..')
                {
                    if (is_file($folder.$file) && in_array(strtolower(end(explode(".", $file))), $pics_ex))
                    {
                        $out_files[] = $folder.$file;
                    }
                    elseif (is_dir($folder.$file))
                    {
                        $folders[] = $folder.$file.'/';
                    }
                }
            }
        }
    }
    return $out_files;
}

$all_images = all_images();

$category = false;
if (preg_match('/^[^\/\\\:\*\?\"\<\>\|]+((->)[^\/\\\:\*\?\"\<\>\|]+)*$/i', $_GET['kat']))
{
    $category = (is_dir($pics_folder.str_replace('->', '/', $_GET['kat']))) ? str_replace('->', '\/', $_GET['kat']) : false;
}

$out_images = array();
foreach ($all_images as $image)
{
    $raz = explode("/", $image);
    for ($n=1;$n<=(substr_count($pics_folder, "/"));$n++) array_shift($raz);
    array_pop($raz);
    
    if ($category && !preg_match("/^$category/", implode("/", $raz))) continue;
    $out_images[] = $image;
}

$masiv = @array_chunk($out_images, $pics_per_page, true);

$stranici = floor(count($out_images) / $pics_per_page);
if ((count($out_images) % $pics_per_page) > 0) { $stranici++; }

if (is_numeric($_GET['page']) && $_GET['page'] <= $stranici) {
    $page = $_GET['page'];
} else {
    $page = 1;
}

$red = 1;
echo "<span id=\"gallery\"><table border=\"0\">
<tr>\n";
foreach ($masiv[($page - 1)] as $pic)
{
    $resize = resize($pic);
    $razp = explode("/", $pic);
    for ($n=1;$n<=(substr_count($pics_folder, "/"));$n++) array_shift($razp);
    array_pop($razp);
    
    $kat = array();
    $kat[] = '<a href="?">Главна</a>';
    for ($i=0;$i<count($razp);$i++)
    {
        $url = array();
        for($i2=0;$i2<=$i;$i2++)
        {
            $url[] = $razp[$i2];
        }
        $kat[] = '<a href="?kat='.implode("->", $url).'">'.$razp[$i].'</a>';
    }
    
    echo "<a href=\"{$pic}\" rel=\"lightbox\"><img src=\"{$pic}\" width=\"".$resize['width']."\" height=\"".$resize['height']."\" border=\"0\" alt=\"gallery\" /></a> \n";
    if ($red == floor(sqrt($pics_per_page))) { $red = 1; echo "</tr><tr>\n"; } else { $red++; }
}
echo "</tr></table></span>";

echo "<br>Страници: ";
for ($i=1;$i<=$stranici;$i++) {
    if ($page != $i) {
        echo "<a class=\"typ1\" href=\"?page=$i".(($category) ? '&kat='.$_GET['kat'] : '')."\">  $i</a> ";
    } else {
        echo "$i ";
    }
}
?>
http://validator.w3.org/check?uri=http://www.wow-multimedia.org/new/gallery.php&charset=(detect+automatically)&doctype=Inline&group=0&accept=application/xml,application/xhtml%2Bxml,text/html;q%3D0.9,text/plain;q%3D0.8,image/png,*/*;q%3D0.5&accept-language=bg-BG,bg;q%3D0.8&accept-charset=windows-1251,utf-8;q%3D0.7,*;q%3D0.3&user-agent=W3C_Validator/1.1 -ето ги грешките, някои може ли да ги оправи ? А също така при зададен 170 height, не работи седи на 127, ако някой може и това да оправи ще съм много благодарен. :wink:
 
сложих друг скрипт затова, сега вече излизат, другия скрипт под Ie8 има проблеми, разместват се картинките

Код:
<?php 
$file = "includes/snimki.php"; // тук пишете файла от, който ще четем 
$str = 6; // по колко резултата да изкарва на страница 

// тук взимаме информацията от файла 
$filesize = @filesize($file); 
$fp = @fopen ($file ,"r"); 
$text = @fread($fp,$filesize); 
@fclose($fp); 

$razdelqne = explode("\n",$text); // разделяме файла на редове 
$kolkooo = count($razdelqne); // преброяваме колко редове съдържа файла 
$i = 0; 
while($i < $kolkooo) { 
$line = explode("|",$razdelqne[$i]); 
$masiv["$line[0]"] = $line[1]; // вкарваме всяко едно име с неговите точки в масив 
$i++; 
} 
natsort($masiv); // подреждаме масива по-големина на точките 
$masiv = array_reverse($masiv); // обръщаме стойностите в масива. 
// Ако желаете да започне да показва потребителтие с най-малко точки просто сложете "#" пред горната функция 
// Пример: #$masiv = array_reverse($masiv); 


$masiv = array_chunk($masiv, $str,TRUE); // разделяме масива на части за да се осъществи страницирането 

// определяме на колко страници да извеждаме резултатите 
$stranici = floor($kolkooo / $str); 
if (($kolkooo % $str) > 0) { $stranici++; } 

// правим проверка за избраната страница 
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] <= $stranici) { 
$page = $_GET['page']; // присвояваме избраната страница 
} else { 
$page = 1; // ако не сме избрали страница се задава по подразбиране 
} 

$m = $page - 1; // определяме от коя стойност да започне масива 
foreach ($masiv[$m] as $key => $value) { 
echo " $key $value"; // изкарваме резултатите Може да ги променяте. 
} 

// Тук извеждаме страниците 
echo "<br /><br /><font color=\"#00b2ee\">Страници:</font> "; 
for ($i=1;$i<=$stranici;$i++) { 
if ($page != $i) { 
echo "<a class=\"typ1\" href=\"?page=$i\">  $i</a> "; 
} else { 
echo "$i "; 
} 
} 
?>

Накратко този горе, има разместване на картинките под IE8 зададени са да се показват 6, а той показва:
3
2
1 на ред, а под останалите браузъри - safari,firefox,chrome,opera - няма проблеми, а по-горния валидацията и това, че height - неработи.

или можеби някой ако има друг скрипт може да ми го даде, но да е спазено следното:
* оразмеряване 170х170
* да вади снимките от папка
* да ги подрежда по име, те са с имената (1,2,3,4,5..)
* да няма проблеми под браузърите
* снимките да не са прилепнали една до друга, а да има някакво разстояние
* да има странициране
* да се показват по 6 на страница
* да няма грешки по кода :lol:
 

Back
Горе