Ответы пользователя по тегу PHP
  • Как передать значение из масива?

    @MadridianFox
    Web-программист, многостаночник
    <input type="hidden" name="LMI_PAYEE_PURSE" value="<?=$webMoney['wmr'] ?>">
    Ответ написан
    Комментировать
  • Ошибка при добавление в базу данных?

    @MadridianFox
    Web-программист, многостаночник
    Number of args (0) doesn't match number of placeholders (1)

    В ошибке говорится о том, что количество подставляемых значений ноль, а в запросе один плейсхолдер. Зачем нужен ?u в конце запроса?
    Либо это там не нужно, либо вы забыли передать параметр, который подставится на место знака вопроса (или на место ?u, зависит от БД и драйвера работы с ней).

    Кстати, почему вы вставляете данные из post в запрос без предварительной обработки? Именно для этого, отчасти, и предназначаются плейсхолдеры - они непозволят злоумышленнику передать в качестве одного из значений кусок sql,
    Ответ написан
  • Почему возникает такая ошибка при использовании foreach с объектом?

    @MadridianFox
    Web-программист, многостаночник
    Вы в цикле перезаписываете 2 элемента одного массива, а надо добавлять массив с двумя элементами:
    foreach ($serId as $catS) {
        if($catS->id_serial) {
            $idSer[]=[
                'id'=>$catS->id_serial,
                'nesting'=>'serial'
            ];
        }
    }
    Ответ написан
    Комментировать
  • Как создать sitemap.xml на PHP?

    @MadridianFox
    Web-программист, многостаночник
    Каким образом вы передаёте параметр $Page скрипту?
    Обычно, когда создают php приложение с единой точкой входа, используют mod_rewrite, ну и отрезают всё что идёт после домена, и присваивают отрезанное некоторому get параметру.
    Можно обойтись и без mod_rewrite, но тогда ссылки будут иметь вид index.php?page=index
    В первом случае необходимо в .htaccess добавить условие, что переданный путь не является файлом или папкой.
    Во втором случае, ничего не мешает поисковому боту, или кому угодно забрать этот xml файл из корня сайта, и делать дополнительных телодвижений по его отдаче не нужно.

    Если уж вам очень уж хочется сделать так как делаете, то необходимо не подключать xml файл, а читать его содержимое и выводить на страницу. Что-то вроде:
    case "sitemap.xml":  
        echo get_file_contents('sitemap.xml'); 
    break;
    Ответ написан
    Комментировать
  • Как сделать отдельные ссылки?

    @MadridianFox
    Web-программист, многостаночник
    Если вопрос лишь в том как обойтись без цикла и вставить значения в html теги, то вот:
    <a href="#wmr" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmr']?></a>
    <a href="#wmu" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmu']?></a>
    <a href="#wmz" tabindex="-1" data-toggle="tab">Пополнить через <?=$webMoney['wmz']?></a>

    Однако точно такого же результата можно добиться таки используя цикл:
    <?foreach( $webMoney as $key => $value ) : ?>
        <a href="#<?=$key?>" tabindex="-1" data-toggle="tab">Пополнить через <?=$value?></a>
    <?endforeach?>

    ведь такой цикл выводит текст и на странице получаются точно такие же, как вы говорите "полноценные" ссылки
    Ответ написан
    Комментировать
  • Как убрать вывод комментариев html тз php странички?

    @MadridianFox
    Web-программист, многостаночник
    Ну на самом деле код неправильно закомментирован. Нужно либо переносить строки, чтобы комментировать только код, но не открывающий и закрывающий php-теги
    либо использовать многострочный комментарий /* */ чтобы не зацепить закрывающий тег.
    Что качается комментирования кусков кода и сокрытия того что выводится php кодом, то тут есть два пути:
    1) замутить обработку выдаваемого html. Возможно используемый фреймворк/cms что-то такое умеет. Возможно придётся самому оборачивать всё в ob_start() а дальше регуляркой из конечного html вырезать комментарии.
    2) просто не оставлять комментарии. Используйте CVS чтобы была возможность посмотреть на старый код.
    Ответ написан
    Комментировать
  • Как реализовать чат (или почти чат) на СИ + php?

    @MadridianFox
    Web-программист, многостаночник
    Реализовать можно, однако PHP не очень подходит для организации чатов и подобных вещей, где сервер должен держать соединение с множеством клиентов и инициировать отправку данных.
    Лучше посмотреть в сторону NodeJS, go, Java, Python...

    В основе всех высокоуровневых протоколов взаимодействия компьютеров по сети лежит socket соединение. Когда ты работаешь в браузере, ты не можешь его использовать, у тебя есть только http (ajax это тоже http), грязные хаки, вроде long polling, ну и модный нынче WebSocket.

    Если клиент пишется на C, да и вообще на чём угодно что поддерживает сокеты, то тут даже гадать нечего. PHP имеет расширение для работы с сокетами. Раньше вроде считалось что оно не очень, и работают с ним одни извращенцы. Оно и понятно - PHP заточен под http.

    На самом деле необходимо придумать или реализовать уже известный, или даже взять библиотеку, в которой уже запрограммирован протокол общения между клиентом и сервером.
    По сути, так же как http с его заголовками и телом запроса является протоколом над TCP, то и вам необходимо придумать/ взять готовый протокол такого же уровня - над TCP.
    Ответ написан
    Комментировать
  • Как сделать, чтобы ссылки не обрывались?

    @MadridianFox
    Web-программист, многостаночник
    Ну так из БД она и вытягивается целиком. Обрезание происходит в при выводе на страницу.
    Я не знаю как это сделать быстро и грамотно, но на ум приходит поиск позиции начала и конца тегов ссылок регуляркой. Если вдруг оказывается что ссылка начинается до 400 символа, а заканчивается после, то значит она обрежется. В этом случае мы обрезаем не по 400, а по конец этой ссылки. Если у ссылок длинные анкоры, то можно немного посчитать и обрезать анкор внутри ссылки, сохраняя её функциональность.
    Ответ написан
  • Какой тут паттерн нужен?

    @MadridianFox
    Web-программист, многостаночник
    А нужен ли тут паттерн? Возможно стоило бы описать недостатки того что есть, хотелки, и спросить как этого добиться.
    Ответ написан
    2 комментария
  • Хватает ли использование одной датабазы Redis для проекта средней сложности?

    @MadridianFox
    Web-программист, многостаночник
    "Проект средней сложности" - это когда разработчику не так уж и сложно его реализовать. Кому-то не сложно в разумные сроки написать систему вроде этого же тостера, а кому-то сложно простой бложик на WP поднять.

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

    С другой стороны, даже если принять за среднюю нагрузку некоторое более-менее определённое число пользователей, то встаёт вопрос о конфигурации сервера, на котором располагается redis.
    Ответ написан
    Комментировать
  • Создание больших проектов на Node или PHP?

    @MadridianFox
    Web-программист, многостаночник
    Для большого сайта, нужна возможность горизонтального масштабирования. Т.е. в какой-то момент вам не хватит мощности одного web-сервера.
    Поэтому крупные сайты стоит делать если не микросервисными, то хотя-бы такими, чтобы можно было поднимать 2-3 копии сайта и ставить между ними балансировщик нагрузки. Для этого надо продумать несколько вещей, например хранение сессий на отдельном сервере (в БД или каком-нибудь redis). К чему я веду?
    К тому что подобные трюки, позволяют не только горизонтально масштабировать монолитный сайт, но и облегчают разделение сайта на несколько частей, каждая из которых может быть написана на чём угодно. Так, например основная часть сайта может быть выполнена на PHP, а такие высокоинтерактивные части, как чат или уведомления, могут быть реализованы на nodejs. Обе эти части сайта без проблем смогут работать с сессией пользователя, потому что она не привязана к конкретному web-серверу.
    Ответ написан
    1 комментарий
  • Php обработчик не правильно отдает адрес файла?

    @MadridianFox
    Web-программист, многостаночник
    Скорее всего точка входа в обработчик лежит в папке /content/topic/add, и он кладёт файл в папку uploads/. Тогда эти два пути складываются в /content/topic/add/uploads/.
    Надо указывать путь относительно корня сайта, например вот так:
    $_SERVER['DOCUMENT_ROOT'].'/uploads/'
    Ответ написан
  • Где нужно создавать объект mysqli?

    @MadridianFox
    Web-программист, многостаночник
    Каждый ajax запрос, как и открытие каждой страницы, заново запускает php скрипт на сервере.
    Поэтому с точки зрения сохранения объекта между ajax запросами, нет никакой разницы - объект всегда будет создаваться заново.
    Ответ написан
    Комментировать
  • Срабатывает статический вызов не статического метода, как так?

    @MadridianFox
    Web-программист, многостаночник
    Метод не использует данных объекта, так что ничего не мешает ему быть вызванным статически. Если бы внутри было обращение к полю через $this, то выскочила бы ошибка.
    И да - это PHP...
    Ответ написан
    Комментировать
  • Как дописать код отправки массива на сервер?

    @MadridianFox
    Web-программист, многостаночник
    Зависит от протокола по которому сервер принимает данные и того в каком формате он эти данные ожидает. Если сервер требует данные по http, то можно использовать curl. Данные что вы показали являются массивом, но это не массив неизвестной длинны с элементами одинакового типа, а скорее список пар ключ-значение. Можно передать его как urlencoded параметры запроса. Можно конвертировать json и отправить в теле POST запроса. Но опять же, всё зависит от от того что ждёт сервер.
    Ответ написан
    Комментировать
  • Получение конкретного блока через ajax?

    @MadridianFox
    Web-программист, многостаночник
    Нужен отдельный файл, который будет отдавать только main. Можно сделать чтобы сама страница сначала отдавалась пустой, но по окончании загрузки автоматически уходил бы ajax запрос на этот отдельный файл. чтобы получить неотфильтрованные данные. Далее при введении данных в форму фильтра можно делать ajax запросы на тот же отдельный файл и заменять содержимое страницы.

    Однако чуть лучшим путём будет включать неотфильтрованное содержимое в страницу еще на этапе её генерации.
    Ответ написан
    1 комментарий
  • Какой язык программирования выбрать в моем случаи?

    @MadridianFox
    Web-программист, многостаночник
    Очень большой пласт информационной безопасности завязан на достаточно низкоуровневом программировании, ведь именно на низком уровне происходит преодоление систем безопасности.
    Поэтому если хотите продолжать учиться по выбранному направлению - учите плюсы.
    Защитить диплом можно и с PHP, если правильно сформулировать тему, но некоторые предметы можно будет понять только если знаешь С/С++/ассемблер.
    Ответ написан
    Комментировать
  • Что такое DI инъекция зависимостей?

    @MadridianFox
    Web-программист, многостаночник
    Инъекция зависимостей, это когда ты не жёстко в коде прописываешь то что один компонент использует другой, а передаёшь один компонент другому.
    Конкретно:
    // без DI
    class Application{
         private $database;
         public function start(){
              $this->database=new Database("localhost","user","pass");
              //....
         }
    }
    $application = new Application();
    $application->start(); 
    
    // с DI
    class Application{
         private $database;
         public fucnction __construct(Database $d){
               $this->database=$d;
         }
         public function start(){
              //....
         }
    }
    $application = new Application(new Database("localhost","user","pass"););
    $application->start()

    Таким образом создание большинства компонентов сосредотачивается в одном месте - там где запускается приложение.
    Зачем?
    Во первых удобно контролировать. Если мы захотим использовать вместо Database другой класс для работы с БД, мы знаем где и что поменять.
    Во вторых удобно тестировать, это вытекает из первого - для юнит тестирования нам наверняка понадобится вместо Database использовать Mock объект. Ну и лёгкость замены компонента нам только на руку.
    Ответ написан
    Комментировать
  • PHP SQLite3 из базы перенести на WordPress?

    @MadridianFox
    Web-программист, многостаночник
    1) найти в БД WP таблицу которая хранит посты, изучить её структуру. Там помимо названия и контента наверняка нужны дополнительные данные, например автор и дата публикации
    2) написать скрипт, который подключается к sqlite и к БД WP и делает что-то вот такое (псевдокод):
    while($post=$sqlite->fetch()){
        $wp_db->insert("wp_post", ["title"=>$post["title"],"content"=>$post["content"],"author"=>$author_id])
    }
    Ответ написан
  • Как отправить POST-запрос?

    @MadridianFox
    Web-программист, многостаночник
    Скорее всего имеется ввиду
    header("Location: url.php?param=value");
    но только параметр должен быть передан через post, а не get.
    curl такого эффекта не даст. Тут надо пользователю выдать промежуточную страницу с post формой (м.б. даже скрытой), которая при полной загрузке страницы автоматически сделает submit.
    Ответ написан
    Комментировать