За последние 24 часа нас посетили 21787 программистов и 1020 роботов. Сейчас ищет 671 программист ...

Самописная портальная система.

Тема в разделе "Прочие вопросы по PHP", создана пользователем mpak, 16 окт 2009.

  1. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Самописная портальная система. Устанавливается за две минуты. Включает основные средства для администрирования и размещения контента. Настройка прав доступа, гибкое управление блоками и модулями. После регистрации вы становитесь пользователем с максимально возможными правами доступа. Админстраница включает модуль работы с базами данных. Анализ всех запросов системы с указанием времени каждого запроса и запроса на который система затратила максимальное время. Регулярно пишутся статьи по решению часто возникающих задач на сайте. Оставляйте свои пожелания здесь или на форуме системы. Говорите что бы хотели видеть.

    Главная страница проекта http://mpak.su
     
  2. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    админку бы посмотреть шоле.
     
  3. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    mpak
    http://mpak.su/?m[pages]&pid=-1

    Warning: Invalid argument supplied for foreach() in /srv/www/vhosts/mpak.cms/include/mpfunc.php(46) : runtime-created function on line 37

    Warning: strtr() [function.strtr]: The second argument is not an array in /srv/www/vhosts/mpak.cms/include/mpfunc.php(46) : runtime-created function on line 39

    Короче, работать и ещё раз работать.
     
  4. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Ошибка была связана с тем что данной страницы нет на сайте. Если не ставить заведомо битые ссылки на сайт то и пользователь в них попадать не будет. Входящее значение уникального номера страницы в коде перед запросом к базе данных приводится к интовому значению. Инекция исключена. Не вижу особой проблемы в этой ошибке. Но всетаки устранил вывод ошибок жестко приведя типы данных к нужным. Чтобы в админку попасть нужно зарегать себе копию. Зайти в какий нибудь не существующий домен http://чтонибудь.mpak.ru либо настроить ДНС сервера одного из своих доменов третьего уровня на ип адрес 81.177.32.154. При входе по этому адресу в первый раз увидите форму регистрации сайта. В ней нужно ввести логин и пароль администратора и дождаться окончания установки. Через минуту с вашим логином и паролем можно зайти на ваш сайт. Я вижу свой продукт как быстрое решение для мелких сайтов. Регистрация минуту. Размещение в визуальном редакторе десятка страниц тоже не долго. Админстраница с разграничением прав доступа, анализ работы баз данных, модуль для правки дизайна, модуль для хранения файлов, настройка поиска по сайту. Со временем планирую решения по частым задачам выкладывать на главной странице. В большинстве случаев для среднего проекта этого должно хватить. Есть возможность посмотреть структуру базы данных зайдя админом в Управление=>АнализСКЛ=>Запрос список таблиц SHOW TABLES; структуру DESC TABLE;
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пеши исчо!
     
  6. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    ИМХО, надо не приводить типы к нужным, а проверять то, что пришло от юзверя.
     
  7. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Зачем проверять что то? Чем плох вариант привести то что пришло от пользователя к интовому значению а то что получилось использовать в запросе к базе данных? Без каких то дополнительных проверок. Быстро и просто.

    $sql = "SELECT страница WHERE id=".(int)$_GET['pid'];

    В таком случае возможна ситуация что такой странице нет поэтому и приводим полученный массив со страницей к нужному типу. Я бы так и этого не делал. Если пользователь получит ошибку на несуществующей странице не страшно. А та на которой выводилась ошибка как раз к таким и относится. Страницы с отрицательным ид не может быть. Какого плана проверку вы предлагаете делать?
     
  8. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Не айс.

    ИМХО вот айс:
    PHP:
    1.  
    2.      public static function id_exists($id = NULL)
    3.     {
    4.         self::up_localization();
    5.  
    6.         $ERROR = ERROR::getinstance();
    7.         $DB = DB::getinstance();
    8.  
    9.         if(!ctype_digit($id))
    10.         {
    11.             $ERROR->set(self::$lang['id_exists']['empty']);
    12.             return false;
    13.         }
    14.  
    15.         $result = $DB->query("SELECT * FROM `{prefix}tbl` WHERE `id` = ".$id);
    16.  
    17.         if(!$DB->num_rows($result))
    18.         {
    19.             $ERROR->set(self::$lang['id_exists']['not_exists']);
    20.             return false;
    21.         }
    22.  
    23.         return $DB->fetch_assoc($result);
    24.     }
     
  9. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Я не получил ответа. Так чем он все таки плох?
     
  10. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Я же написал - не айс. Ты же не выводишь ошибки, а по идее это надо делать, мол так и так "записи в бд не существует".
     
  11. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    хрень, переписывать всё

    http://mpak.su/pages/pid:11?m[search]

    login <H1>12
    pass 123


    sql injection
    Код (Text):
    1. INSERT INTO mp_sess_post (sid, url, time, method, post) VALUE (79325, '&m[forum]&vid=022'+AND+1='1', 1255969232, 'POST', 'a:4:{s:6:"$_POST";a:2:{s:4:"text";s:4:"7566";s:4:"pass";s:6:"nopass";}s:5:"$_GET";a:2:{s:1:"m";a:1:{s:5:"forum";s:0:"";}s:3:"vid";s:15:"022\' AND 1=\'1";}s:7:"$_FILES";a:0:{}s:8:"$_SERVER";a:34:{s:15:"HTTP_USER_AGENT";s:47:"Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1";s:9:"HTTP_HOST";s:7:"mpak.su";s:11:"HTTP_ACCEPT";s:117:"text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";s:20:"HTTP_ACCEPT_LANGUAGE";s:23:"ru-RU,ru;q=0.9,en;q=0.8";s:19:"HTTP_ACCEPT_CHARSET";s:34:"iso-8859-1, utf-8, utf-16, *;q=0.1";s:20:"HTTP_ACCEPT_ENCODING";s:38:"deflate, gzip, x-gzip, identity, *;q=0";s:12:"HTTP_REFERER";s:42:"http://mpak.su/?m[forum]&vid=022'+AND+1='1";s:11:"HTTP_COOKIE";s:40:"mp_sess=0131cf7a9281f1b3259006f656a0ce28";s:12:"HTTP_COOKIE2";s:10:"$Version=1";s:15:"HTTP_CONNECTION";s:14:"Keep-Alive, TE";s:7:"HTTP_TE";s:42:"deflate, gzip, chunked, identity, trailers";s:14:"CONTENT_LENGTH";s:1:"9";s:12:"CONTENT_TYPE";s:33:"application/x-www-form-urlencoded";s:4:"PATH";s:189:"/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.1.2:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2";s:16:"SERVER_SIGNATURE";s:0:"";s:15:"SERVER_SOFTWARE";s:61:"Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k PHP/5.2.10";s:11:"SERVER_NAME";s:7:"mpak.su";s:11:"SERVER_ADDR";s:13:"81.177.32.154";s:11:"SERVER_PORT";s:2:"80";s:11:"REMOTE_ADDR";s:13:"62.220.33.130";s:13:"DOCUMENT_ROOT";s:25:"/srv/www/vhosts/mpak.cms/";s:12:"SERVER_ADMIN";s:17:"mpak@surguttel.ru";s:15:"SCRIPT_FILENAME";s:34:"/srv/www/vhosts/mpak.cms/index.php";s:11:"REMOTE_PORT";s:4:"3709";s:17:"GATEWAY_INTERFACE";s:7:"CGI/1.1";s:15:"SERVER_PROTOCOL";s:8:"HTTP/1.1";s:14:"REQUEST_METHOD";s:4:"POST";s:12:"QUERY_STRING";s:27:"&m[forum]&vid=022'+AND+1='1";s:11:"REQUEST_URI";s:28:"/?m[forum]&vid=022'+AND+1='1";s:11:"SCRIPT_NAME";s:10:"/index.php";s:8:"PHP_SELF";s:10:"/index.php";s:12:"REQUEST_TIME";i:1255969232;s:4:"argv";a:3:{i:0;s:18:"&m[forum]&vid=022'";i:1;s:3:"AND";i:2;s:4:"1='1";}s:4:"argc";i:3;}}')
    2. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND+1='1', 1255969232, 'POST', 'a:4:{s:6:"$_POST";a:2:{s:4:"text";s:4:"7566";s:4' at line 1
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    где исходники?
     
  14. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    В данном случае ты достал кукису своею и имя таблицы с логами. Есть ошибка в одной строчке зачем все переписывать?

    Ошибка здесь

    Код (Text):
    1. if($conf['settings']['del_sess']){
    2.     $func = create_function('&$val, $key','$val = strtr(stripslashes($val), array("\\\\"=>"\", \'"\'=>""", "\'"=>"'"));');
    3.     array_walk ($get = $_GET, $func);
    4.     $post = $_POST; $post['pass'] = 'nopass';
    5.     array_walk ($post, $func);
    6.     array_walk ($files = $_FILES, $func);
    7.     array_walk ($server = $_SERVER, $func);
    8.     $request = serialize(array('$_POST'=>$post, '$_GET'=>$get, '$_FILES'=>$files, '$_SERVER'=>$server));
    9. }
    10.  
    11. mysql_query("INSERT INTO {$conf['db']['prefix']}sess_post (sid, url, time, method, post) VALUE ({$sess[0]['id']}, '{$_SERVER['QUERY_STRING']}', ".time().", '{$_SERVER['REQUEST_METHOD']}', '$request')", 'Ложим данные в лог');
    Данные для лога. Неудачно получился кусок кода.
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    жестокий кусок =))
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    зачем зачем, за тем же за чем и всегда
    совершенствоваться
    а не топтаться на одном месте
     
  17. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Не стоит лечить голову если болит жопа. Все модульно. Не вижу нужны переписывать чести не связанные с данной ошибкой. А кусок следует переписать. Только чет не могу найти поход к проблеме. Может кто подскажет решение? Кто как с инъекциями борется?
     
  18. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Фильтровать все приходящие параметры. А не совать в запрос сразу.
     
  19. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    mysql_real_escape_string
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я бы сказал "самопальная портальная система"
     
  21. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Без наездов пожалуйста. Встретил в интернете реализацию перевода интернациональных доменов.
    http://mpak.su/pages/pid:16 :)
     
  22. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Это чё за русифицированный паскаль?
     
  23. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Ссылка по которой я это нашел тоже очень прикольная. Смешной все таки этот и ICANN

    http://пример.испытание/Алгоритм_преобразования_интернационального_домена.

    Было бы не плохо форум научить таким ссылкам. Скоро они сильно потеснят пендосовские.
     
  24. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    сомневаюсь. Кириллические домены уже ведены хер знает сколько. И много ли сайтов на них? Кремль.ру? С введением таких доменов фишинг наберет новые обороты
     
  25. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Интернациональные домены = бред, который никому не нужен.