• ZipArchive после закрытия не появляется (php.5.2). Как узнать причину?

    @aksined_by Автор вопроса
    Php-developer
    Залез в исходники.
    Генерировать предупреждение с причинами данной "ошибки" Zend начали только с 7й версии php.
    60c1c34f2c541879112247.png

    На версии 5.2 просто возвращался false и дальше делай что хочешь. Вопрос закрыт.
    60c1c3570395d426355648.png
    Ответ написан
    Комментировать
  • Как показать всплывающее окно после отправки формы?

    @aksined_by
    Php-developer
    Вопрос хоть и передаёт суть, не говорит об условиях вашего кода.
    По клику на отправку почты, вы делаете переход на страницу со скриптом, или вызываете ajax, который шлёт отправку писем без перезагрузки страницы?

    Если по клику на отправку почты происходит редирект, то поставленную задачу сделать невозможно.

    Если вы делаете ajax запрос, то в случае успеха вы должны вернуть некоторый ответ, который потом нужно разобрать и там уже сгенерировать окно с результатом, например с помощью jquery
    $.post(
        'someUrl',
        {
            mailAddress: 'someAddress',
            mailTitle: 'someTitle',
            mailText: 'someText'
        },
        function (response) {
            if (response === 1){
                alert("Спасибо! Ваше сообщение отправлено");
            } else {
                alert("Во время отправки произошла ошибка. Ошибка: " + response);
            }
        }
    );


    Пример не является решением, лишь пример.
    Ответ написан
    Комментировать
  • Генерация 'title' через запрос $_GET?

    @aksined_by
    Php-developer
    $street = htmlspecialchars($_GET["street"] ?? '');
    $orient = htmlspecialchars($_GET["orient"] ?? '');
    
    
    return [
    'title' => trim ( ($street ? "Улица $street" : "") .  " " . ($orient ? "Ориентир $orient" : "") ),
    ];
    Ответ написан
    5 комментариев
  • Формирование строки лога только если включен нужный уровень отладки?

    @aksined_by Автор вопроса
    Php-developer
    Написал маленький бенчмарк на 1.000.000 записей в лог при условии, что и логирование не выполнится ни в одном из случаев. Одна функция собирает строку и передаёт её, а вторая функция вызывает некоторый callback, генерирующий строку в случае необходимости лога.

    function logText(string $message, int $logLevel = LOG_WARNING){
        if ($logLevel <= LOG_WARNING){
            file_put_contents(__DIR__ . '/logText.log', date('H:m:s') . "\t$message\n", FILE_APPEND);
        }
    }
    
    function logFn($renderMsg, int $logLevel = LOG_WARNING){
        if ($logLevel <= LOG_WARNING){
            $text = $renderMsg();
            file_put_contents(__DIR__ . '/logText.log', date('H:m:s') . "\t$text\n", FILE_APPEND);
        }
    }
    
    $a = microtime(true);
    for ($i = 1000000; $i > 0; $i--){
        logText("$i some text value " . ($i*100), LOG_DEBUG);
    }
    $time = microtime(true)-$a;
    echo "<h3>time log message: $time</h3>";
    
    
    $a = microtime(true);
    for ($i = 1000000; $i > 0; $i--){
        logFn(
            function() use ($i){
                return "$i some text value " . ($i*100);
            }, LOG_DEBUG
        );
    }
    $time = microtime(true)-$a;
    echo "<h3>time fn message: $time</h3>";


    Разница оказалась совершенно незначительной, но оказалось, что передача сформированной строки быстрее.
    Ответ был приблизительно схож и выглядел как-то так:
    time log message: 0.54136490821838
    time fn message: 0.66178202629089
    Ответ написан
    Комментировать
  • Почему csv файл отправляется пустым на почту?

    @aksined_by
    Php-developer
    Нужно чуть больше информации. Например версия php, версия PHPMailer

    На сколько я помню, метод addAttachment ожидает первым параметром полный путь к файлу, а вторым уже наименование файла.
    Ответ написан
    6 комментариев
  • Как в js через if задать проверку на число?

    @aksined_by
    Php-developer
    Наткнулся на старый вопрос и не смог промолчать, даже если никому уже и не пригодится.
    На одной из моих работ было четкое правило "Если можно обойтись без регулярок, то ни в коем случае не используй регулярку."

    Поэтому лично я данную проверку реализовал бы вот так:
    var isNumber = (typeof(year.length) === 'undefined' || (Number.parseInt(year,10) == year))
    Ответ написан
    Комментировать
  • Существует ли правило, указывающее браузерам, что считать все величины надо без дробной части?

    @aksined_by
    Php-developer
    Столкнулся с подобным поведением в chrome. Браузер накапливает сотые части width блоков с текстом и со временем ломает фон (картинками) некоторых элементов, идущих в очереди.
    5df2046d67009335396807.png
    css решение:
    display: inline-table;
    Ответ написан
    Комментировать