Вход • Регистрация

Всего найдено: 1412

  • 21 декабря 2015 г. , редакция: 1450701244
  • Цитата
    Ошибка : Uncaught SyntaxError: Unexpected token <

    Перевожу. Ошибка в синтакСисе: в скрипте стоит (а по правилам не должен стоять) символ "<". Вы привели картинку, но то был краткий вариант ошибки. Если кликнуть по ней (ошибке), то будет выведен ее адрес (т.е. в каком именно файле, в том числе покажет номер данного символа по порядку). Там Вы увидите с чего вдруг этот символ там встал (то ли опечатка, то ли ошибка) - останется только исправить (но это уже пустяк).
    Может и так получится, что скрипт Вы отображали через php, и не заметили как допустили некорректное завершение строки - вот и результат - на выходи js получился не корректный. Мне было бы проще один раз посмотреть исходник и ответ бы я дал однозначный, а так приходится угадывать (а вариантов много)
  • 21 декабря 2015 г. , редакция: 1450707360
  • У меня нет возможности сейчас провести эксперимент (чуть позже). Есть ли у Вас возможность дать такую же картинку с ошибкой, но предварительно кликнув по ошибке (цель - необходимо посмотреть ее подробное содержание).
  • 21 декабря 2015 г. , редакция: 1450648945
  • Все проще. Пример, берем файл shop.view.buy_form.php, там находим следующие строчки
    Код

    // у товара несколько цен
    if ($result["row"]["price_arr"])
    {
    foreach ($result["row"]["price_arr"] as $price)
    {
    $param_code = '';
    foreach ($price["param"] as $p)
    {
    if($p["value"])
    {
    $param_code .= ' param'.$p["id"].'="'.$p["value"].'"';
    }
    }

    Последние строки пишем вот так
    Код

    if($p["value"])
    {
    $param_code .= ' param'.$p["id"].'="'.$p["value"].'"';

    //ВОТ ЭТИ СТРОЧКИ ДОБАВЛЕНЫ
    $site_id = 15; //это номер страницы магазина, т.к. их может быть несколько (по умолчанию он равен 15), где узнать номер Вы и без меня знаете
    echo 'ссылка на страницу параметра: '. BASE_PATH.$this->diafan->_route->link($site_id, $p["value"], "shop", "param");

    }

  • 16 декабря 2015 г.
  • Цитата
    посоветуйте, что будет проще и быстрее всего

    Все зависит от Ваших навыков и задачь, которые перед Вами стоят:
    - если Yandex.Delivery API, то надо начать от сюда http://docs.yandexdelivery.apiary.io/#reference/0/getsenderorders
    - если необходим другой сервис, то поисковики по Вашему запросу выдадут с десяток ресурсов (умышлено не привожу список, чтобы не рекламировать)
    - если средствами cms.diafan, то начать от сюда http://www.diafan.ru/dokument/full-manual/modules/shop/#Sposoby-dostavki
    - если в природе нет того, что Вы хотели бы, то можно создать свой модуль, тогда Вам надо начать от сюда http://www.diafan.ru/dokument/full-manual/examples/createmodule/
    Поймите, я пишу это без злого умысла, а лишь с желанием помочь. Просто Вы забыли написать, а что действительно нужно (как это что-то должно работать).
  • 16 декабря 2015 г.
  • Цитата
    Пытался так в files.view.list.php

    Цитата
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Просмотр').'</a>';

    Конечно не мое это дело, но все же елси
    Цитата
    BASE_PATH.$img["link"]

    ссылка не битая, то попробуйте вот так
    Код

    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_("Просмотр").'</a>';
  • 16 декабря 2015 г.
  • Цитата
    в чем разница между кодом

    Кавычки нужно другие ставить, т.е. не эти
    Цитата
    $this->diafan->_('Просмотр')

    а вот эти
    Код
    $this->diafan->_("Просмотр")
  • 16 декабря 2015 г. , редакция: 1450289990
  • Нет, я говорю о правилах использования кавычик в php.
    Т.е. эта строчка
    Код
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_("Просмотр").'</a>';

    должна быть именно такой (относительно использования кавычек).
    О других строчках я не говорю, т.к. Вы их не приводили в своем вопросе.
    Цитата

    //счетчик просмотров
    if(! empty($result["counter"]))
    {
    echo '<div class="files_counter">'.$this->diafan->_('Просмотров').': '.$result["counter"].'</div>';
    }

    В этом примере все верно (исправлять не требуется)
  • 16 декабря 2015 г. , редакция: 1450292919
  • Цитата
    Так вроде это только название кнопки, как оно на функцию повлияет ...

    На функцию это ни как не влияет, а влияет на интерпритатор php.
    Цитата
    ..., тем более, что это рабочая строка из files.view.id.php?

    Вы привели в качестве примера только это
    Цитата
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Просмотр').'</a>';

    Цитата
    //счетчик просмотров
    if(! empty($result["counter"]))
    {
    echo '<div class="files_counter">'.$this->diafan->_('Просмотров').': '.$result["counter"].'</div>';
    }

    Поэтому могу говорить только о данных строчках кода (свое мнение я изложил выше по тексту)
    Цитата
    Не утверждаю! Спрашиваю!

    Еще раз повторюсь php очень чувствителен к используемым кавычкам (в отличии, например, от javascript). Поговорите с программистами, они Вам наверняка приведут кучу примеров, когда пол дня писали на php, а затем трое суток в километровом коде искали ошибку (т.е. где-то не ту кавычку поставили)
  • 16 декабря 2015 г.
  • Цитата
    В этом примере все верно (исправлять не требуется)

    не, ошибся, считаю не верным. Должно быть так
    Код

    //счетчик просмотров
    if(! empty($result["counter"]))
    {
    echo '<div class="files_counter">'.$this->diafan->_("Просмотров").': '.$result["counter"].'</div>';
    }
  • 17 декабря 2015 г. , редакция: 1450302546
  • Цитата
    Даже во взятых примерах на просторах интернета порой приходилось менять двойные кавычки на одинарные, ибо ошибка (на выходе).

    Попытаюсь очень коротко (т.к. китайцы все же выключили google ..., правда только у себя на родине).
    В php строчку можно заключать в одинарные, так и в двойные кавычки. Разница в том, что при использовании двойных кавычек компилятор php будет искать переменные, а в одинарных нет. Пример:
    Код
    $n = 123;
    $s = 'количество';
    $result = "$s = $n";
    echo $result; //выведет: количество = 123

    Также переменные можно вынести (соединить их с строкой оператором конкатенации). На всякий случай, оператор конкатенации - это обычная точка.
    Код
    $n = 123;
    $s = 'количество';
    $result = $s . ' = ' . $n;
    echo $result; //выведет: количество = 123

    Продолжу (ниже код понятен без слов):
    Код
    $s = "количество сотрудников фирмы "А" не меньше 10 человек"; // не правильно
    $s = "количество сотрудников фирмы 'А' не меньше 10 человек"; // правильно
    $s = 'количество сотрудников фирмы "А" не меньше 10 человек'; // правильно

    Последняя форма записи наиболее правильная. Потому, как php не ищет в строке переменные (следовательно код отработается быстрее). Но "фанатеть" от этого - лишнее. Также, говорить что остальные формы записи не верны - это всё равно, что утверждать: "Сегодня я встал с левой ноги, и поэтому пришел на работу раньше, чем когда я вставал с правой" (хотя одна нога короче другой - это факт. Пример: в лесу люди без ориентира ходят кругами, правда, у одних круг больше чем у других - девчонкам этот факт нравится). Однако если вы работаете с большими объёмами данных - прирост скорости будет существенней. В пределах нескольких строк данный момент можно проигнорировать.

    Кавычки можно экранировать. Т.е. можно использовать одинарную кавычку внутри строки, только ее необходмо предварительно экранировать обратной косой чертой (\). Если нужно написать обратную косую черту, тогда надо ее дублировать (\\). Все остальные случаи применения обратной косой черты будут интерпретированы как обычные символы: это означает, что если Вы попытаетесь использовать другие управляющие последовательности, такие как \r или \n, они будут выведены как есть вместо какого-либо особого поведения.
    Пример:
    Код
    $s = 'количество сотрудников фирмы "D\'Art" не меньше 10 человек';
    echo $s; // на выходе: количество сотрудников фирмы "D'Art" не меньше 10 человек

    Двойные кавычки
    Если строка заключена в двойные кавычки, php распознает и управляющие последовательности (специальные символов): \n, \r и т.п.

    Далее. В операторе include можно использовать двойные кавычки. А например в операторе count их использовать вообще не надо.

    Для размышления. Индекс ассоциативного массива должен быть в кавычках, пример:
    Код
    $arr['abc'] = 'xxx';

    а не
    Код
    $arr[abc] = 'xxx';

    Хотя второй вариант работает, но до определенной поры:
    Первая пора - если в коде инициировать константу с аналогичным именем, то результат не станет ожидаемым. Т.е. причина в том, что этот код содержит неопределенную константу (abc), а не строку ('abc' - обратите внимание на кавычки), и php может определить константу, которая будет иметь то же самое имя. А иногда работает, потому что php автоматически преобразует голую строку (не заключенную в кавычки строку, которая не соответствует ни одному из известных символов) в строку, которая содержит голую строку. Например, если константа с именем abc не определена, то php заменит abc на строку 'abc' и использует ее. Однако, это не означает, что нужно всегда заключать ключ в кавычки. Нет необходимости заключать в кавычки константы или переменные, поскольку это помешает php обрабатывать их.
    Втора пора - наступает, когда Вы переведете error_reporting() в режим отображения ошибок уровня E_NOTICE (такой как E_ALL), вы увидите эти ошибки. По умолчанию error_reporting установлена их не отображать.
    Пример перевода:
    Код

    <?php
    // Давайте покажем все ошибки
    error_reporting(E_ALL);

    ...

    ?>


    В общем много особенностей.
  • 17 декабря 2015 г.
  • Цитата
    Не спорю, но у diafan везде так

    Цитата
    '.$this->diafan->_('Просмотр').'</a>'

    Учитывая изложенное выше, можно и так. Т.е. у Вас ошибка из-за того, что Вы кэш НЕ СБРОСИЛИ.
  • 28 декабря 2015 г. , редакция: 1451335805
  • В дополнение приведу практический случай (исключительно в качестве примера выше сказанного по вопросу правильного использования кавычек):
    в оригинальном файле cms.diafan.5.4.13.0 \modules\images\admin\images.admin.view.php присутствует следующая строка
    Код

    .($k == 1 ? ' alt="'.$this->diafan->_('Главное изображение').'" title="'.$this->diafan->_('Главное изображение').'"' : '').' class="image">'

    так ват в этой строке присутствует ошибка в использовании кавычек - результат ошибки Вы можете увидеть на рис.1
    А вот правильное изложение данной строки
    Код

    .($k == 1 ? ' alt="'.$this->diafan->_("Главное изображение").'" title="'.$this->diafan->_("Главное изображение").'"' : '').' class="image">'

    результат исправления ошибки Вы можете увидеть на рис.2

    PS: отдельно отмечу для тех, у кого особая чувствительность к техническим опечаткам - данная ошибка в принципе никакого негативного воздействия на cms не оказывает.
  • 08 декабря 2015 г. , редакция: 1449569002
  • Очень похоже на PHP-Backdoor.
    Cпособ интересный - обычная обфускация - и описан еще в 2008. Им пользуются давно и это, наверное, самый распространённый тип бэкдора на сегодняшний день.
    Т.е. обратившись к вашему сайту можно передать на исполнение сторонний скрипт. Например, удалить все файлы, вывести на экран config.php и т.п.
    Ваша картинка отображает только часть кода. Необходим весь скрипт.
    Теперь Вам надо либо чистить все в ручную или перезалить не испорченные файлы и базу. Затем выяснить как данный скрипт к Вам попал и закрыть брешь (cms.diafan не позволит так просто внедрить данный скрипт, поэтому возможно это косяк либо админов хоста, либо Ваша невнимательность при использовании сторонних скриптов).
  • 08 декабря 2015 г. , редакция: 1449570406
  • Интересная модификация.
    Проверьте .htaccess , index.php , index.html , а так же смотрите добавляемые левые папки со всяким бредом...
    А также
    Цитата
    Вам надо либо чистить все в ручную или перезалить не испорченные файлы и базу. Затем выяснить как данный скрипт к Вам попал и закрыть брешь (cms.diafan не позволит так просто внедрить данный скрипт, поэтому возможно это косяк либо админов хоста, либо Ваша невнимательность при использовании сторонних скриптов).

    Желательно для Вас это сделать оперативно. Пока более не могу добавить, т.к. загружен своими вопросами, если будет необходимо отвечу немного позже. Возможно другие участники форума, что-то подскажут.
    Не совсем согласен с Александр Биг Эпл (ba5), т.к. данный код позволяет корректировать и кастомизированные файлы (впрочем как и все остальное), но как вариант не плохой.
  • 08 декабря 2015 г.
  • Все же интересная тема, лично я бы не спешил. Вычистил бы все вручную, модифицировал данный скрипт с отдачей в ответ сюрприза, поставил бы отдельное логирование на такое обращение к сайту, затем постарался бы определить от куда идут обращения. В общем все зависит от фантазии.
  • 08 декабря 2015 г. , редакция: 1449575876
  • Цитата
    Если какие-то системные файлы были изменены, метод их покажет

    Александр Биг Эпл (ba5), например метод не сможет показать, что изменился .htaccess, index.php, init.php и т.д., или созданы дополнительные папки и файлы, к которым возможно обратиться напрямую (минуя обработчик cms)
  • 07 декабря 2015 г. , редакция: 1449488460
  • Вы размещаете дистрибутив cms на хост. Проверте есть ли права на чтение, запись, исполнение учетной записи от которой действует скрипт дистрибутива. Проверте создание таблиц в базе данных.
  • 07 декабря 2015 г. , редакция: 1449488843
  • Необходимо проверить правильно ли вы прописываете при установке дистрибутива учетное имя и пароль, а также путь к базе данных, в которую соответственно инсталлятор пихает таблицы. То есть проверте существование учетной записи базы данных и ее права на базу данных.
  • 14 февраля 2016 г. , редакция: 1455433647
  • ЕЛЕНА (MAGAZIN), уверен в том, что Вам подойдет 100% только одно решение - Вам необходимо нанять специалиста. Это можно, например, сделать здесь http://pro.user.diafan.ru. Другая помощь или другие советы Вам не подойдут.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум