Вы не вошли.
Страницы 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
Вне форума
Вне форума
Вне форума
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 10:47:02)
Вне форума
Страницы 1
[ Сгенерировано за 0.015 сек, 7 запросов выполнено - Использовано памяти: 547.45 Кбайт (Пик: 568.45 Кбайт) ]