Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-10-26 05:14:15

staric
Участник
Зарегистрирован: 2010-09-09
Сообщений: 96
Рейтинг :   

Профиль пользователя

Привет, возникла такая проблма. Если зарегится на сайте русским логином, то другие пользователи не могут зайти на страницу профиля данного пользователя, вылазиет ошибка "Ошибка: Вы не выбрали пользователя или такой пользователь не существует!", хотя можно авторизироваться, оставлять комменты и самому заходить в свой профиль и редактировать его. В адресной строке ссылка выглядит так http://site.ru/users/вова.html т.е. прописано кириллицей. Я так понимаю, что проблема именно в ней, как это исправить, либо как запретить регистрироваться на русском. Просьба не предлагать обновиться до версии 0.9.2 т.к. в версии 0.9.1 Release [420] слишком много всего было сделано, боюсь, что сломаю сайт, потом фиг все это восстановишь.

Не в сети

#2 2010-10-26 10:43:56

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: Профиль пользователя

Вообще в браузерной строке должно быть что-то вида %E2%EE%E2%E0

Не в сети

#3 2010-10-26 10:54:19

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Профиль пользователя

staric, попробуй так
Найди в файле uprofile.php строки (~28-я строка)

	if (isset($params['id']) && (intval($params['id']) > 0)) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($params['id']));
	} else if (isset($params['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote($params['name']));
	} else if (isset($_REQUEST['id'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($_REQUEST['id']));
	} else if (isset($_REQUEST['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote($_REQUEST['name']));
	}

и замени на

	if (isset($params['id']) && (intval($params['id']) > 0)) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($params['id']));
	} else if (isset($params['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote(convert($params['name'])));
	} else if (isset($_REQUEST['id'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where id = ".intval($_REQUEST['id']));
	} else if (isset($_REQUEST['name'])) {
		$urow = $mysql->record("select * from ".uprefix."_users where name = ".db_squote(convert($_REQUEST['name'])));
	}

Не проверял, но должно работать.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#4 2010-10-26 22:16:10

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: Профиль пользователя

staric, самый простой способ - в настройках ЧПУ указать, что страница пользователя выглядит как /users/ID.html, а не /users/login.html smile
(для ссылки /users/{id}.html проставить флаг "PRI")

Не в сети

#5 2010-10-26 22:18:02

staric
Участник
Зарегистрирован: 2010-09-09
Сообщений: 96
Рейтинг :   

Re: Профиль пользователя

vitaly пишет:

staric, самый простой способ - в настройках ЧПУ указать, что страница пользователя выглядит как /users/ID.html, а не /users/login.html smile

vitali спасибо так и сделал, все работает, вопрос снят.

Не в сети

#6 2013-10-25 14:01:23

PIT3R
Участник
Зарегистрирован: 2013-08-30
Сообщений: 25
Рейтинг :   

Re: Профиль пользователя

ID: uprofile
Name: Users profile
Version: 0.08

NGCMS Runtime error: Call-time pass-by-reference has been removed
[ 64]: Call-time pass-by-reference has been removed

Stack trace
Line #    File name
251    ...\engine\plugins\uprofile\uprofile.php

строки:

	if (is_array($PFILTERS['plugin.uprofile']))
		foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfileForm($urow['id'], $urow, &$tVars); }

NGCMS Runtime error: Call-time pass-by-reference has been removed
[ 64]: Call-time pass-by-reference has been removed

Stack trace
Line #    File name
405    ...\engine\plugins\uprofile\uprofile.php

Строки

	if (is_array($PFILTERS['plugin.uprofile']))
		foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfile($currentUser['id'], $currentUser, &$sqlFields); }

PHP 5.4.16
Как починить? (ну кроме как закоментить)

Не в сети

#7 2013-10-25 17:10:40

bestxp
Участник
Откуда Россия
Зарегистрирован: 2008-10-13
Сообщений: 133
Рейтинг :   
Сайт

Re: Профиль пользователя

отредактировать editProfile и ссылка должна быть аргументом , а не передавать ссылку как аргумент


senior php and js developer

Не в сети

#8 2013-10-25 18:55:01

PIT3R
Участник
Зарегистрирован: 2013-08-30
Сообщений: 25
Рейтинг :   

Re: Профиль пользователя

bestxp, можно готовое решение? я в этом деле профан.

Не в сети

#9 2013-10-26 12:00:12

bestxp
Участник
Откуда Россия
Зарегистрирован: 2008-10-13
Сообщений: 133
Рейтинг :   
Сайт

Re: Профиль пользователя

я бы сейчас и дал готовое решение, но я сто лет не ковырялся в исходниках, я знаю как решается проблема указанная, что собственно и описал
но второе на сколько сильно завязана система на этой фукнциональности еще не известно

всё хочу поковырятся в коде, но время время.

для начала попробуй сделать так
где последний аргумент &$sqlFields со знаком амперсанда заменить на аргумент без него


senior php and js developer

Не в сети

#10 2013-10-28 09:03:31

PIT3R
Участник
Зарегистрирован: 2013-08-30
Сообщений: 25
Рейтинг :   

Re: Профиль пользователя

bestxp, спасибо.
код:

if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfileForm($urow['id'], $urow, $tVars); }

и

if (is_array($PFILTERS['plugin.uprofile']))
        foreach ($PFILTERS['plugin.uprofile'] as $k => $v) { $v->editProfile($currentUser['id'], $currentUser, $sqlFields); }

работает!!!
Еще раз, спасибо за помощь.

Изменено PIT3R (2013-10-28 11:47:02)

Не в сети

Подвал раздела

Работает на FluxBB