Быстрый лёгкий надёжный форумный движок
Вы не вошли.
topic_id, нужно же знать в какой топик отвечает юзер
ясно) спасибо.
как исправить ошибку?
когда изменяю данные в профиле:
Неверный источник. Вы попали на эту страницу из несанкционированного источника. Пожалуйста, вернитесь и попробуйте еще раз. Если проблема осталась, пожалуйста, убедитесь что 'Начальный URL' правильно установлен в Администрирование/Свойства и, что, Вы попадаете на форум через этот URL.
почитал здесь
требуется замена confirm_referer()
поменял confirm_referrer, не помогло
порадовался блин( сидел менял ссылки полдня, а тут во как(
у тебя в этом месте POST- или GET-запрос? если GET, то не потерял ли ты контрольный ключик в адресной строке после всех модперерайтываний?
надо отлаживать с выводом доп. информации: чего прилетело, а чего ожидалось.
тема непростая
message-60.html#p60
Не забудьте закрыть через robots от ботов либо воспользоваться следующим решением.
разобрался) в post.php меняется элементарно) думал, сложнее будет)))
Сложнее будет в случае с редиректом перехода к первому непрочитанному сообщению.
Кстати, есть ещё редирект после правки сообщения.
Кстати, есть ещё редирект после правки сообщения.
ну бот все равно не будет исправлять сообщения) хотя для общей красоты надо сделать. спасибо!
у тебя в этом месте POST- или GET-запрос? если GET, то не потерял ли ты контрольный ключик в адресной строке после всех модперерайтываний?
) а можно поподробней?
делаю ссылку на профиль
$links[] = '<li id="navprofile"><a href="profile.php?id='.$pun_user['id'].'">'.$lang_common['Profile'].'</a>';
все работает
а когда
$links[] = '<li id="navprofile"><a //href="profile-'.$pun_user['id'].'-'.pun_url($pun_user['username']).'.html">'.$lang_common['Profile'].'</a>';
не работает(
правило в хтакцес:
RewriteRule ^profile-([0-9]+)(.*)$ profile.php?id=$1 [L]
приведенный тобой пример ссылки не должен контролироваться confirm_referrer. страничка profile.php?id=xxx имеет право открываться откуда угодно
про POST и GET: post это когда есть <form method="post" ...
в во всех остальных случаях, в т.ч. просто по ссылке - это get-запрос
когда происходит get-запрос переменная $_POST не инициализирована, значит в ней бесполезно искать ключик. я кстати не знаю какой версией confirm_referrer ты пользуешся. загляни в мой PE может воспользуешся им.... там GET тоже может проверяться в специальных случаях
в профиль заходит и так и так, но при реврайте нельзя поменять язык например (ну и все остальное тоже)
интересно, но на punres не могу найти ничего
http://placelibre.ath.cx/ тут работает вроде) тока я в французском ноль(
буду копать дальше
посмотрел - метод post в форме написано
<form id="profile1" method="post" action="profile.php?section=essentials&id=2" onsubmit="return process_form(this)">
Редактировался VoiD (2008-01-21 14:07:55)
ну бот все равно не будет исправлять сообщения) хотя для общей красоты надо сделать. спасибо!
Ну да, если ЧПУ необходимо для ботов, то изменений минимум, но вы же вылезли из этого минимума с метками сообщений, по этому я и...
Да, и ещё, confirm_referer не только при редактировании профиля будет беспокоить. Решение проблемы я нашёл на punbb.org, хотя и, по словам artoodetoo, не очень удачное.
начиная с ревизии 1236 их решение стало хорошим токен уже не передается в незашифрованном виде.
кто понимает по-английски может почитать обсуждение, где Neal (с подсказки Rickard'а) это придумал: blog.punbb.org
от слов токен и переменная $_POST страшно(
confirm_referer не только при редактировании профиля будет беспокоить
moderate.php еще ругается
так, по пунктам
контрольный ключик в адресной строке - это $id ?
я не могу понять, почему двигло считает, что /profile-2-void.html это несанкционированный источник,
а /profile.php?id=2 это санкционированный
http://dev.punbb.org/changeset/1236 это вообще для 1.3(
я не могу понять, почему двигло считает, что /profile-2-void.html это несанкционированный источник,
а /profile.php?id=2 это санкционированный
возможно потому что при строковом сравнении строчка '/profile-2-void.html' не содержит '/profile.php'
о! отлично! это я понимаю)
а где происходит проверка?
тыкните меня носом один раз) никогда так глубоко не залазил в скрипты
Редактировался VoiD (2008-01-21 17:35:19)
файл include/functions.php
функция :
function confirm_referrer($script)
{
global $pun_config, $lang_common;
if (!preg_match('#^'.preg_quote(str_replace('www.', '', $pun_config['o_base_url']).'/'.$script, '#').'#i', str_replace('www.', '', (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''))))
message($lang_common['Bad referrer']);
}
Вызывается проверка в profile.php (несколько раз)
confirm_referrer('profile.php');
возможно если в качестве параметра проверки вызывать не [mono]'profile.php'[/mono], а [mono]'profile-'[/mono] (хотя скорее [mono]'profile\-'[/mono])может и сработает.
У меня Мод реврайт не стоит. не на чем потестить.
Редактировался trijin (2008-01-21 17:50:03)
о как понятно) потестю.
Да лучше проверять в таком случае только домен и не париться с именем скрипта
заработало!!! поменял везде
confirm_referrer('profile.php');
на
confirm_referrer('profile');
дело в том, что потом при навигации по
# Основной
# Персональный
# Общения
# Индивидуальный
# Отображения
# Личный
все равно вылазит profile.php, а в данном случае работает и так и так)))
скоро свою сборочку выложу) с реврайтами и пунтулбаром)
ковырял paginate, нашел:
// Don't ask me how the following works. It just does, OK? :-)
весело
Редактировался VoiD (2008-01-21 22:02:12)
http://dev.punbb.org/changeset/1236 это вообще для 1.3(
и таки что? это же punbb копирование не будет нарушением.
trijin, проверка $_SERVER['HTTP_REFERER'] ненадежный вариант. лучше от него отказываться в пользу ключика, сгенерированного на базе $_SERVER['SCRIPT_NAME'] - он НЕ меняется под mod_rewrite и его нельзя подделать в http-запросе.
под mod_rewrite адрес может поменятьс кардинально, а не как с profile. типа "post.php" может выглядеть как "new/topic/" а проверка должна работать правильно хоть с красивого адреса ты пришел, хоть с реального... об этом уже много написано по ссылкам выше.
вопрос по paginate)
по умолчанию в выложенном здесь моде реализовано так:
страницы
theme-1-1.html
theme-1-2.html
и т д
исходя из того, что ссылка на топик у меня
theme-1-test-post.html
хочу сделать ссылки на страницы вида
theme-1-test-post-3.html
например на 3 страницу
это лучше для сео и я считаю, что по такой ссылке люди переходить будут больше (по себе заметил)
(еще надо если страница первая-цифру убирать вообще, чтобы не было дубликации контента, но это просто)
ссылку модреврайтную написал, только проблема:
как переписать правило в хтакцес? по-моему вообще нельзя так
было:
RewriteRule ^theme-([0-9]+)-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]
а надо, насколько я понимаю, что-то вроде
RewriteRule ^theme-([0-9]+)-(.*)-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]
но это не работает(
то есть чтобы было theme-1-блаблабла-3.html
кстати, в pun_url грамотнее пробелы заменять не на минус а на подчеркивание
гугля лучше будет слова выделять (ну это если английские слова будут )
попробовал сделать вместо названия топика просто page
работает вот так:
RewriteRule ^theme-([0-9]+)-page-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]
Редактировался VoiD (2008-01-22 09:40:29)
У тебя 3 выражения в круглых скобках:
RewriteRule ^theme-([0-9]+)-(.*)-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]
в первом и в третьем - то что тебе надо, но в переписываемом урле ты вместо $3 пишешь $2, тоесть подставляешь слово блаблабла, вот и не работает
поменял, но опять не работает
скорее всего, не работает потому, что (.*) это же любая строка, и сюда помещается и -([0-9]+), то есть $3 получается пустой
то есть чтобы было theme-1-блаблабла-3.html
А если в названии темы будет эта самая цифра "3"? Получается, что с "блаблабла" ссылка на страницу должна выглядеть например вот так "_page3".
Редактировался maximum (2008-01-22 12:59:19)
([^0-9\-].*) или ([a-zA-Z]*)
По-моему надо открыть любое пособие по регулярным выражениям и подбирать правило, мало ли что ты там в блаблабла решишь написать?
да я тут одно пособие скоро наизусть выучу перепробовал вроде все видимо придется отказаться(
По-моему надо открыть любое пособие по регулярным выражениям и подбирать правило, мало ли что ты там в блаблабла решишь написать?
Дык и в стандартном варианте форума можно что угодно написать... Буквы, цифры и среднее тире, что ещё нужно.