Криво работает sef_urls на windows-1251 Криво работает sef_urls на windows-1251
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Криво работает sef_urls на windows-1251

Started by RedPage, November 18, 2008, 10:54:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

RedPage

Криво работает sef_urls на windows-1251
Выдалась минутка заняться галереей, обнаружил, что база создалась непонятно как, хотя в том году в это время хотел интегрировать галерею к вордпресу и была нужна UTF-8, но из-за крякозябр сгноил базу с более чем 10000 описанных фоток, установил все с нуля в надежде, что все будет правильно, но инсталер кривой, и создавал бог весть, что пришлось всякие файлы править интегрировать из-за этого не получилось я перекипел. (Кривой на примере товоже вордпреса, ставится, быстра и делает таблицы в нужном формате без всякого геморроя). Вернусь к проблеме, которую я обнаружил, она собственно изложена в заголовке топика, а выглядит так:

Когда была UTF-8 хоть и кривая sef_urls работал и не было не каких ошибок, при переходе по ключевым фразам в

http://www.tatu.announcements.ru/search.php

Сейчас же при нажатии на ключевую фразу:
http://www.tatu.announcements.ru/thumbnails-search-черный.html

вылазет вот такая ошибка:
Результаты поиска - "черный"

Ради эксперимента потратив часов 20 конвертировав таблицу в базе, но не чего не помогло.
При этом запрос можно отправить типа, если бы sef_urls не стоял:

http://www.tatu.announcements.ru/thumbnails.php?album=search&search=черный
Ошибок в виде крякозябр при этом нет
Результаты поиска - "черный"

Могу предположить, что sef_urls как-то неправильно формирует запрос в адресной строке и его надо немного подкрутить, но как я не знаю, помогите мне, пожалуйста.

(https://coppermine-gallery.com/forum/proxy.php?request=http%3A%2F%2Fwww.tatu.announcements.ru%2Falbums%2Fuserpics%2F10001%2Fthumb_00001.jpg&hash=4480a247071df8e029cc6ec5044387cb034cd678)
Духи мне шепчут, то я должен своим несчастьем с Рунету. :'(


Makc666

#1
Нужно понимать, как работает браузер вообще, и как работает sef_urls.

Когда Вы в браузере открывает ссылку:
http://www.tatu.announcements.ru/thumbnails.php?album=search&search=черный

Браузер СРАЗУ передаёт в PHP слово "черный" и уже там русские буквы обрабатываются.

А уже потом в браузер возвращается слово преобразованное и ссылка выглядит как:
http://www.tatu.announcements.ru/thumbnails.php?album=search&search=%D1%87%D0%B5%D1%80%D0%BD%D1%8B%D0%B9

Если Вы попытаетесь изначально открыть ссылку:
http://www.tatu.announcements.ru/thumbnails.php?album=search&search=%D1%87%D0%B5%D1%80%D0%BD%D1%8B%D0%B9
то ничего не получите :)

Это грубо говорю...

---------------------

А когда Вы открываете:
http://www.tatu.announcements.ru/thumbnails-search-черный.html

То получается, что на каком-то этапе слово черный обрабатывается в UTF-8, а потом обработанный результат передаётся обратно в Windows-1251 и получается вот это "черный".
"черный" - это и есть "черный" в UTF-8.

Если Вы откроете ссылку ниже, то всё будет работать.
http://www.tatu.announcements.ru/thumbnails-search-%F7%E5%F0%ED%FB%E9.html

Мне кажется, что Вы там уже столько намутили с пересохранением файлов в разных кодировках, что сами запутались и нас путаете ???

Я обновил архив SEF_URLs plugin for cpg1.4.x до версии Version 1.44
http://forum.coppermine-gallery.net/index.php/topic,46718.msg276140.html#msg276140

RedPage

Переустановил плагин, но при нажатии на

http://www.tatu.announcements.ru/search-thumbnails-черный.html

Результаты поиска - "черный"

При этом все нормально работает, если просто вести слово в строке запроса поиска:
Результаты поиска - "черный"

Также все нормально отображается, если запрос идет вида:
http://www.tatu.announcements.ru/thumbnails.php?album=search&search=черный

кстати этот запрос не работает с кодировкой UTF-8 на той же
http://www.art-apple.ru/thumbnails.php?album=search&search=черный
Результаты поиска - "������"
Но если нажимать на русские слова, которые есть на
http://www.art-apple.ru/search.php
Все работает:
http://www.art-apple.ru/thumbnails.php?album=search&search=черная
Результаты поиска - "черная" но стоит обновить запрос и снова все
Результаты поиска - "������"

RedPage

Я вижу решение в данной ситуации в следующем отключить запросы вида:

http://www.tatu.announcements.ru/search-thumbnails-детское.html

Пускай они будут как без sef_urls

http://www.tatu.announcements.ru/thumbnails.php?album=search&search=детское


Последнее не так критично, но возник вопрос как правильно это сделать? С налету это не прокатило.
Уверен, то убрав обработку данного запроса скрипт станет более универсален, так как будет меньше зависеть от кодировок или последнему надо как-то явным образом иметь возможность указывать способ обращения к базе, все из-за той же путанице в кодировке.

Жалко будет отключать скрипт если не найду приемлемого выхода из данной ситуации. (https://coppermine-gallery.com/forum/proxy.php?request=http%3A%2F%2Fparty.redpage.ru%3A8080%2Fim%2Fsmlnew%2F36_1_38.gif&hash=9a486b9eec82eafd91bf9f50ed35ca7a586dc940)

Alex Revo

Можно попробовать перекодировать урл так:

$new_url = iconv('utf-8', 'windows-1251', rawurldecode($url));

т.е. нужно найти где впервые обрабатывается урл вида:
http://www.tatu.announcements.ru/thumbnails.php?album=search&search=детское
и перекодировать его

Makc666

Вот тут это делается:
http://forum.coppermine-gallery.net/index.php/topic,56873.0.html


$CURRENT_PIC_DATA['keywords'] = всё ключевые слова для объекта

ULISS

Quote from: Makc666 on December 02, 2008, 12:51:02 PM
Вот тут это делается:
http://forum.coppermine-gallery.net/index.php/topic,56873.0.html


$CURRENT_PIC_DATA['keywords'] = всё ключевые слова для объекта

Makc666, всё равно выдаёт в utf-8


Makc666

Quote from: ULISS on December 17, 2008, 10:39:04 PM
Makc666, всё равно выдаёт в utf-8
Открой:
displayimage.php

Найди кусок кода:
    if ($CURRENT_PIC_DATA['keywords'] != "") {                                                                                     
        $info[$lang_picinfo['Keywords']] = '<span class="alblink">' . preg_replace("/(\S+)/", "<a href=\"thumbnails.php?album=search&amp;search=\\1\">\\1</a>" , $CURRENT_PIC_DATA['keywords']) . '</span>';                                                           
    }


Замени на:
    if ($CURRENT_PIC_DATA['keywords'] != "") {                                                                                     
//        $info[$lang_picinfo['Keywords']] = '<span class="alblink">' . preg_replace("/(\S+)/", "<a href=\"thumbnails.php?album=sear
ch&amp;search=\\1\">\\1</a>" , $CURRENT_PIC_DATA['keywords']) . '</span>';                                                         
        $keywords_arr = preg_split("/[\s,]+/",$CURRENT_PIC_DATA['keywords']);                                                       
        foreach ($keywords_arr AS $key=>$value){                                                                                   
            $info[$lang_picinfo['Keywords']] .= '<span class="alblink"><a href="thumbnails.php?album=search&amp;search=' . urlencode
($keywords_arr[$key]) . '">' . $keywords_arr[$key] . '</a></span>&nbsp;';                                                           
        }                                                                                                                           
    }


У меня нет под рукой галереи в Windows-1251, поэтому мне тяжело тестить :(

Жду ответа...

ULISS


ULISS

У меня тот самый сложный случай когда мне пришлось в config.inc.php
Задать кодировку т.к. с переездом на другой хостинг возникли проблемы...

$CONFIG['dbcharset'] =                       'cp1251';

Makc666

Quote from: ULISS on December 18, 2008, 09:11:34 PM
Нажимаю на фотку, пусто...
Плохо, что пусто.
Нужно мне или права у тебя давать, если галерея видна в инет, чтобы я мог файло править.
Или мне ставить у себя подобную схему.

Второне наверное проще, но... Нужно время.

Кстати, в 1.5.x обещают родную поддержку sef_urls.
Сам пока не видел.

ULISS

Makc666, а может можно, скачать архив cpg135_pictures с названиями фотографий и его каким-то образом перекодировать в cp1251...?
Т.к. хотел добавить к фоткам выведенным на первую страницу с помощью (copperminefetch) названия фотографий и они тоже крокозяблами отображаются... :-(

Alex Revo

Покапайтесь в этой теме, там описано несколько рецептов как делается перекодировка.

ULISS

Makc666, у меня VPS
база с нуля создаётся


character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_unicode_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci

и ничего придумать не могу, как конвертировать с помощью WinSCP то есть шел сделать, не понимаю.
Ещё раз можно для юзера. :-[

Makc666

Quote from: ULISS on January 12, 2009, 11:20:22 PM
Makc666, у меня VPS
база с нуля создаётся


character_set_client utf8
character_set_connection utf8
character_set_database cp1251
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection utf8_unicode_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci

и ничего придумать не могу, как конвертировать с помощью WinSCP то есть шел сделать, не понимаю.
Ещё раз можно для юзера. :-[
А как база создаётся, кнопкой?
Доступ к phpmyadmin есть?
Можно несколько баз создавать, т.е. создать пустую базу?

ULISS

Quote from: Makc666 on January 13, 2009, 07:37:48 PM
А как база создаётся, кнопкой?
Доступ к phpmyadmin есть?
Можно несколько баз создавать, т.е. создать пустую базу?


База создаётся из ISPmanager, но пробовал из phpmyadmin тоже.
Доступ к phpmyadmin естественно есть, баз можно создать неограниченное колличество т.к. VPS.

Makc666

Quote from: ULISS on January 13, 2009, 09:37:22 PM
База создаётся из ISPmanager, но пробовал из phpmyadmin тоже.
Доступ к phpmyadmin естественно есть, баз можно создать неограниченное колличество т.к. VPS.
Так. Понятно.

А теперь с нуля, по шагам, опиши свою проблему заново, потому что тема начинается про одно, а заканчивается другим.
Я честно уже запутался, что ты хочешь, для чего, зачем, как и т.п.

ULISS

Quote from: Makc666 on January 15, 2009, 03:47:20 PM
Так. Понятно.

А теперь с нуля, по шагам, опиши свою проблему заново, потому что тема начинается про одно, а заканчивается другим.
Я честно уже запутался, что ты хочешь, для чего, зачем, как и т.п.

Проблема в следующем.
Ключевые русские слова  отображаются абракадаброй по клику, да и вся база если убрать патч.

}
          if (!mysql_select_db($CONFIG['dbname']))
                  return false;
+                 if ($CONFIG['dbcharset']) {
+                   mysql_query("SET NAMES '$CONFIG[dbcharset]'",$result);
+                 }
          return $result;
  }


А вообще, хотелось бы конвертнуть базу в cp1251 чтоб не было никаких траблов и не изобретать велосипед.  :P