id юзера в адресной строке вместо логина

id юзера в адресной строке вместо логина

#16 26 мая 2011 в 21:18
Prozaik, ну так-то да… Вы правы полностью. Но дело не только в безопасности, но и в эстетичности. На нашем сайте некоторые люди ригистрируются в качестве фирмы. Некторые фирмы серьезные и, например, вместо users/ooo_roga_i_kopita получается uesers/pupsik (все условно) немного глуповато получается)))
#17 26 мая 2011 в 21:24
хотя, продолжая вою мысль- все относительно… сегодня заметил, что один из пользователей опубликовал статус у себя вконтакте в виде ссылки на профиль нашего сайта users/login… и вот сейчас понимаю, что если бы было users/id, то такого эффекта бы не получилось))))
#18 26 мая 2011 в 21:27

хз… номаные имена получаются… транслит имени компании… думать то надо им когда компанию называют

Prozaik
абсолютно верно, осталось только научить пользователя придумать логин в виде транслита имени компании)))) пожалуй припишу это в регистрацию)
#19 26 мая 2011 в 21:31
можно ведь и никнейм прогнать через функцию транслитерации и вместо ид использовать…
#20 26 мая 2011 в 21:37

можно ведь и никнейм прогнать через функцию транслитерации и вместо ид использовать…

• Mike •
Это как? сделать как Вы описали выше и еще добавить вот эту функцию?
#21 26 мая 2011 в 21:48
нет вместо ид использовать транслитерированный никнейм
#22 26 мая 2011 в 21:54
сталобыть дейстия все те же, только вместо ид использовать транслитерированный никнейм? Не совсем понимаю просто…
#23 26 мая 2011 в 22:30
первая замена будет тогда такой например:
  1.  
  2. public static function getProfileURL($user_login) {
  3. $inDB = cmsDatabase::getInstance();
  4. $inCore = cmsCore::getInstance();
  5. $nickname = $inDB->get_field('cms_users', "login='{$user_login}'", 'nickname');
  6. $nickname = $inCore->strToURL($nickname);
  7. return '/' . self::PROFILE_LINK_PREFIX .$nickname;
  8. }
  9.  
ну и дальше нужно поменять с учётом этого
#24 6 ноября 2011 в 16:59
Быстрый поиск на мой вопрос ответа не выдал… эта тема из той-же серии...
Как безболезненно для цмс убрать /users/ ??? чтоб получилось имя_сайта.ру/имя_пользователя
Если это уже решено где-то, дайте пожалст ссылку.
#25 22 ноября 2011 в 12:15
После изменения кода на тот что предложил ты при переходе на страницу пользователя пишет какую-то синтаксическую ошибку в файле router в 508 строке


да нет всё достаточно просто (но работоспособность проверялось только на вкладках пользователей)
итак — для смелых )
открываем /core/classes/user.class.php находим строку (~1396)

  1.  
  2. public static function getProfileURL($user_login) {
  3.  
заменяем функцию целиком:
  1.  
  2. public static function getProfileURL($user_login) {
  3. $inDB = cmsDatabase::getInstance();
  4. $id = $inDB->get_field('cms_users', "login='{$user_login}'", 'id');
  5. return '/' . self::PROFILE_LINK_PREFIX . 'id'.$id;
  6. }
  7.  
открываем файл /components/users/frontend.php находим (~649)
  1.  
  2. /////////////////////////////// VIEW PROFILE /////////////////////////////////////////////////////////////////////////////////////////
  3. if ($do=='profile'){
  4.  
  5. $inCore->loadLib('clubs');
  6.  
  7. if (!$id){
  8. $login = $inCore->request('login', 'str', '');
  9. $login = urldecode($login);
  10. $id = $inDB->get_field('cms_users', "id='{$id}' ORDER BY is_deleted ASC", 'id');
  11. }
  12.  
заменяем этот блок на:
  1.  
  2. /////////////////////////////// VIEW PROFILE /////////////////////////////////////////////////////////////////////////////////////////
  3. if ($do=='profile'){
  4.  
  5. $inCore->loadLib('clubs');
  6.  
  7. if (!$id){
  8. $id = $inCore->request('id', 'int', '');
  9. }
  10.  
открываем файл /components/users/router.php находим в самом конце:
  1.  
  2. //RewriteRule ^users/([a-zA-z0-9\.]*)$ /index.php?view=users&do=profile&login=$1
  3. $routes[] = array(
  4. '_uri' => '/^users\/([a-zA-z0-9\.]+)$/i',
  5. 'do' => 'profile',
  6. 1 => 'login'
  7. );
  8.  
// закомментируем этот блок и после него (или удаляем и вместо него)
  1.  
  2. //RewriteRule ^users/id([0-9]+)$ /index.php?view=users&do=profile&id=$1
  3. $routes[] = array(
  4. '_uri' => '/^users\/id([0-9]+)$/i',
  5. 'do' => 'profile',
  6. 1 => 'id'
  7. );
  8.  
наверное всё, если будет где-то не работать напишите тут что-нить подправим)
кстати данный хак позволит более точно отбирать условия для плагина user_tip… )

• Mike •
#26 22 ноября 2011 в 14:04
Все изменения в файлах относились к версии 1.7, вполне возможно что с более поздними версиями могут быть расхождения…
#27 22 ноября 2011 в 20:35
А для версии 1.8 можешь написать код? Очень нужно


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

• Mike •
#28 22 ноября 2011 в 23:17

После изменения кода на тот что предложил ты при переходе на страницу пользователя пишет какую-то синтаксическую ошибку в файле router в 508 строке

Alex Broun
что именно находится у вас в 508 строке, код приведите из данного файла (508 строку)…
#29 23 ноября 2011 в 00:00


После изменения кода на тот что предложил ты при переходе на страницу пользователя пишет какую-то синтаксическую ошибку в файле router в 508 строке

Alex Broun
что именно находится у вас в 508 строке, код приведите из данного файла (508 строку)…

• Mike •

Вот что пишет сайт Parse error: syntax error, unexpected '?' in /usr/home/socialwo/domains/social-world.ru/public_html/components/users/router.php on line 508

В этой строке кроме ?php> ничего нет

А вообще вставляю этот код:
//RewriteRule ^users/id([0-9]+)$ /index.php?view=users&do=profile&id=$1
$routes[] = array(
'_uri' => '/^users\/id([0-9]+)$/i',
'do' => 'profile',
1 => 'id'
);
#30 23 ноября 2011 в 00:05
кроме вставки нужно еще закомментировать,
вот код начиная с 500 строки и до конца файла:
  1.  
  2. //RewriteRule ^users/([a-zA-z0-9\.]*)$ /index.php?view=users&do=profile&login=$1
  3. //$routes[] = array(
  4. // '_uri' => '/^users\/([a-zA-z0-9\.]+)$/i',
  5. // 'do' => 'profile',
  6. // 1 => 'login'
  7. // );
  8.  
  9. //RewriteRule ^users/id([0-9]+)$ /index.php?view=users&do=profile&id=$1
  10. $routes[] = array(
  11. '_uri' => '/^users\/id([0-9]+)$/i',
  12. 'do' => 'profile',
  13. 1 => 'id'
  14. );
  15.  
  16. return $routes;
  17.  
  18. }
  19.  
  20. ?>
  21.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.