Ответы пользователя по тегу PHP
  • PHP. Как грамотно создать дополнительный класс (ООП) для "конкретных" select'ов для работы с БД?

    Adamos
    @Adamos
    Вариант 4. Торжественно похоронить свой велосипед и использовать SafeMySQL, который легко превращается в синглтон и не требует никакого наследования для использования каким угодно образом.
    Ответ написан
  • Как организовать правильные запросы?

    Adamos
    @Adamos
    Даже без JOIN (мало ли, какие-то данные могут быть многострочными) совершенно необязательно городить циклы.
    Вы запросили статьи. Получили данные. Зачем сразу выводить? Соберите их пока в массив, попутно создавая массив id статей, авторов, чего там еще понадобится.
    Следующим номером сделайте один (!) запрос - SELECT author_name FROM authors WHERE author_id IN (у нас уже есть этот массив). Аналогичный запрос или два к таблице с комментариями - и все, больше вам базу дергать не требуется, и все данные для вывода получены.

    Глядишь, понемногу придет осознание, какую пользу приносит разделение логики и вывода...
    Ответ написан
    Комментировать
  • Как написать алгоритм перебора всех возможных комбинаций символов?

    Adamos
    @Adamos
    Элементарная комбинаторика хорошо разобрана на algolist.ru - там, правда, все больше Паскаль, но это неважно, ибо вся логика разбирается до кода.
    Ответ написан
    Комментировать
  • Как сделать чтобы при обращении через ajax был доступ к файлу?

    Adamos
    @Adamos
    Или по ссылке сможет зайти кто угодно, или никто.
    Если обработчик доступен по ajax, в нем должна быть проверка авторизации. Других вариантов нет.
    Ответ написан
  • Как сделать SEO оптимизацию динамического сайта современными методами?

    Adamos
    @Adamos
    Дело в том, что поисковики индексируют не запросы, а страницы. Если у вас ajax-запрос получает данные для товара в формате json, а потом строит из них представление прямо на той же странице, не меняя ее адреса - как вы себе представляете эту страницу в выдаче поисковика?
    Как бы поисковик ни понимал скрипты, логика "по этому адресу я видел этот текст", которой руководствуются поисковики, в таких случаях не работает.

    Нужно, чтобы у каждого товара была своя четкая ссылка. Возможно, наполовину состоящая из GET-параметров, но уникальная. Для уверенного индексирования можно подсунуть роботу такие ссылки внутри тега noscript.
    Ну, и sitemap построить и скормить Яндексу с Гуглем - они это любят.
    Ответ написан
  • Направьте куда копать чтобы сделать калькулятор?

    Adamos
    @Adamos
    XLS -> CSV -> MySQL (преобразования примитивны и разжеваны в интернетах).
    1 форма + пара запросов AJAX-ом (автодополнение города при наборе и запрос по двум введенным) + вывод результата = весь интерфейс.
    Angular тут нужен, как блохе седло.
    Ответ написан
  • Как правильно реализовать авторизацию под эти задачи?

    Adamos
    @Adamos
    Оригинальный подход: сейчас все на сессиях в фс - это нормально, а вот лишний запрос к базе - это почему-то глупо. Давайте все хранить в куках и громоздить постоянные перепроверки того, что пользователь мог туда напихать. А если он, не дай бог, сидит не с одного компьютера, то на другом у него аватарка так и останется старой, пока он не перелогинится. Это же так приятно - разгребать такие мелочи, если они вдруг приведут к проблемам!
    Ответ написан
    1 комментарий
  • Вопрос по подключении Я.Кассы для сайта?

    Adamos
    @Adamos
    К путям checkURL и paymentAvisoURL обращается сервер Кассы, а не браузер пользователя. Какая, к черту, авторизация?
    И этому серверу действительно нужно обратиться из интернета к скрипту на вашем сервере. Как он это сделает, если сервер доступен только локально?
    Вы, похоже, читали документацию не с начала и просто не поняли саму схему работы платежной системы.
    Ответ написан
    Комментировать
  • Как правильно организовать пагинацию страниц с фильтром отображения?

    Adamos
    @Adamos
    Фильтры, отображение и пагинация - это просто набор значений, по которым вы с помощью ajax формируете выдачу.
    Какая разница, сформировался этот набор значений при хождении пользователя по фильтрам и страницам или сразу известен из url? Вы в любом случае подтягиваете ajax-ом соответствующий набор товаров.
    Фактически, параметры, переданные в url, просто заменяют параметры фильтров, отображения и пагинации по умолчанию. Выбор "ajax или url" вообще не стоит.
    Ответ написан
    Комментировать
  • Как использовать $this в анонимных функциях?

    Adamos
    @Adamos
    Анонимная функция - это просто функция, а не метод класса. Какой $this, откуда?
    class A
    {
        public $me;
        
        public function getMe()
        {
            $x = $this->me;
            return $x($this);
        }
    }
    
    $a = new A;
    
    $a->me = function($object) { return $object; };
    
    var_dump($a->getMe());
    Ответ написан
  • СМС биллинг. Что посоветуете?

    Adamos
    @Adamos
    В первую очередь стоит убедиться, что именно SMS-биллинг нужен позарез.
    С платными СМС-ками в РФ и раньше было хреново, а сейчас они, как мне кажется, просто потихоньку готовятся вымереть, как динозавры.

    С мобильной коммерцией (переводы со счета телефона) и жить легче (меньше ошибок на всех этапах), и комиссия гуманнее. Аудитория того и другого сильно совпадает - отваливаются только пользователи операторов, не входящих в большую четверку, и те, кто сидит на кредитных / корпоративных тарифах. Кроме того, аудитория МК постепенно пополняет ряды пользователей электронных кошельков, что тоже не может не радовать, учитывая комиссию. А СМС-ки временами доставляют больше хлопот, чем профита.
    Ответ написан
    Комментировать
  • Почему Nginx+PHP-FPM не работают после aptitude upgrade?

    Adamos
    @Adamos
    - include fastcgi_params
    + include fastcgi.conf
    Ответ написан
    Комментировать
  • Как в добавить еще поля в форму обратной связи в битрикс?

    Adamos
    @Adamos
    Выделяем в вашем вопросе "битриксе в компоненте main.feedback", щелкаем правой кнопкой и выбираем "Искать в гугле". Если в браузере нет такого пункта - сделать то же самое вручную.
    Первая же ссылка гугля - "Делаем дополнительные поля в компоненте bitrix:main.feedback". Внезапно.
    Ответ написан
    Комментировать
  • Какую IDE/редактор выбрать для массовых изменений (HTML/PHP)?

    Adamos
    @Adamos
    Имхо, бред. Редактор многих файлов сразу, регулярки... Зачем?!
    Берем сайт, делаем ему полную правку, проверяем ее правильность.
    Делаем diff с оригиналом и накатываем этот патч на все копии.
    Ответ написан
    Комментировать
  • Как вы пишите веб приложения?

    Adamos
    @Adamos
    FTP - это очевидное древнее зло, его можно использовать только в том случае, если вообще нет альтернатив или они еще страшнее (заливка через веб-морду, например).
    Редактирование и сразу сохранение на боевой сервер - одна эта идея должна вызывать у разработчика приток адреналина от представления, чем это чревато.
    Сохранение в теории может привести к тому, что на сервере окажется пустой или оборванный с середины файл. При использовании FTP и не слишком стабильного канала эта теория легко становится практикой.
    Свежеисправленный файл с довольно большой вероятностью содержит ошибки. Даже не говоря о профессиональном тестировании - самому-то хотя бы убедиться, что результат работает примерно так, как ожидалось, надо убедиться, прежде чем выпускать это дело в свет. А еще лучше - постепенно делая одно изменение за другим, проверять, что реализация задуманного соответствует задумке. Обязательно нужен тестовый сервер.
    Тем более, что, если код и файлы организованы грамотно, изменения на одной странице вполне могут означать одновременное изменение четырех файлов (стили, скрипты, класс с логикой, шаблон с представлением). Что будет, если пользователь зайдет на сайт, когда половина из этих файлов не будет обновлена? Хотите поотлавливать ошибки, в которые это выльется? Предположите, например, что эта страничка - корзина интернет-магазина и вы меняли что-то, касающееся товаров...
    Ответ написан
    8 комментариев
  • Объясните мне кто-нибудь, как вообще работать с фреймворками?

    Adamos
    @Adamos
    По-моему, правильное начало работы с фреймворками выглядит примерно так:
    - начинаешь работать с CMS, плюешься от того, как все через задницу
    - везде, где возможно, пишешь простые решения сам, игнорируя функционал CMS, потому что там кромешный оверхед
    - переходя к более комплексным задачам, начинаешь городить свои велосипеды для того, что требуется постоянно, начиная понимать, что типовые задачи примерно ложатся в одни и те же ходы и решения, а решение этих задач с прицелом на расширяемость, универсальность и безопасность требует достаточно сложных, но одних и тех же схем
    - начинаешь читать документацию по фреймворкам, где эти самые схемы воплощены без тех ошибок, которых ты нагородишь, пытаясь создать что-то свое
    - пользуешься тем фреймворком, который показался наиболее логичным и подходящим под задачи.
    Ответ написан
    Комментировать
  • Как реализовать автоматическую подстройку значений в форме на bitrix?

    Adamos
    @Adamos
    Сама идея бредовая. Какие могут быть ползунки для данных, не известных заранее?
    Высота потолка - от 0 до 100. Почему не чекбокс "да/нет"?
    Ответ написан
  • Как "красиво" проинициализировать свойство объекта?

    Adamos
    @Adamos
    Просто реализуйте $options и $price отдельными классами.
    В Product добавьте члены соответствующих классов и в Product используйте только их обобщенную логику. Все, что может различаться - внутрь самих классов.
    Ответ написан
  • Возможно ли оплачивать услуги Робокассы по ссылке из письма и как к этому относятся спам фильтры получателя таких писем?

    Adamos
    @Adamos
    Платежи через письма - в любом случае моветон.
    Почему в письме не отправить ссылку на свой сайт, чтобы точно перенаправить на Робокассу?
    Если вашим клиентам кто-нибудь пришлет такие письма от вашего имени, но со своим интересом, вы как разгребать будете?
    Полагаю, Робокасса против такой практики.
    Ответ написан
  • Где достать обфускатор для сайта, чтобы можно было из php шифровать html содержимое?

    Adamos
    @Adamos
    Могу предложить забавный, но трудоемкий вариант: SVG.
    Современные браузеры его понимают, графических преобразований там можно навертеть таких, что проще будет распознать скриншот, чем восстановить таблицу.
    Правда, придется самостоятельно попотеть с шириной ячеек и переносами, если текст длинный...
    Ответ написан