Fatal error: Cannot redeclare ...

Тема в разделе "PHP", создана пользователем masterok, 22 ноя 2013.

  1. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Fatal error: Cannot redeclare strtolower_ru() (previously declared in /home/port/domains/public_html/components/victorina/frontend.php:15) in /home/port/domains/public_html/modules/mod_victorina/module.php on line 58
    Кто знает как исправить?
     
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    а причем тут БД?
    файл /home/port/domains/public_html/components/victorina/frontend.php в студию
     
    Последнее редактирование: 22 ноя 2013
  3. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Скачайте по ссылке-> http://rghost.ru/50347513
    --- Добавлено, 22 ноя 2013 ---
    Пробовал заменить ф-цию strtolower_ru(); на станндартную $str = strtolower($str); та самая ошибка.
    А когда заменил на эту
    PHP:
    mb_convert_case(($vic['answer']), MB_CASE_LOWER"UTF-8");
    то ошибки не выдаёт, а все ответы в викторине выдает за неправильные
     
    Последнее редактирование: 22 ноя 2013
  4. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    удалить функцию
    PHP:
        function strtolower_ru($text) {
    $alfavitlover = array('ё','й','ц','у','к','е','н','г''ш','щ','з','х','ъ','ф','ы','в''а','п','р','о','л','д','ж','э''я','ч','с','м','и','т','ь','б','ю');
    $alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г''Ш','Щ','З','Х','Ъ','Ф','Ы','В''А','П','Р','О','Л','Д','Ж','Э''Я','Ч','С','М','И','Т','Ь','Б','Ю');
    return 
    str_replace($alfavitupper,$alfavitlover,strtolower($text));
    }
    и заменить ее всюда
    вместо
    PHP:
    strtolower_ru
    пхпешной ф-цией
    PHP:
    mb_strtolower()
    тоже самое в файле public_html/modules/mod_victorina/module.php
    Че за ЦМСка такая? )
     
  5. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    CMSка InstantCms 1.10.1. Сейчас ещё раз испробовал как ты написал. Да я все функции пхпэшные по смену регистра уже испробовал. Викторина работает на сессиях и начинаю думать, что здесь ошибка в сессиях.
     
  6. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Ребят, так вы не знаете в чем проблема?
     
  7. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.349
    Симпатии:
    1.380
    ошибка заключается в том, что переопределена стандартная! пхпшная функция. На это он и ругается.
     
  8. XvetX

    XvetX

    Регистрация:
    24 ноя 2013
    Сообщения:
    0
    Симпатии:
    0
    вынести в отдельный файл .
    Example:
    /*mylib.php*/
    function strtolower_ru($text) {
    $alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');
    $alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');
    return str_replace($alfavitupper,$alfavitlover,strtolower($text));
    }

    а на старом месте объявления подключить через include_once('mylib.php');
     
  9. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    это я понимаю. Но почему когда правлю под эту ф-цию
    PHP:
    mb_convert_case(($vic['answer']), MB_CASE_LOWER"UTF-8");
    ошибки не выдаёт, а все ответы в викторине выдает за неправильные. В чем проблема тогда?
    --- Добавлено, 26 ноя 2013 ---
    ту самую ошибку выдает...
     
  10. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.349
    Симпатии:
    1.380
    нужно дебажить код.
     
  11. serval04

    serval04

    Регистрация:
    9 сен 2013
    Сообщения:
    16
    Симпатии:
    5
    У меня было подобное. И проблема может лежать далеко не в frontend.php. Могут быть зависимые функции, а вот они эту ошибку и выдают. Верни все как было и повтори в обратном порядке. Если не поможет, то дебагер в руки.
     
  12. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    открою тайну - в настройках сервер что-то не так
     
  13. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    С настройками сервера всё впорядке.
    --- Добавлено, 26 ноя 2013 ---
    Я сейчас пробовал вобще без никаких ф-ций, просто напрямую с БД. По идеи должно было работать если ответы в БД в маленьком регистре и поле ввода писался ответ тоже в маленьком регистре. Ошибку всёравно выдавало, что неправильный ответ. Тут ошибка кроется не в ф-цие смены регистра, а в неправильном обращении к БД из пхпэшнего файла (frontend.php).
    P.S.: на ф-цию
    PHP:
    mb_strtolower()
    не ругается.
     
    Последнее редактирование: 26 ноя 2013
  14. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.349
    Симпатии:
    1.380
    поэтому я и сказал, что нужно дебажить и посмотреть, что где теряется.
     
  15. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    Может тут специалист есть по InstantCMS?
     
  16. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    функции
    mb_

    применяются если кодировка утф8
    говорю же, что-то с настройками сервера, кодировкой и т.д.
     
  17. masterok

    masterok

    Регистрация:
    22 ноя 2013
    Сообщения:
    4
    Симпатии:
    0
    может так можно?
    PHP:
    mb_strtolower('РУССКИЙ ТЕКСТ',"UTF-8");
    function 
    mb_ucfirst($переменная,$кодировка)
    {
    return 
    mb_strtoupper(mb_substr($переменная,0,1,$кодировка),$кодировка).mb_substr($переменная,1,mb_strlen($переменная),$кодировка);
    }
    mb_ucfirst('русский текст',"UTF-8");
    --- Добавлено, 26 ноя 2013 ---
    У меня сервер полностью на utf8. Проблемы как раз то были когда сайт был на windows-1251
     
  18. web2us

    web2us

    Регистрация:
    10 мар 2013
    Сообщения:
    0
    Симпатии:
    0
    function mb_ucfirst($string, $e ='utf-8') {
    if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
    $string = mb_strtolower($string, $e);
    $upper = mb_strtoupper($string, $e);
    preg_match('#(.)#us', $upper, $matches);
    $string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
    } else {
    $string = ucfirst($string);
    }
    return $string;
    }
    mb_strtolower('РУССКИЙ ТЕКСТ',"UTF-8");
    mb_ucfirst('русский текст');
     
    masterok нравится это.