51

Re: mod_rewrite

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

Сайт hcs

Поделиться

52

Re: mod_rewrite

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

53

Re: mod_rewrite

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

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

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

54

Re: mod_rewrite

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

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

Сайт artoodetoo

Поделиться

55

Re: mod_rewrite

VoiD пишет:

message-60.html#p60

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

VoiD пишет:

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

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

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

Поделиться

56

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]
Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

57

Re: mod_rewrite

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

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

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

Сайт artoodetoo

Поделиться

58 (21.01.2008 03:07 отредактировано VoiD)

Re: mod_rewrite

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

<form id="profile1" method="post" action="profile.php?section=essentials&amp;id=2" onsubmit="return process_form(this)">
Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

59

Re: mod_rewrite

VoiD пишет:

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

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

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

Поделиться

60

Re: mod_rewrite

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

Сайт artoodetoo

Поделиться

61

Re: mod_rewrite

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

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

62

Re: mod_rewrite

VoiD пишет:

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

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

trijin.ru/forum/viewforum.php?id=10 пол года в дауне - скоро вернется =)

Поделиться

63 (21.01.2008 06:35 отредактировано VoiD)

Re: mod_rewrite

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

64 (21.01.2008 06:50 отредактировано 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.ru/forum/viewforum.php?id=10 пол года в дауне - скоро вернется =)

Поделиться

65

Re: mod_rewrite

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

66

Re: mod_rewrite

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

Сайт hcs

Поделиться

67 (21.01.2008 11:02 отредактировано 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

Поделиться

68

Re: mod_rewrite

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/" а проверка должна работать правильно хоть с красивого адреса ты пришел, хоть с реального... об этом уже много написано по ссылкам выше.

Сайт artoodetoo

Поделиться

69 (21.01.2008 22:40 отредактировано 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

Поделиться

70

Re: mod_rewrite

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

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

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

Сайт hcs

Поделиться

71

Re: mod_rewrite

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

72 (22.01.2008 01:59 отредактировано maximum)

Re: mod_rewrite

VoiD пишет:

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

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

Поделиться

73

Re: mod_rewrite

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

Сайт hcs

Поделиться

74

Re: mod_rewrite

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

Мой блог, на котором делаю форум :)

Сайт VoiD

Поделиться

75

Re: mod_rewrite

hcs пишет:

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

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

Поделиться