Вопрос № 53332: Привет эксперты, не знаю сюда мне писать или нет? В общем такой вопрос. Как такая штука реализована, может мне надо в другую рассылку писать Apache, но я её чёт не нашол или мало искал. Короче вот что. Посмотрите и расскажите как такое реализовать <b...Вопрос № 53347: Привет, эксперты. Помогите разобраться. Если переменые куки, которые хранятся у юзера на компе, нужно предварительно проверить на наличие кавычек, чтобы не
было sql-иньекции, то стоит ли проверять те переменные которые используются в сессиях также на...Вопрос № 53355: Уважаемые эксперты!
На днях поставил PHP 6. (Для меня, как для разработчика, очень важно быть в курсе самых последних изменений php). И возникла небольшая проблема: phpMyAdmin напрочь отказался работать, вываливаясь с кучей ошибок при старте. Чер...Вопрос № 53366: Здравствуйте, дорогие эксперты!
У меня вопрос. Недавно я задавала такой же, но обстоятельства изменились.
В общем, мне нужно, чтобы если у пользователя один браузер - он попадал на одну страницу, другой - на другую.
Какими средствам...Вопрос № 53378: Уважаемые эксперты? помогите в такой проблеме. Есть база данных с именами и датами рождения пользователей (поля, допустим, name, b_day, b_month, b_year). Каким образом можно сделать, чтобы каждый день на главной странице отображалось, у кого из польз...Вопрос № 53410: Здравствуйте! В продолжения вопроса 52105, минифорум http://rusfaq.ru/info/Question/52105.
Как влияет на получение значения формы, если у этой формы есть имя. Например:
<form name="drive" action = "http://localhost/acti...
Вопрос № 53.332
Привет эксперты, не знаю сюда мне писать или нет? В общем такой вопрос. Как такая штука реализована, может мне надо в другую рассылку писать Apache, но я её чёт не нашол или мало искал. Короче вот что. Посмотрите и расскажите как такое реализовать
http://konkurs.xakep.ru:83/
http://konkurs.xakep.ru:86/
http://konkurs.xakep.ru:89/
Через порт который указываеш загружаются разные странички.
Спасиюо.
Отвечает: din
Здравствуйте, Александр Михайлович!
Все верно, это уже настройки Веб-сервера. При создании виртуального хоста указываешь на каком порту слушать, в приложении пример настроек для апач, который будет слушать на 81 и 82 порту. Скажем так, не самое изящное решение. Тут одно неудобство, пользователь может не указать порт, а по умолчанию всегда для http идет 80.
Приложение:
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 26.08.2006, 13:11
Вопрос № 53.347
Привет, эксперты. Помогите разобраться. Если переменые куки, которые хранятся у юзера на компе, нужно предварительно проверить на наличие кавычек, чтобы не было sql-иньекции, то стоит ли проверять те переменные которые используются в сессиях также на наличие кавычек. И если куки можно посмотреть у себя на компе в папке - Мои Документы и изменить, то где и как можно посмотреть и изменить значения переменных из сессии, где они хранятся, как узнать их имена? Я это спрашиваю, потому что беспокоюсь за безопасность
своего движка.
И ещё один вопросик встречный - фильтровать надо для sql-иньекции только символ ['] или ещё и ["], т.е. может в настройках мускула можно изменить этот символ ограничитель. Спасибо.
Ответ отправил: Stamm (статус: Практикант)
Ответ отправлен: 26.08.2006, 18:13
Отвечает: Cimus
Здравствуйте, Александр Михайлович!
На мой взгляд надо фильтровать одинарную кавычку, т.к. передав её сценарию можно изменить полностью логику запроса:
к примеру есть запрос- SELECT* FROM таблица WHERE `id`='1' если в качестве значения поля id передать строку вида 1' OR 1='1, в которой после числа 1 закрылась кавычка, и добавленны дополнительные параметры в запрос то получиться следующие SELECT* FROM таблица WHERE `id`='1' OR 1='1' , а это уже и есть атака на Вашу базу данных. Все управлящие символы имеют специальное значение только вне кавычек, иначе они будут расматриваться как литерал и непринесут вреда.
По поводу проверки переменных - я стораюсь проверить их в любом случае, вне зависимости от того откуда они пришли, правда значения полученные из сессий или базы данных я стораюсь проверять менее жёстко.
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 7-ой класс)
Ответ отправлен: 26.08.2006, 19:12
Отвечает: Евгений Крюков
Здравствуйте, Александр Михайлович!
Насчет фильтрования - есть несколько простых правил, которые сводят все попытки сделать инъекцию бесполезными. Во-первых, использование функции sprintf при подготовке запроса, второе - это mysql_real_escape_string, только в модифицированной форме( см. приложение)
Например, мои запросы выглядят примерно так:
$sql = sprintf("UPDATE ".CALC. " set
up_id=%u,
name=%s,
short_name=%s,
value=%s,
attr_type=%u,
ord=%u
WHERE id = %u",
$pup_id,
quote_smart($pname),
quote_smart($short_name),
quote_smart($pvalue),
$pattr_type,
$pord,
$pid
);
Приложение:
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 26.08.2006, 22:52
Вопрос № 53.355
Уважаемые эксперты!
На днях поставил PHP 6. (Для меня, как для разработчика, очень важно быть в курсе самых последних изменений php). И возникла небольшая проблема: phpMyAdmin напрочь отказался работать, вываливаясь с кучей ошибок при старте. Через некоторое время надоело работать с CMD, да и лень писать собственный скрипт, и я решил написать вам :).
Подскажите, пожалуйста скрипты работающие ! онлайн ! с MySQL, предоставляющие функции наподобие phpMyAdmin. (RST MySQL не подходит).
С уважением, Lockal
Отправлен: 26.08.2006, 17:32
Вопрос задал: Lockal (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Марк Крейн
Здравствуйте, Lockal!
phpMyAdmin при работе использует расширение php php_mysql.dll. Проверьте Ваш конфигурационный файл php.ini и при необходимости раскомментируйте следующую строку (раскомментировать - значит убрать начальный символ точки с запятой).
extension=php_mysql.dll
Если после этого ошибки продолжают появляться, проверьте правильность логина и пароля для доступа к MySQL.
Ответ отправил: Марк Крейн (статус: Студент)
Ответ отправлен: 26.08.2006, 18:19 Оценка за ответ: 5
Вопрос № 53.366
Здравствуйте, дорогие эксперты!
У меня вопрос. Недавно я задавала такой же, но обстоятельства изменились.
В общем, мне нужно, чтобы если у пользователя один браузер - он попадал на одну страницу, другой - на другую.
Какими средствами это можно сделать?
(Дело в том, что страницы у меня с расширением .PHP, т. е. как бы "собираются" из нескольких частей. Внизу приведен код страницы index.php, а еще ниже - код страницы centralindex.html, т. е . ее главной составляющей)
Заранее спасибо.
Приложение:
Отправлен: 26.08.2006, 19:31
Вопрос задала: Angel7 (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Ответ отправил: Stamm (статус: Практикант)
Ответ отправлен: 26.08.2006, 21:37 Оценка за ответ: 5 Комментарий оценки: Спасибо! Оригинальный скрипт!
Отвечает: Евгений Крюков
Здравствуйте, Angel7!
Вариант первый , он же единственно правильный - делайте дизайн так, чтобы он смотрелся одинаково во всех браузерах. Есть стандарты и если Вы их выдерживаете, то всё остальное - проблемы браузерописателей. Ведь завтра могут выйти другие браузеры, так что, под каждый отдельную версию делать. Есть сайт http://validator.w3.org/ , на котором можно проверить свой код на соответствие стандартам.
Вариант второй, на случай, если Вы упорствуйте в своих заблуждениях -
см. приложение. Данная функция возвращает массив, в котором указана версия и название браузера. После этого в главной странице делаете выбор типа
$browser =chbr()
switch ($browser[0]):
case 'MSIE':
include_once('скрипт_под_IE');
break;
case 'Mozilla' :
include_once('скрипт_под_Мозиллу');
break;
default:
include_once('скрипт_по_умолчанию');
endswitch;
Более подробно можно посмотреть здесь:
http://forum.dklab.ru/php/advises/OpredelenieBrauzeraEgoVersiiIOsKlienta.html
Приложение:
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 26.08.2006, 21:55 Оценка за ответ: 4 Комментарий оценки: К сожалению, первый вариант мне не подходит...
Вопрос № 53.378
Уважаемые эксперты? помогите в такой проблеме. Есть база данных с именами и датами рождения пользователей (поля, допустим, name, b_day, b_month, b_year). Каким образом можно сделать, чтобы каждый день на главной странице отображалось, у кого из пользователей сегодня день рождения? с помощью функции timestamp не получается из-за того, что в поле b_month месяцы даны в русском варианте (января, февраля и т.п.), а не в английском, как того требует timestamp. Если можно, приведите пример кода для решения данной проблемы.
спасибо.
Отправлен: 26.08.2006, 21:47
Вопрос задал: Newcomer (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Ответ отправил: Stamm (статус: Практикант)
Ответ отправлен: 26.08.2006, 22:03
Отвечает: Евгений Крюков
Здравствуйте, Newcomer!
Как правильно - конвертнуть базу в правильный формат и не париться, здесь налицо ошибка проектирования БД. Если это по некоторым причинам невозможно, то вот вариант (см. приложение). В скрипте использован класс DB
Приложение:
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 26.08.2006, 22:31
Вопрос № 53.410
Здравствуйте! В продолжения вопроса 52105, минифорум http://rusfaq.ru/info/Question/52105.
Как влияет на получение значения формы, если у этой формы есть имя. Например:
<form name="drive" action = "http://localhost/action.php" method="get">.
У меня просто пишет:
array('hdd')
Это если получать данные $_POST('hdd'). И пишет:
hdd
если просто $hdd. Правда последний случай приходит в порядок при register_globals=on.
Но вот получить данные при register_globals=Of у меня не получилось.
А конструкция $_POST('hdd') или ;$_REQEST('hdd') еще не разу не дала вообще результатов.
В чем сдесь может быть дело?
Ответ отправил: Stamm (статус: Практикант)
Ответ отправлен: 27.08.2006, 12:10
Отвечает: Евгений Крюков
Здравствуйте, Артём Талипов!
Имя никак не влияет. Ваша ошибка в том, что в форме у Вас стоит метод GET, соответственно, все данные формы находятся в глобальном массиве $_GET. Измените метод на POST и тогда все данные будут в $_POST. Есть также общий глобальным массив $_REQUEST, в котором данные из $_GET и $_POST. А про register_globals=on забудьте, в корне неправильный подход, который уже убрали из PHP5
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Студент)
Ответ отправлен: 27.08.2006, 12:10
Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Артём Талипов!
Попробуйте вместо $_POST('hdd') так: $_POST['hdd'], ведь $_POST - это массив.
С уважением,
Антон Цепковский
--------- Вся наша жизнь - RPG
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Артём Талипов!
У вас ошибка в использовании скобок, т.е. вместо () надо использовать []:
Замените $_GET('text1') на $_GET['text1'].
А еще лучше на $_REQUEST['text1']. Ну и само-собой используйте переменные в одинаковом регистре.
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 6-ой класс)
Ответ отправлен: 27.08.2006, 14:13