Цитата:
Вот так: Код:
$res = mysql_query("update `characters` set `at_login` = `at_login` | 64, `money` = `money` - " |
|
Спасибо пользователям, что иногда, очень редко, но тыкают меня в старые, забытые мной и богом, модули.
Сегодня подсказали дыру в modules/static.php Как всегда, я старый маразматик, в этом на первый взгляд безобидном модуле забыл проверить $_GET на вшивость. Вот новый вариант модуля. Всего-то надо вставить 2 раза (int) и дырка прикрыта. Код:
<?php И огромное спасибо что подсказали. |
Хм... Зачем два раза? =) Вроде, одного достаточно, ведь проверка в первом условии:
((int)$_GET['id'] > 0) может и не пройти, если там что-то не так будет. Если я юзаю $_GET - всегда в функциях есть минипроверочка данной переменной: PHP код:
|
KiriX, ты и прав, и не прав одновременно. В общем плане - ПРАВ. А В конкретно данном случае - нет. т.к. здесь по $_GET должно (но не обязано ;) ) приходить ЦЕЛОЕ ЧИСЛО. а значит самым быстрым, простым и эффективным способом проверить поступившие данные - это банальное преобразование к целому.
а два раз вот зачем. Допустим вместо "4" приходит строка "4 or ....... и тут инъекция" в сравнении if некоторые версии пхп вернут 0 (и проблем нет), а некоторые 4 .... но сама переменная $_GET['id'] останется с инъекцией ;) ps: Не забывайте, что АСР - это очень бородатый проект 2009 года. Это по сути мой первый проект, где я всё писал сам (почти не подглядывал у других, за исключением мелочей). И с высоты прошедшего времени, я скажу так. "Там много чего написано по-дилетантски ... сейчас я бы написал совершенно по другому" ps2:
|
Код:
if (isset($_GET['id']) and is_numeric($_GET['id']) and ((int)$_GET['id'] > 0 )) |
Кот ДаWINчи, спасибо, вот про сравнение-то мне и было интересно услышать =)
Ну и функция проверки всё-таки не лишней будет =) P.S: Проект твой весьма неплох, лёгок очень, прост, удобен и достаточно функционален. =) Но вот чего ему не хватает, так это скриптов и аякса, в некоторые места он так и просится =) |
Вложений: 1
доработал модуль events.php .... а то 1 апреля как-то понедельником стало. :blush::blush::blush:
|
Вложений: 1
Добрый день. После выходных, во время которых я просмотрел и проанализировал большую часть проекта, родилась куча бесценных мыслей. По сему, перед тем как их начать воплощать, я решил "зарелизить" текущее положение вещей.
И так ... Внеплановая рева проекта: 2.33. Это обновление содержит совсем немного доработок. А именно: 1. коррекцию modules/static.php (из поста выше) 2. доработку modules/events.php (из поста выше) 3. шкурку АСР (ее я использовал при разработке предыдущей ревы, но забыл включить) На вопрос "зачем нужна эта версия?" отвечу так: Это логический конец АСР-2. Далее что-то делать не изменив основы движка не вижу ни малейшей перспективы. Вот по этому и ставлю эту точку в конце абзаца. Теперь берусь за модернизацию и нововведения. Главное что я собираюсь сделать - это ввести классы в движок. И начну с класса по работе с базой данных и класса аккаунта. Для этого мне придется внести изменения практически во все пхп-файлы проекта. в 2.34 будет всё тоже самое, но через новый способ подключения к базе данных. и так ... ждите mysqli и класс доступа к данным. |
Вложений: 1
Точнее класс то вот он! уже давно написан. Теперь его надо протестировать и вставить в проект. :secret::blush:
|
Цитата:
Вот я заранее и перестраиваюсь. А то потом такой комок проблем навалит, что придется в срочном порядке проводить тонну работы. а я этого не хочу. |
юзай PDO
|
Цитата:
Тема по выбору АПИ закрыта. |
Цитата:
Можно пожелание на будущее? =) Больше javascript и ajax ;) |
Присоединяюсь к пожеланиям, хоть и не пользуюсь системой (так как нет поддержки 2.4.3), но было бы куда удобней если бы были официальные обновления в виде патчей отдельных а не сразу всем сайтом по 5 мб. А так же вносить изминения и поддерживать актуальность в первом посте (cейчас там например ссылка на 32 реву).
|
Кстати да. Давно бы уже пора на Git переехать :)
|
Продолжу холивар.
API supports client-side Prepared Statements No Yes Одна эта возможность перекрывает плюсы mysqli, т.к. можно забыть про инъекции |
холивара не будет. Я не склонен, как школоло, "меряться письками". Если кто не понял смысл постов №289 и 290, то суть такая: ВСЯ работа с базой будет реализована через один единственный класс. Кто хочет, тот переписывает его под mysql, pdo или еще что там, вплоть до mssql и oracle. ... и ваш сайт будет работать так, как вам это надо. так что главная задача отделения мух от котлет будет выполнена. а остальное - это уже ваша необходимость или "хотелка".
|
Вы видимо не поняли то, что я хотел сказать. PDO это уже готовый класс для работы с бд, и там не важно какой драйвер, хоть mysql, postger, sqlite и т.д и т.п. То есть вы по сути пишете тот же пдо для mysql поверх mysqli, вопрос, зачем? Производительность голого PDO сравнима с mysqli, но все, что в прилепленном вами класе уже реализовано в PDO.
Рассмотрим PDO::query(), это голый запрос. Возвращает обьект запроса или ложь в случае ошибки. Желаете узнать текст ошибки? Пожалуйста, PDO::errorInfo. Ну а если желаете узнать к-во колонок или строчек, PDOStatement::columnCount или PDOStatement::rowCount. Зачем изобретать велосипед? тем более что что mysqli это библиотека для доступа к скулю, а чистый PDO это уровень абстракции. |
Еще раз перечитал кучу статей в инете про mysqli и pdo ... Разобрал кучу примеров. Много думал. Но Убеждение относительно АСР осталось прежним. В этом проекте останется всё так как я задумал. (Если он еще кому-нибудь нужен.) А вот в новых проектах буду уже решать что использовать.
Наткнулся на хорошее мнение: Цитата:
и еще... Где-то ранее читал, но сегодня подтверждения не нашел. Но мысль была такая: разработчики PHP в 6-й версии делают ставку на развитие именно MySQLi, а не PDO. Что скоро по своему функционалу MySQLi сравняется и даже обгонит PDO. ... Но увы сегодня подтверждения этой мысли не нашел. Может за эти месяцы что поменялось в умах разработчиков? или та статейка была фейком? :sorry::pardon: |
Привет всем. Давно не писал о проекте. Дела в нем топчутся на одном месте. Ибо времени на него после работы, халтуры и семейной жизни не остается ни сколько.
Наработки есть. Но мало. Думаю, что 34 рева будет, и будет к лету. отпишусь здесь и в своем блоге. Хотел еще добавить, что раз я всё же сел за проект, то готов выслушать ваши "хотелки" ... вдруг какие из них реализую. ;) |
Текущее время: 01:08. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS