| Kabak |
|
|---|---|
|
Переношу сайт с PHP 5.4 на PHP 8.1 и Cotonti 0.9.21
/* ======== Anti-hammering =========*/
if ($cfg['shieldenabled'] &&
($usr['id'] == 0 || !cot_auth('admin', 'a', 'A') || $cfg['shield_force']))
{
$shield_limit = $_SESSION['online_shield'];
$shield_action = $_SESSION['online_action'];
$shield_hammer = cot_shield_hammer($_SESSION['online_hammer'], $shield_action, $_SESSION['online_lastseen']);
$sys['online_hammer'] = $shield_hammer;
$_SESSION['online_lastseen'] = (int)$sys['now'];
}
как это лечится ? |
| jCube Group |
|
|---|---|
isset($_SESSION['online_shield']) && $_SESSION['online_shield']
Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|
| Dayver |
|
|---|---|
#45772 Kabak: Просьба скачать обновлённый common.php и протестировать изменения исправляющие это Pavlo Tkachenko aka Dayver
Bu gönderi Dayver tarafından düzenlendi (2022-12-30 13:25, 2 yıllar önce)
|
|
Alex300
|
|
|---|---|
|
Для обновления нужно скопировать обновленные файлы в корень Вашего сайта. Не забудьте перед обновлением сделать бекап БД. Переключитесь на PHP 8.1, потом замените файлы cotonti на обновленные с новой версии, потом обнавляйтесь запустив https://<ваш_домен>/install.php. Если у Вас MySQL версии 5.7 или выше, кодировка БД будет сконвертирована в utf8mb4 автоматически. Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Bu gönderi Alex300 tarafından düzenlendi (2022-12-29 09:29, 2 yıllar önce)
|
| Kabak |
|
|---|---|
|
благодарю Добавлено 4 секунды спустя:
/**
* Assigns a template variable or an array of them
*
* @param mixed $name Variable name or array of values
* @param mixed $val Tag value if $name is not an array
* @param string $prefix An optional prefix for variable keys
* @return XTemplate $this object for call chaining
*/
public function assign($name, $val = NULL, $prefix = '')
{
if (is_array($name))
{
foreach ($name as $key => $val)
{
$this->vars[$prefix.$key] = $val;
}
}
else
{
$this->vars[$prefix.$name] = $val;
}
return $this;
}
$this->vars[$prefix.$key] = $val; тут корректно удет если $val = null ? Добавлено 7 минут спустя: Как сделать так, чтобы этот NULL был пустой строкой = "" ?
/**
* Generates a feedback form
* @param array $rdata Form data
* @param mixed $tpl Template code or existing object
* @param string $name Form name (identifier)
* @param boolean $ajax Whether the form is ajax or standalone
* @return mixed Rendered HTML or just TRUE, depending on $tpl type
*/
function feedback_form($rdata = array(), $tpl = 'feedback.global', $name = 'feedback-global', $ajax = true)
{
global $cot_extrafields, $db_feedback, $cfg, $sys, $usr, $L;
static $js_included = false;
if (!is_array($rdata))
{
$rdata = array();
}
if (is_object($tpl))
{
$tt = $tpl;
}
else
{
$tt = new XTemplate(cot_tplfile($tpl, 'plug'));
}
$tt->assign(array(
'FEEDBACK_FORM_SEND' => cot_url('plug', 'e=feedback'),
'FEEDBACK_FORM_USER_ID' => cot_inputbox('hidden', 'ruserid', $usr['id']),
'FEEDBACK_FORM_TOKEN' => cot_inputbox('hidden', 'x', $sys['xk']),
'FEEDBACK_FORM_AUTHOR' => ($usr['id'] == 0) ? cot_inputbox('text', 'ruser', $rdata['feedback_user']) : cot_inputbox('text', 'ruser', $usr['name'], 'readonly="readonly"'),
'FEEDBACK_FORM_AUTHOR_RAW' => ($usr['id'] == 0) ? $rdata['feedback_user'] : $usr['name'],
'FEEDBACK_FORM_EMAIL' => ($usr['id'] == 0) ? cot_inputbox('text', 'remail', $rdata['feedback_email']) : cot_inputbox('text', 'remail', $usr['profile']['user_email'], 'readonly="readonly"'),
'FEEDBACK_FORM_EMAIL_RAW' => ($usr['id'] == 0) ? $rdata['feedback_email'] : $usr['profile']['user_email'],
'FEEDBACK_FORM_TEXT' => cot_textarea('rtext', $rdata['feedback_text'], 3, 36),
'FEEDBACK_FORM_TEXT_RAW' => $rdata['feedback_text'],
'FEEDBACK_FORM_NAME' => cot_inputbox('hidden', 'name', $name),
'FEEDBACK_FORM_ID' => $name
));
Добавлено 51 минута спустя: просто сделать так
$rdata['feedback_text'] = ""; $rdata['feedback_user'] = ""; $rdata['feedback_email']= ""; до вызова
$tt->assign(array(
'FEEDBACK_FORM_SEND' => cot_url('plug', 'e=feedback'),
'FEEDBACK_FORM_USER_ID' => cot_inputbox('hidden', 'ruserid', $usr['id']),
'FEEDBACK_FORM_TOKEN' => cot_inputbox('hidden', 'x', $sys['xk']),
'FEEDBACK_FORM_AUTHOR' => ($usr['id'] == 0) ? cot_inputbox('text', 'ruser', $rdata['feedback_user']) : cot_inputbox('text', 'ruser', $usr['name'], 'readonly="readonly"'),
'FEEDBACK_FORM_AUTHOR_RAW' => ($usr['id'] == 0) ? $rdata['feedback_user'] : $usr['name'],
'FEEDBACK_FORM_EMAIL' => ($usr['id'] == 0) ? cot_inputbox('text', 'remail', $rdata['feedback_email']) : cot_inputbox('text', 'remail', $usr['profile']['user_email'], 'readonly="readonly"'),
'FEEDBACK_FORM_EMAIL_RAW' => ($usr['id'] == 0) ? $rdata['feedback_email'] : $usr['profile']['user_email'],
'FEEDBACK_FORM_TEXT' => cot_textarea('rtext', $rdata['feedback_text'], 3, 36),
'FEEDBACK_FORM_TEXT_RAW' => $rdata['feedback_text'],
'FEEDBACK_FORM_NAME' => cot_inputbox('hidden', 'name', $name),
'FEEDBACK_FORM_ID' => $name
));
Так ? Добавлено 7 минут спустя: Warning: Undefined array key "timeback" in /var/www/apcfix/plugins/hits/hits.admin.home.php on line 23 Что нужно изменить в 23 -й строке ? или где-то ещё что-то изменилось в движке ?
Bu gönderi Kabak tarafından düzenlendi (2022-12-29 10:56, 2 yıllar önce)
|
| Dayver |
|
|---|---|
#45776 Kabak: Такое решение исправит варнинг но нарушит работу вашего плагина ... плагин не из коробки потому как он работает известно его автору и тем у кого есть его полный код Добавлено 6 минут спустя: #45776 Kabak: Похоже у вас криво обновлённая база или кеш конфига не сброшен если он включен .... зайдите в настройки плагина Hits и нажмите кнопку обновить Pavlo Tkachenko aka Dayver
Bu gönderi Dayver tarafından düzenlendi (2022-12-29 15:13, 2 yıllar önce)
|
| Kabak |
|
|---|---|
|
Обновить не помогло
Добавлено 5 минут спустя:
Но после вызова $tt->assign(array( значения заменятся, если они есть. Почему нарушится работа плагина ? Вот как он начинается
require_once cot_incfile('extrafields');
require_once cot_incfile('forms');
require_once cot_langfile('feedback', 'plug');
if (!isset($GLOBALS['db_feedback'])) $GLOBALS['db_feedback'] = $GLOBALS['db_x'] . 'feedback';
global $db_feedback;
$cot_extrafields[$db_feedback] = (isset($cot_extrafields[$db_feedback] )) ? $cot_extrafields[$db_feedback] : array();
/**
* Generates a feedback form
* @param array $rdata Form data
* @param mixed $tpl Template code or existing object
* @param string $name Form name (identifier)
* @param boolean $ajax Whether the form is ajax or standalone
* @return mixed Rendered HTML or just TRUE, depending on $tpl type
*/
function feedback_form($rdata = array(), $tpl = 'feedback.global', $name = 'feedback-global', $ajax = true)
{
global $cot_extrafields, $db_feedback, $cfg, $sys, $usr, $L;
static $js_included = false;
if (!is_array($rdata))
{
$rdata = array();
}
if (is_object($tpl))
{
$tt = $tpl;
}
else
{
$tt = new XTemplate(cot_tplfile($tpl, 'plug'));
}
$rdata['feedback_text'] = "";
$rdata['feedback_user'] = "";
$rdata['feedback_email']= "";
$tt->assign(array(
'FEEDBACK_FORM_SEND' => cot_url('plug', 'e=feedback'),
'FEEDBACK_FORM_USER_ID' => cot_inputbox('hidden', 'ruserid', $usr['id']),
'FEEDBACK_FORM_TOKEN' => cot_inputbox('hidden', 'x', $sys['xk']),
'FEEDBACK_FORM_AUTHOR' => ($usr['id'] == 0) ? cot_inputbox('text', 'ruser', $rdata['feedback_user']) : cot_inputbox('text', 'ruser', $usr['name'], 'readonly="readonly"'),
'FEEDBACK_FORM_AUTHOR_RAW' => ($usr['id'] == 0) ? $rdata['feedback_user'] : $usr['name'],
'FEEDBACK_FORM_EMAIL' => ($usr['id'] == 0) ? cot_inputbox('text', 'remail', $rdata['feedback_email']) : cot_inputbox('text', 'remail', $usr['profile']['user_email'], 'readonly="readonly"'),
'FEEDBACK_FORM_EMAIL_RAW' => ($usr['id'] == 0) ? $rdata['feedback_email'] : $usr['profile']['user_email'],
'FEEDBACK_FORM_TEXT' => cot_textarea('rtext', $rdata['feedback_text'], 3, 36),
'FEEDBACK_FORM_TEXT_RAW' => $rdata['feedback_text'],
'FEEDBACK_FORM_NAME' => cot_inputbox('hidden', 'name', $name),
'FEEDBACK_FORM_ID' => $name
));
Добавлено 7 минут спустя: isset($rdata['feedback_text']) ? $rdata['feedback_text'] : $rdata['feedback_text'] = ""; isset($rdata['feedback_user']) ? $rdata['feedback_user'] : $rdata['feedback_user'] =""; isset($rdata['feedback_email']) ? $rdata['feedback_email'] : $rdata['feedback_email'] =""; Так лучше ? Добавлено 49 минут спустя: $sys['protecttopadmin'] 1) Для чего и используется в движке ? 2) Как правильно использовать ?
Bu gönderi Kabak tarafından düzenlendi (2022-12-29 19:48, 2 yıllar önce)
|
| Dayver |
|
|---|---|
#45778 Kabak: Вы видимо не понимаете как работают функции в PHP ... при её вызове в неё передаются параметры, дале внутри функции что то происходит и она возвращает результат своей работы. Вы же хотите задать переменным пустые строки вне зависимости от того переданы они при вызове функции или нет. По сути причину варнинга вы устраняете но и тем самым функция ВСЕГДА будет оперировать пустыми строками при работае с вышеупомянутыми параметрами. Добавлено 7 минут спустя: #45778 Kabak: Значит у вас проблема либо с плагином либо с параметром-массивом конфигурацй. При корректно установленном плагине hits в его конфигурации есть настройка значение которой должно быть в параметре $cfg['plugin']['hits']['timeback'] но если у вас вылазят варнинги по поводу того что в данном масиве нет значения с таким ключем то значит где то есть проблема Добавлено 3 минуты спустя: #45778 Kabak: Используется для блокировки попыток изменения логина и пароля админу. Переменная служебная и фигурирует только в одной локации сайта - на странице редактрирования пользователя потому боюсь она вам будет мало чем полезна в своих плагинах. Добавлено 9 минут спустя: #45778 Kabak: Добавьте для своего языка ключ "00" в массив $cot_countries. Например в файле themes/nemesis/nemesis.ru.lang.php добавте строку $cot_countries["00"] = 'Пусто'; Добавлено 2 минуты спустя: #45778 Kabak: Было бы синтаксически правильнее написать так $rdata['feedback_text'] = isset($rdata['feedback_text']) ? $rdata['feedback_text'] : ""; $rdata['feedback_user'] = isset($rdata['feedback_user']) ? $rdata['feedback_user'] : ""; $rdata['feedback_email'] = isset($rdata['feedback_email']) ? $rdata['feedback_email'] : "";
Pavlo Tkachenko aka Dayver
Bu gönderi Dayver tarafından düzenlendi (2022-12-29 19:40, 2 yıllar önce)
|
| Kabak |
|
|---|---|
|
Удалил и переустановил плагин HITS старая ошибка ушла, но появилась Warning: Undefined variable $hits_d in /var/www/apcfix/plugins/hits/hits.admin.home.php on line 40
Вероятно, база была пустой после преустановки и отключил счётчик заходов админа
Добавлено 1 час спустя: Как правильно обрабатывать дату рождения пользователя у которого не указана дата ? NULL и '0000-00-00' не проходят Добавлено 2 часа спустя: SQL error 23000: Integrity constraint violation: 1048 Column 'user_birthdate' cannot be null
#0 /var/www/apcfix/system/database.php(696): cot_diefatal('...')
#1 /var/www/apcfix/modules/users/inc/users.edit.php(203): CotDB->update('...', Array, '...')
#2 /var/www/apcfix/modules/users/users.php(32): include('...')
#3 /var/www/apcfix/index.php(181): require_once('...')
При обновлении профиля пользователя в движке
Bu gönderi Kabak tarafından düzenlendi (2022-12-30 11:14, 2 yıllar önce)
|
| Dayver |
|
|---|---|
#45780 Kabak: Просьба скачать обновлённый plugins/hits/hits.admin.home.php и протестировать изменения исправляющие это Pavlo Tkachenko aka Dayver
|
| Kabak |
|
|---|---|
|
Bu gönderi Kabak tarafından düzenlendi (2022-12-30 14:05, 2 yıllar önce)
|
| Dayver |
|
|---|---|
#45780 Kabak: А вы обновление движка делали по инструкции?! Запускали https://<ваш_домен>/install.php как это советовал Alex300 выше? Добавлено 2 часа спустя: #45780 Kabak: Не смог повторить такую ошибку Pavlo Tkachenko aka Dayver
Bu gönderi Dayver tarafından düzenlendi (2022-12-30 17:03, 2 yıllar önce)
|
| Kabak |
|
|---|---|
|
Я установил движок потом переписал недостающие плагины и полностью обновил базу , т.е. удалил базу и импортировал старую . иначе она не импортировалась. Я понимаю, что где-то что-то не так в базе. У меня нет выбора. База не импортируется, если её не удалить. Не подумал, что в структуре базы стандартного Cotonti что-то изменилось ( Как импортировать базу от старой Cotonti , чтобы она не вызывала ошибок при импорте ? Добавлено 8 часов спустя: Warning: Undefined variable $grpid in /var/www/dacha/plugins/hiddengroups/hiddengroups.users.buildgroup.php on line 18 это уже на свежем движке
Свежая документация есть по движку ? (Хотел бы помочь всё это исправить) Добавлено 12 минут спустя: Где почитать что изменилось в движке с версии patch_0.9.4 ?
Bu gönderi Kabak tarafından düzenlendi (2022-12-31 15:22, 2 yıllar önce)
|
| Dayver |
|
|---|---|
#45784 Kabak: Про это знаю, поправлю на днях Pavlo Tkachenko aka Dayver
|
| Kabak |
|
|---|---|
|
Я просто вижу, что очень многое изменилось с 2013 года , когдая последний раз писал плагины под Cotonti. |