Что означает следующий код?

kakawi

Новичок
PHP:
return db_query(preg_replace('%\?%e', '"\'".addslashes($values[$i++])."\'"', $query));
вводная:
это обработка запроса к БД
т.е.
$query такого плана:
INSERT INTO gb (name, email, www, message, IP, Browser, datetime) VALUES(?, ?, ?, ?, ?, ?, NOW())', $name, $email, $www, $message, $ip, $browser

Я понимаю что знаки ? заменяются переменными, но что означает %\?%e ???
 

eax

#
kakawi, лучше найдите другие уроки, тк этот настоящий ахтунг.
%\?%e - это регулярное выражение, где % обозначается начало и конец, знак вопроса экранируется слэшем, поскольку без слэша "?" это квантификатор (управляющий символ). Ну а "e" в конце означает, что второй аргумент функции это код PHP, который сначала отработает, а вернувшееся значение будет использован в качестве параметра. Никогда не используйте модификатор "e" для обработки данных введенных пользователем, тк это не безопасно. Лучше использовать callback функцию, но в этом случае вообще лучше использовать другое решение.
 

kakawi

Новичок
eax спасибо за разьяснение!
Я бы с удовольствием нашел бы другие уроки, но откуда мне знать что они еще хуже не будут?
Мне нужен пример создания Гостевой книги, лучше сразу с CAPTHA, а то тут её нету

P.S. Если подскажите буду благодарен
 

Фанат

oncle terrible
Команда форума
капча - это совершенно отдельный модуль. он дописывается или вставляется в уже готовую гостевую.

вообще, задача "создание гостевой книги с капчей" не имеет смысла.
смысл могут иметь задачи "поставить гостевую на сайт" (надо ставить готовую) или "научиться программировать на примере гостевой книги" - тогда учимся постепенно, до капчи дойдём ещё не скоро.

если хочешь - можем попробовать научиться прямо здесь.
сначала надо освоить работу с БД.
 

kakawi

Новичок
Фанат
Что значит научиться прямо здесь ???
И с БД работать я в принципе умею
 

Фанат

oncle terrible
Команда форума
ну, прямо здесь на форуме и учиться.
тут много специалистов, который могут рассказать про какой-то конкретный кусок приложения. так, постепенно, можно будет освоить целиком гостевую.

А про умение работать с базой ты не подумав сказал :)
То что работать, "в принципе" умеешь - в этом никто не сомневается. Проблема в том, что как правильно работать - ты даже малейшего представления не имеешь.
 

kakawi

Новичок
Учиться я не против, даже всеми руками за
Но мне нужно сделать по-быстрому задание:

Гостевая книга
Гостевая книга предоставляет возможность пользователям сайта оставлять сообщения на сайте. Все данные введенные пользователем сохраняются в БД MySQL, так же в базе данных сохраняются данные о IP пользователя и его браузере.
Форма добавления записи в гостевую книгу должна иметь следующие поля:
 User Name (цифры и буквы латинского алфавита) – обязательное поле
 E-mail (формат email) – обязательное поле
 Homepage (формат url) – необязательное поле
 CAPTCHA (цифры и буквы латинского алфавита) – изображение и обязательное поле (http://ru.wikipedia.org/wiki/CAPTCHA)
 Text (непосредственно сам текст сообщения, HTML тэги недопустимы) – обязательное поле
Сообщения должны выводится в виде таблицы, с возможностью сортировки по следующим полям: User Name, e-mail, и дата добавления (как в порядке убывания, так и в обратном). Сообщения должны разбиваться на страницы по 25 сообщений на каждой. Сортировка по умолчанию – LIFO.
При написании проекта следует обратить внимание на защиту от XSS атак и SQL –инъекций. (http://ru.wikipedia.org/wiki/Межсайтовый_скриптинг иhttp://ru.wikipedia.org/wiki/Инъекция_SQL)
Приветствуется создания простейшего дизайна с использованием CSS.


А учится, как мне кажется, лучше на готовых примерах, может у кого осталась гостевая книга, я бы по ней и научился
 

Фанат

oncle terrible
Команда форума
Непонятно. Что значит - "сделать по-быстрому"? Ты на работу, что ли, устраиваешься? Ну так ты никого не обманешь таким образом - через два дня всё равно выяснится, что ты сам ничего не умеешь, а решение списал.
 

kakawi

Новичок
Да, на работу. Никого я не хочу обманывать
Просто если я сам буду делать это будет криво, т.е. это будет или в одном файле, или в целой куче файлов, или вообще не безопасным методом
Мне хотя б структуру знать, а код под неё и сам напишу
 

Фанат

oncle terrible
Команда форума
А потом тебе на работе поручат написать комментарии для статей. и ты их напишешь "небезопасным методом", потому что про безопасные ничего не знаешь.
Про "никого не хочу обманывать" - это ты загнул, приятель. У тебя какие-то очень странные представления об обмане. Если тебе дали задание, а ты его сделать не можешь, а ищешь, у кого бы списать - это называется обманом. Запомни на будущее, вдруг пригодится.
 

kakawi

Новичок
А как же тогда учится если не на примерах?
Т.е. ты предлагаешь написать как умею, они это конечно не примут и всё на этом. ничего не измелось, я как не умел писать так и не научился
Я же не просто возьму готовое и буду выдавать за своё. Я пока не разберусь что откуда и почему не успокоюсь, иначе зачем я вообще открыл эту тему, мог бы просто отнести то что нашел и будь что будет
 

AmdY

Пью пиво
Команда форума
kakawi
для начала учиться желательно на книгах, чтобы не возникало затем вопросов "что означает код". готовые скрипты лишь помогут освоить алгоритмы, но никак не понимание кода.

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

fixxxer

К.О.
Партнер клуба
А как же тогда учится если не на примерах?
На примерах говнокода учиться вредно.
Поскольку ты не можешь определить говнокод, учись на примерах, прилагаемых к хорошим учебникам. Например, Котеров PHP5.

AmdY все правильно говорит, обманом ты достигнешь только того, что тебя выгонят через неделю - даже если бы были согласны тебя учить при условии твоей честности. Но скорее всего с таким уровнем тебя не возьмут. Возьми учебник и учись. Изучишь по учебнику основы - с удовольствием ответим на возникающие вопросы.

Ни в коем случае не трогай всякие видеокурсы - после них с тобой никто вообще разговаривать не будет.
 

kakawi

Новичок
Хорошо, пойду по пути истиному.
Короч была ни была
Если вернусь сюда, значит взяли :)

P.S. Спасибо всем!!!
 

Фанат

oncle terrible
Команда форума
Вообще, в отличие от других гостевых, эта, на первый взгляд, не такая уж плохая для 2006 года.
По крайней мере автор заботится об SQL и XSS инъекциях. Навскидку я дыр не нашёл.

Правда, в ней много других неаккуратностей, и сейчас бы я за такой код бил бы по рукам.
 
Сверху