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
|
|
This post was edited by Dayver (2022-12-30 13:25, 2 years ago) |
Alex300 |
|
---|---|
Для обновления нужно скопировать обновленные файлы в корень Вашего сайта. Не забудьте перед обновлением сделать бекап БД. Переключитесь на PHP 8.1, потом замените файлы cotonti на обновленные с новой версии, потом обнавляйтесь запустив https://<ваш_домен>/install.php. Если у Вас MySQL версии 5.7 или выше, кодировка БД будет сконвертирована в utf8mb4 автоматически. Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english... Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/ |
|
This post was edited by Alex300 (2022-12-29 09:29, 2 years ago) |
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 -й строке ? или где-то ещё что-то изменилось в движке ? |
|
This post was edited by Kabak (2022-12-29 10:56, 2 years ago) |
Dayver |
|
---|---|
#45776 Kabak: Такое решение исправит варнинг но нарушит работу вашего плагина ... плагин не из коробки потому как он работает известно его автору и тем у кого есть его полный код Добавлено 6 минут спустя: #45776 Kabak: Похоже у вас криво обновлённая база или кеш конфига не сброшен если он включен .... зайдите в настройки плагина Hits и нажмите кнопку обновить Pavlo Tkachenko aka Dayver
|
|
This post was edited by Dayver (2022-12-29 15:13, 2 years ago) |
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) Как правильно использовать ? |
|
This post was edited by Kabak (2022-12-29 19:48, 2 years ago) |
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
|
|
This post was edited by Dayver (2022-12-29 19:40, 2 years ago) |
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('...') При обновлении профиля пользователя в движке |
|
This post was edited by Kabak (2022-12-30 11:14, 2 years ago) |
Dayver |
|
---|---|
#45780 Kabak: Просьба скачать обновлённый plugins/hits/hits.admin.home.php и протестировать изменения исправляющие это Pavlo Tkachenko aka Dayver
|
Kabak |
|
---|---|
This post was edited by Kabak (2022-12-30 14:05, 2 years ago) |
Dayver |
|
---|---|
#45780 Kabak: А вы обновление движка делали по инструкции?! Запускали https://<ваш_домен>/install.php как это советовал Alex300 выше? Добавлено 2 часа спустя: #45780 Kabak: Не смог повторить такую ошибку Pavlo Tkachenko aka Dayver
|
|
This post was edited by Dayver (2022-12-30 17:03, 2 years ago) |
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 ? |
|
This post was edited by Kabak (2022-12-31 15:22, 2 years ago) |
Dayver |
|
---|---|
#45784 Kabak: Про это знаю, поправлю на днях Pavlo Tkachenko aka Dayver
|
Kabak |
|
---|---|
Я просто вижу, что очень многое изменилось с 2013 года , когдая последний раз писал плагины под Cotonti. |