Вопрос № 70437: здраствуйте. не как не могу разобраться с mod_refwrite. Предположим у меня такие ссылки http://site.com/index.php?page=autor и http://site.com/article.php?art=150, как мне первую преобразовать в вид http://site.com/autor.html a вторую в http://site.c...Вопрос № 70494: Привет всем.Вот вопрос,не могу решить. Есть такой код, который выделяет слово серым цветом.
$output=preg_replace('/(([[:space:]]|,|.|?|!)'.$_SESSION['FindWhat'].'([[:space:]]|,|.|?|!))/','<span style=""background-color:" #A9A9A9"&g...Вопрос № 70523: Пишу в продолжение поднятой темы о голосованиии.
Структура таблиц:
1) poll_name таблица "заголовки голосований(сами вопросы)"
id - int(11) auto_increment primary key
name - varchar(50)
2) poll_punkt табл...Вопрос № 70545: Здравствуй, уважаемый All!
Подскажите, пожалуйста, где можно толково почитать про безопасность в языке PHP? Про "подводные камни", различные ошибки, уязвимости, особенно при проектировании скриптов, связанных с обработкой форм и работой...
Вопрос № 70.437
здраствуйте. не как не могу разобраться с mod_refwrite. Предположим у меня такие ссылки http://site.com/index.php?page=autor и http://site.com/article.php?art=150, как мне первую преобразовать в вид http://site.com/autor.html a вторую в http://site.com/article_150.html. Спасибо
Отвечает: Cimus
Здравствуйте, Маторник Михаил!
Тут Вы найдёте описание http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html#Solutions
http://apachedev.ru/2006/07/31/mod_rewrite-preobrazovanie-dinamicheskih-url-v-staticheskie/.
А это пример файла .htaccess
# Запуск mod_rewrite
Options +FollowSymLinks
RewriteEngine on
#
# Внутренние преобразования статических URL в динамические
RewriteRule ^(autor).html?$ index.php?page=$1 [L]
RewriteRule ^article_([0-9]+).html?$ article.php?art=$1 [L]
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: Студент)
Ответ отправлен: 11.01.2007, 12:02
Вопрос № 70.494
Привет всем.Вот вопрос,не могу решить. Есть такой код, который выделяет слово серым цветом.
$output=preg_replace('/(([[:space:]]|,|.|?|!)'.$_SESSION['FindWhat'].'([[:space:]]|,|.|?|!))/','<span style=""background-color:" #A9A9A9">\1</span>',$output);
Тут все работает, но мне нужно обрезать первый и последний символ слова, примерный код такой должен быть:
$output=preg_replace('/(([[:space:]]|,|.|?|!)'.$_SESSION['FindWhat'].'([[:space:]]|,|.|?|!))/','<span style=""background-color:" #A9A9A9">'.substr('\1',1,strlen('\1')-1).'</span>',$output);//примерный код
Вот тут и проблема, функция substr не работает, как и другая функция тоже не вызывается нормально, хотя в примере
preg_replace ("/(</?)(w+)([^>]*>)/e","'\1'.strtoupper('\2').'\3'",$html_body); функция strtoupper работает. Кто может помочь?
Отвечает: Барков Илья Андреевич
Здравствуйте, Шапошников Игорь Олегович!
Господи, сколько всего. зачем так много?
я бы просто вырезал первую и последнюю букву в найденном слове и раскрасил.
тупо разрезать слово, потом конкатенировать.
Ответ отправил: Барков Илья Андреевич (статус: 6-ой класс)
Ответ отправлен: 11.01.2007, 17:27 Оценка за ответ: 1 Комментарий оценки: Дело в том, что это часть кода, которое выделяет слово в тексте после поиска, а перед и до слова может быть и точка, и запятая и пробел и.т.д. Как вырезать первый и последний символ я знаю, мне нужно конкретно решить эту задачу,а не писать что лучше, что хуже,я привожу только одну строчку,а не целую программу
Отвечает: Загиров Рустам
Здравствуйте, Шапошников Игорь Олегович!
Для таких целей предназначенна функция preg_replace_callback. В качестве 2 параметра передаётся имя функции, которое возвращает значение текста для замены. Этой функции в качестве одно параметра передаётся массив карманов.
Создаем функцию, которая закрашивает слово и удаляет первую и последнюю букву.
Ответ отправил: Загиров Рустам (статус: Специалист)
Ответ отправлен: 12.01.2007, 01:28
Отвечает: HookEst
Здравствуйте, Шапошников Игорь Олегович!
Чтобы preg_replace интерпретировал текст замены как PHP Code, нужен модификатор e(ex: "/word/e"),
но в Вашем случае можно поступить проще:
Необходимо задать такой запрос, который бы определял, есть ли совпадающие
1)
значения поля poll_punkt.id_name соответствующие равным полям таблиц poll_punkt.id и poll_answer.answer , где poll_answer.ip равен ip '111.1.1.1'(к примеру).
И
2)значения поля poll_punkt.id_name соответствующие равным полям таблиц poll_punkt.id и poll_answer.answer , где poll_answer.answer равен номеру ответа пришедшего от пользователя(из формы голосования).
Это нужно сделать в одном запросе. Я сделал это в 2 запроса, пришлось парсить первый запрос потом полученное передавать во второй. разнесло всё строк на 10 и обращений 2 к базе. Нужно это сделать в один запрос. Таблицы простейшие. На то, чтобы сделать в один запрос я потратил часов 5! и никак. Таблицы созданы по классической схем голосования, предложенной мне ранее вами.
Это всё нужно, чтобы проверить голосовал ли человек или нет и потом соответсвенно на это отреагировать.
Отправлен: 11.01.2007, 19:34
Вопрос задал: PetrKi. (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Загиров Рустам
Здравствуйте, PetrKi.!
Я предлагаю такую структуру. Вот так я вижу таблицы:
1) poll_vote Вопросы
vote_id - int(11) auto_increment primary key
vote_name - varchar(50)
2) poll_anwer пункты к вопросам
answer_id - int(11) auto_increment primary key
vote_id int(11)
answer_name - varchar(50)
А узнать про последнее время голосования с данного ip можно так:
$temp=mysql_query("SELECT *,LEFT(l.stamp,10) as date FROM poll_answer a LEFT JOIN poll_logs l ON a.answer_id=l.answer_id WHERE l.ip='".$_SERVER['REMOTE_ADDR']."' AND vote_id=".$_REQUEST['vote_id']." ORDER BY l.stamp DESC LIMIT 1");
//Далее проверяем, голосовал ли этот пользователь сегодня:
if (mysql_result($temp,0,'date')!=date('Y-m-d')){
//Если не сегодня, то выполняем следующий запрос на вставку данных. Он такой сложный, т.к. мы проверяем соответствует ли answer_id vote_id.
mysql_query("INSERT INTO poll_logs(answer_id,ip) VALUES ((SELECT answer_id FROM poll_answer WHERE vote_id=".$_REQUEST['vote_id']." AND answer_id=".$_REQUEST['answer_id']." LIMIT 1),'".$_SERVER['REMOTE_ADDR']."')");
}
Ответ отправил: Загиров Рустам (статус: Специалист)
Ответ отправлен: 12.01.2007, 01:28
Отвечает: PVS
Здравствуйте, PetrKi.!
Вообще-то здравый смысл подсказывает, что в poll_answer лучше сделать answer_id вместо answer, но это дело вкуса. А запрос такой:
$qry="select count(*) from poll_punkt p, poll_answer a where a.answer=p.punkt and a.ip='$ip' and p.id_name=$checked_id";
если результат не нулевой, то пользователь уже отвечал на данный вопрос.
Можно выбрать все вопросы на которые пользователь уже отвечал:
$qry="select distinct p.id_name from poll_punkt p, poll_answer a where a.answer=p.punkt and a.ip='$ip' ";
А можно узнать и "голосовал/не голоcовал:"
$qry="select p.id_name, count(a.id) from poll_punkt p left join poll_answer a on (a.answer=p.punkt and a.ip='$ip') ";
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 12.01.2007, 10:16 Оценка за ответ: 4 Комментарий оценки: "Вообще-то здравый смысл подсказывает, что в poll_answer лучше сделать answer_id вместо answer"-- это так и есть, просто при разработке и тестировании получилось много скриптов обращающихся по этому имени, поэтому так и оставил.
Вопрос № 70.545
Здравствуй, уважаемый All!
Подскажите, пожалуйста, где можно толково почитать про безопасность в языке PHP? Про "подводные камни", различные ошибки, уязвимости, особенно при проектировании скриптов, связанных с обработкой форм и работой с БД (интересует, прежде всего, MySQL). буду благодарен за любую информацию, статьи, ссылки. Заранее спасибо.
Отправлен: 11.01.2007, 21:44
Вопрос задал: Porsche (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Королёв Руслан
Здравствуйте, Porsche!
Недавно читал в журнале PHP Inside http://phpinside.ru/mag/phpi18_2006_final.pdf 29 страница
Ответ отправил: Королёв Руслан (статус: 3-ий класс)
Ответ отправлен: 11.01.2007, 22:25
Отвечает: Cimus
Здравствуйте, Porsche!
Подборка статей http://phpclub.ru/detail/
http://articles.org.ru/cfaq/index.php?qid=86&catid=14
http://www.nestor.minsk.by/sr/2005/04/sr50417.html
http://www.addzone.ru/files/id/68
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: Студент)
Ответ отправлен: 11.01.2007, 22:54
http://phpclub.ru/detail/ - смотри раздел "Вопросы безопасности"
http://www.providerz.ru/articles/php/php-variables-security.html - Безопасность средствами суперглобальных массивов в PHP
http://www.compdoc.ru/internet/php/php_mysql_apache_secur/ - Безопасность PHP+MYSQL+Apache
http://phpsec.org/projects/guide/ - руководство по безопасности PHP