Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#51 2008-01-20 15:57:03

hcs
Гость

Re: mod_rewrite

topic_id, нужно же знать в какой топик отвечает юзер

#52 2008-01-20 16:26:27

VoiD
Гость

Re: mod_rewrite

ясно) спасибо.

#53 2008-01-20 22:36:38

VoiD
Гость

Re: mod_rewrite

как исправить ошибку?
когда изменяю данные в профиле:

Неверный источник. Вы попали на эту страницу из несанкционированного источника. Пожалуйста, вернитесь и попробуйте еще раз. Если проблема осталась, пожалуйста, убедитесь что 'Начальный URL' правильно установлен в Администрирование/Свойства и, что, Вы попадаете на форум через этот URL.

почитал здесь
требуется замена confirm_referer()
поменял confirm_referrer, не помогло
порадовался блин( сидел менял ссылки полдня, а тут во как(

#54 2008-01-21 00:59:49

artoodetoo
Гость

Re: mod_rewrite

у тебя в этом месте POST- или GET-запрос? если GET, то не потерял ли ты контрольный ключик в адресной строке после всех модперерайтываний?
надо отлаживать с выводом доп. информации: чего прилетело, а чего ожидалось.

тема непростая smile

#55 2008-01-21 05:46:45

maximum
Гость

Re: mod_rewrite

VoiD пишет:

message-60.html#p60

Не забудьте закрыть через robots от ботов либо воспользоваться следующим решением.

VoiD пишет:

разобрался) в post.php меняется элементарно) думал, сложнее будет)))

Сложнее будет в случае с редиректом перехода к первому непрочитанному сообщению.

Кстати, есть ещё редирект после правки сообщения.

#56 2008-01-21 08:42:52

VoiD
Гость

Re: mod_rewrite

Кстати, есть ещё редирект после правки сообщения.

ну бот все равно не будет исправлять сообщения) хотя для общей красоты надо сделать. спасибо!

у тебя в этом месте 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]

#57 2008-01-21 13:50:15

artoodetoo
Гость

Re: mod_rewrite

приведенный тобой пример ссылки не должен контролироваться confirm_referrer. страничка profile.php?id=xxx имеет право открываться откуда угодно

про POST и GET: post это когда есть <form method="post" ...
в во всех остальных случаях, в т.ч. просто по ссылке - это get-запрос

когда происходит get-запрос переменная $_POST не инициализирована, значит в ней бесполезно искать ключик. я кстати не знаю какой версией confirm_referrer ты пользуешся. загляни в мой PE может воспользуешся им.... там GET тоже может проверяться в специальных случаях

#58 2008-01-21 13:54:14

VoiD
Гость

Re: mod_rewrite

в профиль заходит и так и так, но при реврайте нельзя поменять язык например (ну и все остальное тоже)
интересно, но на punres не могу найти ничего
http://placelibre.ath.cx/ тут работает вроде) тока я в французском ноль(
буду копать дальше
посмотрел - метод post в форме написано

<form id="profile1" method="post" action="profile.php?section=essentials&amp;id=2" onsubmit="return process_form(this)">

Редактировался VoiD (2008-01-21 14:07:55)

#59 2008-01-21 14:48:36

maximum
Гость

Re: mod_rewrite

VoiD пишет:

ну бот все равно не будет исправлять сообщения) хотя для общей красоты надо сделать. спасибо!

Ну да, если ЧПУ необходимо для ботов, то изменений минимум, но вы же вылезли из этого минимума с метками сообщений, по этому я и...

Да, и ещё, confirm_referer не только при редактировании профиля будет беспокоить. sad Решение проблемы я нашёл на punbb.org, хотя и, по словам artoodetoo, не очень удачное.

#60 2008-01-21 14:57:57

artoodetoo
Гость

Re: mod_rewrite

начиная с ревизии 1236 их решение стало хорошим smile токен уже не передается в незашифрованном виде.
кто понимает по-английски может почитать обсуждение, где Neal (с подсказки Rickard'а) это придумал: blog.punbb.org

#61 2008-01-21 17:19:51

VoiD
Гость

Re: mod_rewrite

от слов токен и переменная $_POST страшно(
confirm_referer не только при редактировании профиля будет беспокоить
moderate.php еще ругается
так, по пунктам
контрольный ключик в адресной строке - это $id ?
я не могу понять, почему двигло считает, что /profile-2-void.html это несанкционированный источник,
а /profile.php?id=2 это санкционированный

http://dev.punbb.org/changeset/1236 это вообще для 1.3(

#62 2008-01-21 17:28:13

trijin
Гость

Re: mod_rewrite

VoiD пишет:

я не могу понять, почему двигло считает, что /profile-2-void.html это несанкционированный источник,
а /profile.php?id=2 это санкционированный

возможно потому что при строковом сравнении строчка '/profile-2-void.html' не содержит '/profile.php'

#63 2008-01-21 17:32:03

VoiD
Гость

Re: mod_rewrite

о! отлично! это я понимаю)
а где происходит проверка?
тыкните меня носом один раз) никогда так глубоко не залазил в скрипты

Редактировался VoiD (2008-01-21 17:35:19)

#64 2008-01-21 17:48:43

trijin
Гость

Re: mod_rewrite

файл 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)

#65 2008-01-21 17:58:21

VoiD
Гость

Re: mod_rewrite

о как понятно) потестю.

#66 2008-01-21 18:39:02

hcs
Гость

Re: mod_rewrite

Да лучше проверять в таком случае только домен  и не париться с именем скрипта

#67 2008-01-21 20:36:58

VoiD
Гость

Re: mod_rewrite

заработало!!! поменял везде

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)

#68 2008-01-21 22:49:47

artoodetoo
Гость

Re: mod_rewrite

http://dev.punbb.org/changeset/1236 это вообще для 1.3(

и таки что? это же punbb smile копирование не будет нарушением.

trijin, проверка $_SERVER['HTTP_REFERER'] ненадежный вариант. лучше от него отказываться в пользу ключика, сгенерированного на базе $_SERVER['SCRIPT_NAME'] - он НЕ меняется под mod_rewrite и его нельзя подделать в http-запросе.
под mod_rewrite адрес может поменятьс кардинально, а не как с profile. типа "post.php" может выглядеть как "new/topic/" а проверка должна работать правильно хоть с красивого адреса ты пришел, хоть с реального... об этом уже много написано по ссылкам выше.

#69 2008-01-22 09:34:35

VoiD
Гость

Re: mod_rewrite

вопрос по 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 грамотнее пробелы заменять не на минус а на подчеркивание
гугля лучше будет слова выделять (ну это если английские слова будут smile )

попробовал сделать вместо названия топика просто page
работает вот так:

RewriteRule ^theme-([0-9]+)-page-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]

Редактировался VoiD (2008-01-22 09:40:29)

#70 2008-01-22 10:40:20

hcs
Гость

Re: mod_rewrite

У тебя 3 выражения в круглых скобках:

RewriteRule ^theme-([0-9]+)-(.*)-([0-9]+).html$ viewtopic.php?id=$1&p=$2 [L]

в первом и в третьем - то что тебе надо, но в переписываемом урле ты вместо $3 пишешь $2, тоесть подставляешь слово блаблабла,  вот и не работает

#71 2008-01-22 11:42:15

VoiD
Гость

Re: mod_rewrite

поменял, но опять не работает
скорее всего, не работает потому, что (.*) это же любая строка, и сюда помещается и -([0-9]+), то есть $3 получается пустой

#72 2008-01-22 12:58:28

maximum
Гость

Re: mod_rewrite

VoiD пишет:

то есть чтобы было theme-1-блаблабла-3.html

А если в названии темы будет эта самая цифра "3"? Получается, что с "блаблабла" ссылка на страницу должна выглядеть например вот так "_page3".

Редактировался maximum (2008-01-22 12:59:19)

#73 2008-01-22 13:45:07

hcs
Гость

Re: mod_rewrite

([^0-9\-].*) или ([a-zA-Z]*)
По-моему надо открыть любое пособие по регулярным выражениям и подбирать правило, мало ли что ты там в блаблабла решишь написать?

#74 2008-01-22 15:32:46

VoiD
Гость

Re: mod_rewrite

да я тут одно пособие скоро наизусть выучу sad перепробовал вроде все sad видимо придется отказаться(

#75 2008-01-22 16:09:03

maximum
Гость

Re: mod_rewrite

hcs пишет:

По-моему надо открыть любое пособие по регулярным выражениям и подбирать правило, мало ли что ты там в блаблабла решишь написать?

Дык и в стандартном варианте форума можно что угодно написать... Буквы, цифры и среднее тире, что ещё нужно. smile

Подвал доски

Под управлением FluxBB. Хостинг Hostens