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

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Вы можете передать любые данные POST или GET запросом. Используйте либо input type="hidden" либо используйте AJAX-запрос в случае, если вам важно чтобы в DOM ваша форма действительно была без данных.
    Ответ написан
    Комментировать
  • Как организовать грамотную доставку образа PHP приложения если необходим общий volume?

    Inkognitoss
    @Inkognitoss Автор вопроса
    Full-stack разработчик.
    Ответ: никак. Используйте volume если нужен некий storage. В противном случае организуйте контейнеры так, чтобы обновляемый в них код во время релизов был уже на этапе сборки образа.

    В случае данного сабжа - если приложение не разделить на 3 сервиса, сервис будет один.
    В итоге я убрал NGINX из связки и сделал образ из официального php-apache (а не php + apache)
    Ответ написан
    Комментировать
  • Как настроить mbstring.func_overload=0 для отдельного каталога сайта?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Вы можете использовать
    php_admin_value mbstring.func_overload 0
    или
    php_admin_value mbstring.func_overload 2
    соответственно
    но в директиве VirtualHost (желательно перед настройками директорий)
    в htaccess с какой-то версии не должно работать.
    Ответ написан
    Комментировать
  • PHP: Почемгу round некорректно округляет до двух знаков?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Попробуйте ini_set("precision", 12); перед выполнением или в php.ini прописать. Но нужно быть аккуратным, чтобы нигде ничего в приложении вашем больше не отломалось. А лучше обновить php
    Ответ написан
  • Как работает Generator::send в php?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Я так понял:

    Generator::send - передает значение в yield и возобновляет его работу.
    Вообще yield сравнивают return, похоже, только потому что оно прерывает работу функции, а при следующем вызове (или как в примере передаче значения генератору) продолжает выполнение этой функции. Поэтому `$string= return` не прокатит. Я не знаю, можно ли return присвоить значение))))

    На самом деле в примере
    while (true) {
            $string = yield;
            echo $string."\n";
        }

    while гарантирует, что такой метод будет исполняться бесконечно. Но вот yield прерывает процесс выполнения. И каждый раз, когда вы делаете ->send('hi, man'); метод продолжает выполняться, зацикливается и снова тормозит. Этот пример на деле наверное тавтология, но демонстрирует суть.

    Давайте сделаем пример более (менее) полезным:
    function printer() {
    	$line = 1;
    	
        while (true) {
            $string = yield;
            echo ($line++).$string.PHP_EOL;
        }
    }
    
    $printer = printer();
    $printer->send('Hello world!');
    $printer->send('Bye world!');

    посмотреть:
    https://3v4l.org/L0Pra
    Ответ написан
    Комментировать
  • XPath: что означает вот эта конструкция поиска '*/*'?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    * — обозначает любое имя или набор символов по указанной оси, например: * — любой дочерний узел; @* — любой атрибут.
    / — определяет уровень дерева, то есть разделяет шаги адресации

    Предположу, что это любой объект имеющий второй уровень в дереве
    Ответ написан
    Комментировать
  • Как отменить повторную отправку формы?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Делать проверку, что запрос сделан через POST, например, и падать.
    Тогда только по ajax ну или если вручную кто кинет POST запрос, через curl или еще какую-нибудь тулзу.
    А вообще для этого CAPTCHA и существует, можете ей воспользоваться.
    Ответ написан
    Комментировать
  • Как правильно написать код php?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Вероятно точку поставить забыли : "'.ot_get_option( "banner_1").'"

    1ef0ede85cd54a699ef3ed15d04aeabb.jpg
    Ответ написан
    1 комментарий
  • Где вырезаются русские слова?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    в строчках 52 и 53 /classes/Article.php
    Ответ написан
    3 комментария
  • Для чего используют isset в if(isset($_POST['submit'])) {}?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Как я понимаю, всё дело в том, что не всё то золото, блестит. И в вашей переменной не обязательно будет явный true. Переменная может существовать и с пустым значением или даже со значением false. Что вы будете делать тогда? Вот вам пример, который вроде бы показывает это. Вы только самостоятельно проверьте.
    $var_test = 0;
    var_dump($var_test);
    if($var_test){
    	echo('Не сработает');
    }
    
    if(isset($var_test)){
    	echo('Отработает');
    }
    Ответ написан
    6 комментариев
  • Как правильно парсить csv-файлы (разделитель пробел)?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    https://ru.wikipedia.org/wiki/CSV
    Как правило ";" разделяет ячейки,
    Перевод строки будет разделять строки. Php можно использовать константу PHP_EOL.
    Ответ написан
    Комментировать
  • Как повторно отправить форму без перезагрузки страницы?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Ну вы в succes кажется затираете ваш инпут
    jQuery('[name=' + name + ']').html('<div class="pop2">'+msg+'</div>');


    Разместите над вашем инпутом
    Смените в beforeSend и success jQuery('[name=' + name + ']') на jQuery('#for_progress')
    Ответ написан
    6 комментариев
  • Как отправить строку xml на почту как файл file.xml (PHP)?

    Inkognitoss
    @Inkognitoss Автор вопроса
    Full-stack разработчик.
    Вообще, мне показалось, что все в корне неверно поняли мой вопрос, хотя ответ Дастана теплее.
    Ответ будет таков:
    Т.к. строка с XML у нас уже есть, осталось ее только присобачить к письму как к вложение, о чем и был вопрос. Сделать это можно например так:

    $HTML = '<b>Текст<b>';
           //$Наш кусок кода из вопроса
            $xml ='<?xml version="1.0" encoding="WINDOWS-1251" ?>';
            $xml .='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">';
            $xml .='<xsl:template match="/">';
          #$xml .= и так далее.... Или же иной XML формирующий процесс.
    
    
            $filename = 'file.xml'; //Такое имя файла увидит пользователь при получении.
            $subject = 'Ваш отчет, cударъ!';
    
            $boundary = "--".md5(uniqid(time())); //Разделитель, который нужно будет использовать чтобы разделять разные типы контента в сообщении
    
            //Напишем в хидере, что наше сообщение multipart (мол разный контент там будет)
            $headers = "MIME-Version: 1.0;\r\n";
            $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
    
             //Наш текст сообщения будет в перовой части сообщения в формате Html (не забываем про разделитель)
            $part1 = "--$boundary\r\n";
            $part1 .= "Content-Type: text/html; charset=windows-1251\r\n";
            $part1 .= "Content-Transfer-Encoding: base64\r\n";
            $part1 .= "\r\n";
            $part1 .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $HTML))); //контент кодируется в base64, о чем мы писали в Content-Transfer-Encoding, а также мы еще перед этим нашему сообщению сменили кодировку на windows-1251
    
            //И самое интересное, мы ставим разделитель и помещаем контент, содержащий вложение, а также указываем имя вложения. А дальше всё как с обычным текстом, разница тут только в том, что такой контент не будет так просто отображен в почтовой программе, а отобразится как вложение, и чтобы его просмотреть, придется отдельно загрузить файл.
            $part2 = "\r\n--$boundary\r\n";
            $part2 .= "Content-Type: application/octet-stream; name=\"$filename\"\r\n";
            $part2 .= "Content-Transfer-Encoding: base64\r\n";
            $part2 .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
            $part2 .= "\r\n";
            $part2 .= chunk_split(base64_encode(iconv("utf8", "windows-1251", $xml)));
            $part2 .= "\r\n--$boundary--\r\n";
    
            //После всего этого мы можем отправить всё это на почту обычной функцией mail (php)
            $message = $part1.$part2
    
            mail(''example@site.com",$subject, $message ,$headers);


    Всё должно получиться. Если у кого-то будут замечания по собственному решению, то прошу. Всегда радуюсь, когда указывают на ошибки, особенно если аргументируют.
    Ответ написан
    Комментировать
  • Как вывести данные из MySQL?

    Inkognitoss
    @Inkognitoss
    Full-stack разработчик.
    Воспользуйтесь PDO Ссылка
    Также если хочется урок, то можно пройти пару бесплатных курсов по mySQL и PHP на Интуите можно, вообще сейчас много всяких бесплатных курсов. Для вашей задачи можно воспользоваться также каким-нибудь фреймворком.
    Ответ написан