Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Warning: Delimiter must not be alphanumeric or backslash (4.2.1 Extra UTF-8)

11.11.2010, 07:53
wisher
Плешкан Александр Викторович

Зарегистрирован:
2009-02-16
Сообщений: 9

После обновления до версии 4.2.1 и перевода на UTF-8 возникли проблемы с работой механизма переадресации.

Ошибка ссылается на функцию preg_replace, что в nc_preg_replace. Файл: unicode.inc.php, строка 46:
Код:
  return preg_replace ( $pattern, $replacement, $subject, $limit,  $count );

Вызов из функции AttemptToRedirect, что в файле s_e404.inc.php:
Код:
  if ( strchr($new_url, \"\\\\\") ) {
$result_url = nc_preg_replace($old_url, $new_url, $url);
}

Пока победил это используя старую версию функции AttemptToRedirect.

wisher
12.11.2010, 18:03
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

Если не сложно, скажите, что стоит в "старом" и "новом" урле?

Ксю доставляет...
13.11.2010, 03:07
wisher
Плешкан Александр Викторович

Зарегистрирован:
2009-02-16
Сообщений: 9

Например:
Код:
19 	*/info/*	*1/about/*2
32 */link/cat/*/ *1/support/download/?cat=*2
33 */link/cat/* *1/support/download/?cat=*2
34 */link/file/*/ *1/support/download/?file=*2
35 */link/file/* *1/support/download/?file=*2
37 www.site.ru/forums/* forum.site.ru/*1
39 site.ru/forums/* forum.site.ru/*1

При соблюдении условий для переадресации вылезает этот варнинг.

PHP 5.2.6
MySQL 5.0.45
NetCat Extra 4.2.1 (utf8_general_ci)

wisher
19.01.2011, 15:13
MihaKot
Аксарин Константин

Зарегистрирован:
2005-01-22
Сообщений: 38

Решали мы такую проблему с Денисом.
Пришлось немного исправит код.
Только так.
06.04.2011, 15:20
sparton
Шекера Евгений

Зарегистрирован:
2010-03-16
Сообщений: 141

Тоже столкнулся. Каково решение? Что исправить?
06.04.2011, 15:55
sparton
Шекера Евгений

Зарегистрирован:
2010-03-16
Сообщений: 141

Замените, код функции AttemptToRedirect в файле /netcat/require/s_e404.inc.php на приведённый ниже:

Код:

function AttemptToRedirect ($url) {
// system superior object
$nc_core = nc_Core::get_object();
// GET data
$get_data = $nc_core->input->fetch_get();
// REQUEST_URI не надо учитывать
if ( $get_data['REQUEST_URI'] ) unset($get_data['REQUEST_URI']);

if ( !empty($get_data) ) $url .= '?'.$nc_core->url->build_url($get_data);

$nc_core->db->num_rows = 0;
$res = $nc_core->db->get_row("SELECT REPLACE(NewURL,'*','$'),REPLACE(OldURL,'*','([[:alnum:]]+)'), `Header` FROM `Redirect`
WHERE '".$nc_core->db->escape($url)."' LIKE CONCAT('http://',REPLACE(REPLACE(OldURL,'_','\\\_'),'*','%'))
OR '".$nc_core->db->escape($url)."' LIKE CONCAT('http://www.',REPLACE(REPLACE(OldURL,'_','\\\_'),'*','%')) ORDER BY LENGTH(OldURL) DESC LIMIT 1", ARRAY_N);

if (!$nc_core->db->num_rows) return 0;

list($new_url, $old_url, $header_code) = $res;

// заголовок по умолчанию
if ( $header_code != 301 && $header_code != 302 ) $header_code = 301;

if ( strchr($new_url, '$') ) {
$result_url = preg_replace('@'.$old_url.'@i', $new_url, $url, -1, $c);
}
else {
$result_url = "http://".$new_url;
}

if ($nc_core->REDIRECT_STATUS=="on") {
if ($nc_core->AUTHORIZATION_TYPE=='session') {
if ( substr($result_url, -1)!='l' && substr($result_url, -1)!='/' ) {
$result_url.= "&".session_name()."=".session_id();
}
else {
$result_url.= "?".session_name()."=".session_id();
}
}

if ($nc_core->PHP_TYPE=='cgi') header('Status: 301 Moved Permanently');

header("Location: ".$result_url, true, $header_code);
}
else {
if ($nc_core->PHP_TYPE=='cgi') header('Status: 200 OK');
echo "<meta http-equiv='refresh' content='0;url=http://".$result_url."'>";
}
exit;
}
198 196 2011-04-06 15:55:25 10835
Описание проекта