Вы не зашли.
Страницы 1
Привет, возникла такая проблма. Если зарегится на сайте русским логином, то другие пользователи не могут зайти на страницу профиля данного пользователя, вылазиет ошибка "Ошибка: Вы не выбрали пользователя или такой пользователь не существует!", хотя можно авторизироваться, оставлять комменты и самому заходить в свой профиль и редактировать его. В адресной строке ссылка выглядит так http://site.ru/users/вова.html т.е. прописано кириллицей. Я так понимаю, что проблема именно в ней, как это исправить, либо как запретить регистрироваться на русском. Просьба не предлагать обновиться до версии 0.9.2 т.к. в версии 0.9.1 Release [420] слишком много всего было сделано, боюсь, что сломаю сайт, потом фиг все это восстановишь.
Не в сети
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
Не в сети
staric, самый простой способ - в настройках ЧПУ указать, что страница пользователя выглядит как /users/ID.html, а не /users/login.html
(для ссылки /users/{id}.html проставить флаг "PRI")
Не в сети
Не в сети
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 removedStack 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 removedStack 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
Как починить? (ну кроме как закоментить)
Не в сети
я бы сейчас и дал готовое решение, но я сто лет не ковырялся в исходниках, я знаю как решается проблема указанная, что собственно и описал
но второе на сколько сильно завязана система на этой фукнциональности еще не известно
всё хочу поковырятся в коде, но время время.
для начала попробуй сделать так
где последний аргумент &$sqlFields со знаком амперсанда заменить на аргумент без него
senior php and js developer
Не в сети
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)
Не в сети
Страницы 1