Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод баннеров в случайном порядке
 
 автор: Poison   (19.01.2007 в 10:05)   письмо автору
 
 

После нескольких обменов баннеров=)) захотелось чтоб баннеры выводились рандомно на других сайтах:) Но если я дам какойнить ява скрипт или еще что-то в этом роде, ктонить может не согласиться... Воть и решил написать маленький скриптик=)) (с обманом:-))


 <?php
    
$extension 
= ((!empty($_GET['extension'])) ? $_GET['extension'] : false);
$partner = ((!empty($_GET['partner'])) ? $_GET['partner'] : false);

if (
$partner && $extension) {
    if (
$banner rand_banner($partner$extension)) {
        
header("HTTP/1.0 200 OK");
        
header("HTTP/1.1 200 OK");
        
header("Cache-Control: no-cache, must-revalidate, max-age=0");
        
header("Expires: 0");
        
header("Pragma: no-cache");
        
header("Content-type: ".image_type_to_mime_type($banner['extension']));
        echo 
$banner['content'];
    }
} else {
    exit();
}

function 
rand_banner($banners_folder false$banners_extension false) {
    
$allow_extension = array('gif''png''jpg''jpeg''bmp''swf');
    if (
in_array($banners_extension$allow_extension)) {
        if (
file_exists($banners_folder) && $handle opendir($banners_folder)) {
            while ((
$file readdir($handle)) !== false) {
                if (
$file != "." && $file != "..") {
                    if (
is_file($banners_folder."/".$file) && preg_match("/\.(".preg_quote($banners_extension).")+$/i"$file)) {
                        
$banners_array[] = $file;
                    }
                }    
            }
            
closedir($handle);
            if (
$banners_array) {
                for (
$b 0$b <= count($banners_array); $b++) {
                    
$set array_rand($banners_array);
                    if (
file_exists($banners_folder."/".$banners_array[$set])) {
                        
$banner['content'] = file_get_contents($banners_folder."/".$banners_array[$set]);
                        
$banner['extension'] = exif_imagetype($banners_folder."/".$banners_array[$set]);
                        return 
$banner;
                        break;
                    } else {
                        
array_splice($banners_array$set1);
                        continue;
                    }
                }
            } else {
                return 
false;
            }
        } else {
            return 
false;
        }
    } else {
        return 
false;
    }
}

?>


Вродеб работает норм (проблема не в этом)
Хотел спросить вожможно ли через этот скрипт чтонить натворить??? (грубо говоря взломать мой сайт) Привык защищаться от инекция и от всякоо таково, но здесь ведь все подругому=)
Жду вашего мнения!
З.Ы. Дабы совсем не пугать поставившего у себя этот баннер кодом в рисунке типа <img src="banners.php?partner=site&extension=gif"> :)
Использую реврайт: баннер вызываеться так
banner_site.gif

где site это название папки откуда беруться баннеры, gif ет пнятно че такое:)

   
 
 автор: dert   (19.01.2007 в 10:18)   письмо автору
 
   для: Poison   (19.01.2007 в 10:05)
 

На счет инъекций, я так понимаю SQL инъекции, то нет потомучто я не вижу использования базы, а если межсайтовый скриптинг то вроде тоже все нормально, хотя советую входящие данные обрабатывать функцией htmlspecialchars()

   
 
 автор: Poison   (19.01.2007 в 10:29)   письмо автору
 
   для: dert   (19.01.2007 в 10:18)
 

<< На счет инъекций, я так понимаю SQL инъекции, то нет потомучто я не вижу использования базы

Я про SQL и не говорил:))

>>хотя советую входящие данные обрабатывать функцией htmlspecialchars()
Можно поподробней:) Где здесь можно пробратся без htmlspecialchars()

   
 
 автор: dert   (19.01.2007 в 10:43)   письмо автору
 
   для: Poison   (19.01.2007 в 10:29)
 

к примеру $_GET['partner']

   
 
 автор: malish   (19.01.2007 в 11:09)   письмо автору
 
   для: dert   (19.01.2007 в 10:43)
 

не ну вроде $_GET['partner'] нигде не выводится...

   
 
 автор: Poison   (19.01.2007 в 11:13)   письмо автору
 
   для: malish   (19.01.2007 в 11:09)
 

Немного оффтоп:))
Неразу не работал на *nix
В них так-же как и в винде нельзя испольовать в названиях файла или папки???

? /\ | " : *

   
 
 автор: malish   (19.01.2007 в 11:19)   письмо автору
 
   для: Poison   (19.01.2007 в 11:13)
 

Допустимые имена файлов
В операционной системе UNIX правил использования имен файлов не так уж много. В новейших UNIX-системах имена файлов могут иметь любую длину и включать почти все символы, кроме косой черты, которая используется для разделения каталогов. Лучше, однако, ограничиться стройными и прописными буквами, цифрами, точками и запятыми. Пробелы и другие специальные символы требуют специальной обработки. Вместо того, чтобы объяснять, как это сделать, я советую Вам отказаться от их использования.

Не ставьте в начале имени файла точку; команда ls не найдет такой файл в списке, если Вы не укажете ее с ключом -а. Использование точки в качестве первого символа имени файла позволяет "прятать" определенные файлы, чтобы они не "загрязняли" списки каталогов. Однако если Вы новичок в UNIX, то эта особенность может ввести Вас в заблуждение.

http://www.linux.org.ru/books/wunix.html

Google рулит:)

   
 
 автор: Poison   (19.01.2007 в 11:26)   письмо автору
 
   для: malish   (19.01.2007 в 11:19)
 

Пнятно! Всетаки приписал еще такое:))


<?
$extension 
= ((!empty($_GET['extension'])) ? strip_tags($_GET['extension']) : false);
$partner = ((!empty($_GET['partner'])) ? strip_tags($_GET['partner']) : false);

if (
$partner && $extension && !preg_match("/[\"\/\\\?:\*<>|]+/i"$partner) && !preg_match("/[\"\/\\\?:\*<>|]+/i"$extension)) {
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования