Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Начну:

Код:
 
  function err_handler ($errno, $errstr, $errfile, $errline) {
    global $display_errors;
    if(($errno != E_NOTICE && $errno != E_WARNING) && $display_errors){
      echo '';
    }
  }
  $error_flags = E_ALL & ~E_NOTICE;
  @error_reporting($error_flags);
  @ini_set ('error_reporting', $error_flags);
  $old_error_handler = set_error_handler("err_handler");
 

 
Бывает полезным, убивает все нотайсы, выводы ошибок и прочее.
 
ЗЫ: Желательно прикрепить.



Публикуем решения, а не задаем вопросы!
Тех же, кто этого не понимает, будем БАНИТЬ!  
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.





Цитата:
ЗЫ: Желательно прикрепить.
В ПМ по этому поводу писать надо. — Svarga.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 07:30 26-07-2004 | Исправлено: Cheery, 16:57 25-03-2007
Jokerjar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кому-то понадобится. Вывод даты нормальным русским языком:

Код:
function rusdate($d)  
{  
  $montharr = array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
  $i =  date("m",$d) - 1;
  return date("j",$d)." $montharr[$i] ".date("Y",$d);
}

Всего записей: 591 | Зарегистр. 22-03-2006 | Отправлено: 16:57 09-02-2007
antyan



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Режем текст до нужного колличества символов:
 

Код:
 
function cutstr($linkstrip,$strip) {
$linkstrip=stripslashes($linkstrip);
if (strlen($linkstrip) > $strip) $linkstrip="".substr($linkstrip,0,$strip)."...";
return $linkstrip;
}
 
// Колличество символов
$strip = 25;
 
// Содержимое
$text = "Здравствуйте. Я делаю журнал посещений для домашнего сайта.";
 
// Обрабатываем текст
$linkstrip = cutstr($text, $strip);
 
// Вывод
echo "$linkstrip";
 





давайте, может быть, что то более серьезное? а не то, что сами придумываем только изучая php /Cheery/

Всего записей: 24 | Зарегистр. 08-09-2006 | Отправлено: 03:55 26-02-2007 | Исправлено: Cheery, 04:06 26-02-2007
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подключаем все файлы php из папки $dir
Код:
function include_dirfiles($dir){
    if(!file_exists($dir) || !is_dir($dir)) {
        return false;
    }
    $d=opendir($dir);
    $array = array();
    while($file = readdir($d)) {
        $filepath = $dir . "/" . $file;        
        if ($file == "." || $file == ".." || is_dir($filepath) || !strrchr($file, '.php')) continue;
        include_once($filepath);
    }
}
include_dirfiles('lib');

Оптимизация html
Код:
function callback ($buffer) {    
    $patterns = array (
    "/<!--.{0,}-->/", "/<!--.{0,}-->/", "/ {2,}/",  
    "/\t{1,}/", "/\r\n/", "/^\s{1,}/m");
    $replaces = array ( "", "", " ", " ", "\n", "");    
    return( preg_replace ($patterns, $replaces, $buffer ) );
}
ob_start("callback");
а ещё я сделал вот это http://fan.h17.ru/metric/mod.timeline.php

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 05:40 26-02-2007
G_Drey_V

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть конструктивное предложение! Я уже давно читаю все, что здесь пишут... предлагаю все-таки обсуждать публикуемый код и вносить в него конструктивные изменения, если необходимо. И предлагать более удобные, по возможности стандартные решения тех или иных проблем... ну это так, к слову...
 
SafeWay, я что-то не совсем понял для чего нужна эта функция??? какие она действия осуществляет??? проще просто установить необходимые флаги отображения ошибок.
потом вот это:

Цитата:
 
@error_reporting($error_flags);
@ini_set ('error_reporting', $error_flags);
$old_error_handler = set_error_handler("err_handler");  
 

не будет работать - в большинстве случаев вызов этих функций не приводит ни к каким результатам (доказано опытом на различных серверах, как российских, так и зарубежных). Чтобы установить флаги ошибок необходимо использовать .htaccess
 
antyan, как-то странно режет текст функция, прям по словам. По-моему следует первым шагом определить ближайший пробел к "месту разреза" и уже обрезать по нему.
А вообще, имхо, это не очень хорошо использовать такие функции. Т.к. при это, насколько я понимаю смысл функции, происходит объединение кода с версткой, что очень плохо. Лучше использовать шаблоны и модули для их обработки... так вот в этих модулях уже есть такие функции, причем с флагами. Например, обрезка под пробел, дополнение какими-либо символами (не обязательно "...", но и "далее..." и др.)

Всего записей: 158 | Зарегистр. 20-12-2003 | Отправлено: 09:51 26-02-2007
Oleg_de



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а ещё я сделал вот это http://fan.h17.ru/metric/mod.timeline.php

http://fan.h17.ru/metric/mod.timeline.php?image=text:Любимцу;time:-1982534339;line:line_typeb1_s.gif;begun:d_typeb2.gif;color:000000
 
что-то не совсем правильно

----------
Германия глазами переселенцев и мигрантов ...

Всего записей: 336 | Зарегистр. 03-09-2001 | Отправлено: 14:41 07-03-2007
Radface

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору





читаем внимательно правила форума.. /Cheery/

Всего записей: 1 | Зарегистр. 09-03-2007 | Отправлено: 18:54 09-03-2007 | Исправлено: Cheery, 20:25 10-03-2007
ZaIbalo

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Видел во многих скриптах: для разбивки урла используют регулярку.

Имхо http://php.net/parse_url

 
Пример полезного скрипта:

 

Код:
 
// Хост поисковой системмы
$host = 'www.google.com';
// Если доступен реферер
if (isset($_SERVER['HTTP_REFERER']))
{
    // Разбеваем http://php.net/parse_url
    $url = parse_url($_SERVER['HTTP_REFERER']);
    // Если хост реферера совподает с $host
    if ($url['host'] === $host2)
    {
        // Разбеваем GET запрос реферера
        // http://php.net/parse_str
        parse_str($url['query'], $query);
        // Выводим результат
        echo 'Ты искал <b>'.$query['q'].'</b> нас через '.$host;
    }
}
 





cоветую сменить ник - этот будет заблокирован /Cheery/

Всего записей: 3 | Зарегистр. 19-03-2007 | Отправлено: 15:17 19-03-2007 | Исправлено: Cheery, 18:38 19-03-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZaIbalo

Цитата:
Видел во многих скриптах: для разбивки урла используют регулярку.

не приучайте к плохим вещам.. через регулярку это делается одной строкой вместе с проверкой реферера..

Цитата:
Разбеваем  

да и выучите русский.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:52 20-03-2007
fregat18

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто знает как  построить свой сайт  
 





Окулист знает - к нему обращаемся за очками /Cheery/

Всего записей: 1 | Зарегистр. 21-03-2007 | Отправлено: 14:05 21-03-2007 | Исправлено: Cheery, 18:36 21-03-2007
G_Drey_V

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
элементарно!..
каков вопрос, таков и ответ




ну, и кто из вас умнее? /Cheery/

Всего записей: 158 | Зарегистр. 20-12-2003 | Отправлено: 20:30 21-03-2007 | Исправлено: Cheery, 20:56 21-03-2007
andymc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень простые и полезные функции

Код:
 
function GET($name, $num = 0) {
    if (isset($_GET[$name])) {
        return urldecode($_GET[$name]);
    } else {
        return '';
    }
}
function POST($name) {
    if (isset($_POST[$name])) {
        return $_POST[$name];
    } else {
      return '';
    }
}
 

Всего записей: 18 | Зарегистр. 21-09-2006 | Отправлено: 20:55 21-03-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andymc

Цитата:
Очень простые и полезные функции  

плиз. не захламляйте топик примитивными вещами. нужны оригинальные и интересные решения.
вы же вытащили откуда то.. учитывая ненужное
Цитата:
$num = 0

и к тому же все пишется еще проще  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:59 21-03-2007
nu_nah



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
РЕБЯТ, нужна помощь... помогите мне придумать тему к дипломному проекту....




окулист тебе поможет /Cheery/

Всего записей: 14 | Зарегистр. 18-10-2006 | Отправлено: 22:21 22-03-2007 | Исправлено: Cheery, 22:24 22-03-2007
danil74



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет. Мне понравилась эта ветка и я тоже решил поделиться свом творчеством. Иногда для ускорения разработки скриптов я использую вспомогательные скрипты. Думаю, не я один страдаю этим недостатком. Парочкой таких скриптов я и хочу поделиться.
Помню я какое-то время долго и упорно искал в литературе и инете полное описание суперглобальных массивов($_REQUEST, $_SERVER и т.д.), но так ничего толкового не нашёл. И тут мне пришла в голову идея написать скрипт, который будет выволить значения ключей всех уровней и значений исследуемого массива. В результае получилось вот это(привожу на примере суперглобального массива $_SERVER)

Код:
 
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Изучам массивы</title>
</head>
 
<body>
 
<?php
 
function view($var1, $var2){//Создаю рекурсивную функцию для отображения всех ключей и всех значений массива
     
foreach ($var1 as $name => $value) {if(gettype($value)=="array") view($var1[$name], "$var2 [$name]");
else echo "<b>\$$var2 [$name]</b> = $value<br>\n";
 
}    
};
 
///////////////////////////////////////////////////////////////////////////
$var_name="_SERVER";//Сюда нужно вписать имя переменной без знака $ вначале
///////////////////////////////////////////////////////////////////////////
view($$var_name, $var_name);//А теперь запускаю вывод ключей и значений массива
 
?>
</body>
 
</html>
 

Попробуйте, например, написать

Код:
$a=array("a" => array("121", array("121", "243", "45"), "45"),
"b" => "dg",
"c" => "hfgh"
);
$var_name="a";

Для того, чтобы увидеть, что делают другие суперглобальные массивы $_COOKIE, $_ENV, $_FILES, $_GET, $_POST, $_REQUEST, $_SESSION нужно подготовиться. Нопример, чтобы появились $_COOKIE нужно в самом начале файла до любого хтмля написать что-нибудь вроде
Код:
setcookie("cookie_name", "cookie_value", time()+3600);

Чтобы появились $_FILES необходимо послать форму
Код:
<form method="POST" enctype="multipart/form-data" action="--WEBBOT-SELF--">
    <p><input type="file" name="FILE1" size="20"><input type="submit" value="Отправить"></p>
</form>

С помощью этого массива так удобно закачивать файлы на сервер. Например хотим закачивать картинки в папку images

Код:
<?php $dir=opendir("./images/");
chdir("./images/"); //Перешли к папке images
if(isset($location)){//Загружаем картинку на сервер
if($_FILES['location']['type']==="image/pjpeg"||$_FILES['location']['type']==="image/gif"||$_FILES['location']['type']==="image/x-png")copy( $_FILES['location']['tmp_name'], basename($_FILES['location']['name']));
else echo "Не обнаружены файлы с поддерживаемыми изображениями<br>";
}?>
<form method="POST" enctype="multipart/form-data" action="">
    <p><input type="file" name="location" size="20"><input type="submit" value="Отправить"></p>
</form>

Остальные суперглобальные массивы я думаю вы теперь и сами изучете
Скрипт для показа ключей и значений очень удобен для узнавания что вернула функция mysql_fetch_array и тому подобным целям.
*******************************************************
Второй полезный вспомогательный скрипт я сделал для составления корректных регулярных выражений. Идею навеяла замечательная бесплатная прога "The Regex Coach". The Regex Coach всем хороша, но часто она регуляные выражения понимает не так, как интерпретатор php. Моя идея была сделать страничку, в которой два текстовых поля. Первое для регулярного выражения, второе для исследуемого текста, а в третью область с помощью AJAX будет подгружаться результат экзекуции из php-скрипта. Результат должен выглядеть так. Всё соответствие регулярному выражению будет выделяться красной рамкой, чтобы было видно где оно начинается и заканчивается. Если в регулярном выражении использованы скобки, то результат должен помещаться в чёрную рамку и к нему добавляться индекс скобок.
Получилось следующее
Это файл index.htm

Код:
<html>
 
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Загрузка данных</title>
<script language="javascript">
 
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == 'Microsoft Internet Explorer'){
        ro = new ActiveXObject('Microsoft.XMLHTTP');
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}
    
var http = createRequestObject();
    
function sndReq(action) {
    http.open('POST', 'regular.php', true);
    http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=WINDOWS-1251");
    http.onreadystatechange = handleResponse;
    http.send('regul='+action.regul.value+'&expression='+action.expression.value);//null
}
    
function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
 
    
 
            document.getElementById("view_text").innerHTML = response;
    }
}
 
</script>
 
</head>
 
<body>
<form>
<table border="0" width="100%" cellspacing="1" cellpadding="3">
    <tr>
        <td bgcolor="#C0C0C0" width="10%" valign="top">Регулярное выражение</td>
        <td>
 
<textarea rows="10" name="regul" cols="100" style="width: 100%" onKeyUp="sndReq(this.form)"></textarea></td>
    </tr>
    <tr>
        <td bgcolor="#C0C0C0" width="10%" valign="top">Преобразуемый текст</td>
        <td>
 
<textarea rows="10" name="expression" cols="100"  style="width: 100%" onKeyUp="sndReq(this.form)"></textarea></td>
    </tr>
    <tr>
        <td bgcolor="#C0C0C0" width="10%" valign="top">Результат</td>
        <td bgcolor="#CCFFFF" valign="top" height="300"><div id="view_text"></div></td>
    </tr>
</table>
<input type="button" value="Применить" onClick="sndReq(this.form)">
</form>
 
</body>
 
</html>

 
Это файл regular.php

Код:
<?php
header("Content-Type: text/html; charset=windows-1251");//Это нужно для корректного отображения русской кодеровки.
 
//Создаю массив всех кусков удовлетворяющего текста.
@preg_match_all("/$regul/", $expression, $regs, PREG_PATTERN_ORDER)
or die('<font color="red" size="5">Ошибка в синтаксисе регулярного выражения либо нет совпадений</font>');
 
$expression = htmlspecialchars($expression, ENT_QUOTES);//Избавляюсь от всех символов, мешающих выводу HTML
 
   $regs[0] = array_unique($regs[0]);//Оставляю только уникальные значения, чтобы str_replace() не наслаивала вывод
 
foreach ($regs[0] as $name => $value){//Запускаю цикл для преобразования строки
  $regs[0][$name] = htmlspecialchars($regs[0][$name], ENT_QUOTES);//Привожу к виду как $expression
  $regs1[0][$name] = $regs[0][$name];//Создаю новый массив на случай, если в регулярном выражении нет скобок
 
  /*Если в регулярном выражении есть скобки,
  то этот цикл возьмёт соответствующее им
  содержимое в чёрную рамку с зеленоватым
  фоном и индексом в верхнем регистре*/
  for($i=1; isset($regs[$i]); $i++){
     $regs[$i][$name] = htmlspecialchars($regs[$i][$name], ENT_QUOTES);
     $regs1[0][$name] = str_replace($regs[$i][$name],
     '<span style="background-color: #99FF99; border: 1px solid black;">'.$regs[$i][$name].'<sup>'.$i.'</sup></span>',
     $regs1[0][$name]);
  }
   
  //Всё, что полностью соответствует регулярному выражению забираю в красную рамку
  $expression = str_replace($regs[0][$name], '<span style="border: solid 1px red;">'.$regs1[0][$name].'</span>', $expression);
}
  //Рускодируем символы, которые почему-то приходят в UTF-8(необходим модуль iconv для php)
  $expression = iconv('UTF-8', 'windows-1251', $expression);
 
echo $expression;//Отдаём получившуюся строку браузеру
 
?>

Оба файла нужно поместить в одну папку на сервере с поддержкой php4 и пользоваться.
Несмотря на то, что эта конструкция не лишена некоторых глюков, но для отладки вполне пригодна.
Например, если встаёт задача вытащить данные из XML(Яndex.xml, курсы валют, информер погоды и т.д.) это может сильно пригодиться.
P.S. Модератор здесь смешной. Во всей России принято посылать на три буквы а от к окулисту. Заботиться о нашем здоровье

Всего записей: 4 | Зарегистр. 25-03-2007 | Отправлено: 15:30 25-03-2007
morjov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
danil74
походу дела ты поиздеваться пришёл...
 

Цитата:
Помню я какое-то время долго и упорно искал в литературе и инете полное описание суперглобальных массивов($_REQUEST, $_SERVER и т.д.), но так ничего толкового не нашёл. И тут мне пришла в голову идея написать скрипт, который будет выволить значения ключей всех уровней и значений исследуемого массива.

http://php.net и http://php.net/print_r в помощь!


----------
Баннер - это флаг, транспарант, растяжка. В Интернете это должно называться по другому. E-баннер.

Всего записей: 340 | Зарегистр. 05-01-2004 | Отправлено: 15:43 25-03-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
danil74

Цитата:
Модератор здесь смешной. Во всей России принято посылать на три буквы а от к окулисту.

посмеешься в другом месте..
 
блин, достало.. придется добавить еще и цензус на опыт, а то каждый, кто только принялся изучать php, спешит "внести свою лепту".
 
ps: добавил в шапку.. надоело уже читать извращенные решения.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 16:55 25-03-2007 | Исправлено: Cheery, 16:58 25-03-2007
G_Drey_V

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Модератор нормальный, не выпендривайтесь!
 
danil74, вместо view($var1, $var2) лучше использовать стандартную функцию print_r($var) намного быстрее и эффективнее.

Всего записей: 158 | Зарегистр. 20-12-2003 | Отправлено: 21:31 25-03-2007
danil74



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет, Друзья.
Большое Спасибо за радушный приём. Меня радует резонанс, который вызвало моё первое сообщение в этом форуме, что даже такой авторитет как Cheery схватился за шапку. Вы безусловно правы, я действительно был не знаком с print_r(). Теперь мне это пригодится. Я даже рад, что ткнули носом. Но почему-то никто и никак не оценил моё второе творение про регулярные выражения. Сегодня мне это очень пригодилось. Я обнаружил, что regular.php работает намного стабильнее если строки
 
Цитата:
  //Рускодируем символы, которые почему-то приходят в UTF-8(необходим модуль iconv для php)  
  $expression = iconv('UTF-8', 'windows-1251', $expression);

удалить а взамен в самом начале файла после header вставить

Код:
 $expression = iconv('UTF-8', 'windows-1251', $expression);
 $regul = iconv('UTF-8', 'windows-1251', $regul);

Сегодня выношу на Ваш суд своё другое творение. Это скрипт для разбиения контента на страницы. Для тестового наполнения страниц я использовал очень длинный массив. Вы только не беспокойтесь о моих пальцах. Этот массив я не набивал руками, а создал вспомогательный javascript
Подробнее...
Этото скрипт не глючит и благополучно радует своей работой посетителей моих сайтов.
 
Добавлено:
Ой, Cheery, ты значит меня критикуешь, а у тебя самого чего-то форум стал какой-то перекошенный.

Всего записей: 4 | Зарегистр. 25-03-2007 | Отправлено: 21:10 26-03-2007 | Исправлено: Cheery, 21:14 26-03-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
danil74
интересно.. вы вообще русский язык понимаете? судя по коду вы только изучаете php.. я же просил не постить подобные вещи..
насчет второго поста с регуляркой.. программерам не нужны такие вещи - достаточно просто написать регулярку в пустой странице с кодом и посмотреть результат.
это раз.. второе - ваш код с ajax неправильно обработает данные, если в регулярке будет & или в тестируемом выражении.
третье.. сейчас никто не рассчитывает на register_globals=on
в четвертых..

Цитата:
//Рускодируем символы, которые почему-то приходят в UTF-8(необходим модуль iconv для php)  

справедливо только для IE (для остальных не нужно), так как он не воспринимает иначе в случае ajax
но даже и в этом случае вы

Цитата:
 header("Content-Type: text/html; charset=windows-1251");//Это нужно для корректного отображения русской кодеровки.

в пятых.. скрипт с нумерацией страниц можно сделать короче и элегантнее..
очевидно, что написан наспех.. даже с примитивными ошибками в словах.
 
ну и наконец.. эта тема НЕ предназначена для обсуждения ваших возможностей или недостатков. поэтому, я надеюсь, вы сделаете выводы и не будете в след. раз так торопиться, иначе нахватаетесь предупреждений.. и, как следствие, дойдет до бана.
 
 
ps: и я не люблю паясов..
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:31 26-03-2007 | Исправлено: Cheery, 05:14 27-03-2007
morjov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
а может его "того" - в БАН?

----------
Баннер - это флаг, транспарант, растяжка. В Интернете это должно называться по другому. E-баннер.

Всего записей: 340 | Зарегистр. 05-01-2004 | Отправлено: 22:46 26-03-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru