• Автоматическая отправка писем через php?

    ProjectSoft
    @ProjectSoft
    Tink312 для начало изучите функцию mail
    Получилось отправить? Если нет, то нужно бы понять, что у вас там локально установлено и как настроено. Вот здесь могут по идеи у вас возникнуть проблемы. Но они все решаемые.
    Далее перейдём к правильной отправке писем через SMTP вашего почтового ящика. Очень рекомендую использовать PHPMailler. По примерам сможете настроить отправку.
    Далее у вас могут возникнуть проблемы о неподтверждённой почте. Гуглим, Яндексуем, ... и находим информацию, как настроить DKIM вашего почтового сервера, если он у вас совпадает с доменным именем вашего сайта. И так далее... Чтобы правильно настроить отправку писем.
    Теперь сохраните сессию вошедшего пользователя, установите куку на время пока пользователь у вас на сайте и проверяйте наличие куки. Далее проверяете.
    Если сессия существует - проверяем существование куки - куки нет - создаём куку - отправляем письмо.
    Здесь вы можете придумать свою удобную для вас логику.
    Кука на время сеанса пользователя устанавливается так setcookie("имя_параметра", "значение", 0, "/");
    Написано
  • Как заставить этот css работать в Tampermonkey?

    ProjectSoft
    @ProjectSoft
    Создайте свой скрипт в Tampermonkey.
    Удалите всё в нём и вставьте свой код:
    JavaScript
    // ==UserScript==
    // @name         Ответ на вопрос
    // @namespace    https://qna.habr.com/q/1332584
    // @version      1.0.0
    // @description  Как заставить этот css работать в Tampermonkey?
    // @author       ProjectSoft
    // @match        http*://*/*
    // @icon         data:image/png;base64,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
    // @grant        none
    // ==/UserScript==
    (async function() {
        'use strict';
        const textCss = `:not(:defined):not(faceplate-auto-height-animator,faceplate-dropdown-menu,faceplate-expandable-section-helper,faceplate-hovercard,faceplate-tracker){visibility: visible !important;}`,
              body = document.querySelector("body"),
              style = document.createElement('style'),
              p = document.createElement('p');
        style.type= "text/css";
        p.style.color = 'white';
        p.style.backgroundColor = 'red';
        body.appendChild(style).textContent = textCss;
        body.appendChild(p).textContent = 'Вставлено здесь.';
    })();

    В настройках скрипта в разделе «Общие» установите
    Скриншот
    65b7df21c7a03308587660.png
    Написано
  • Как объединить файлы xlsx/xls в один через phpSpreadSheet?

    ProjectSoft
    @ProjectSoft
    Понимаю, что это неправильно, но так файл начал создаваться (как для xls, так и для xlsx) и все стили подтянулись. Ну и не пишет, что файл поврежден.

    Ну так время отправить изменённый код в пул для репы PHPOffice/PhpSpreadsheet и описать ошибки и метод лечения.
    Я лично не считаю это "неправильным". Наоборот, даже очень правильно. Вы нашли ошибку и сообщили о ней.
    И даже очень возможно вы найдёте решение именно там, при обсуждении ваших коммитов.
    Написано
  • Как вставить инлайновый скрипт на DOM веб страницы при разработке расширения для гугл хром?

    ProjectSoft
    @ProjectSoft
    Artem Tsarev чтобы вставить скрипт в контент страницы - https://developer.chrome.com/docs/extensions/refer...
    Смотри по документации и какой манифест используешь (V2 или V3).
    Для V3 - https://developer.chrome.com/docs/extensions/refer...
    Естественно в манифесте нужно разрешить доступ к странице.
    Как помнится, напрямую со скриптами на странице работать не получится. Но для себя можно сделать очень многое.
    Написано
  • Как победить 504, грузя большой файл на s3?

    ProjectSoft
    @ProjectSoft
    yarovikov, а кто сказал, что настройками ты можешь полностью регулировать из php? Это ни всегда так. И это правильно.
    Даже установка значений в htaccess не всегда должна приводить к ожидаемым результатам. И это тоже правильно.
    Всё зависит от глобальных настроек и то, как разрешил админ управлять этими настройками. ))) Это реально серьёзная тема.
    Поэтому думаю, что стоит включить лог ошибок на сервере и отследить более полную картину происходящего.
    Просто опираясь на подобные ошибки без полного лога, это как стрелять из пальца по уткам.
    Извиняюсь.
    Написано
  • Как переключаться между поддоменами без геолокаций?

    ProjectSoft
    @ProjectSoft
    Если честно, то вопрос очень простой.
    Даже если писать в куку, то в htaccess ты можешь переопределить поведение уже по состоянию этой самой куки.
    Это только направление, а дальше всё зависит от той самой системы, которую ты используешь.
    Не можешь - фриланс, хочешь - только разбираться самому, гуглить, искать, решать...
    Написано
  • Как динамически у квиза вывести шаги и давать класс активному?

    ProjectSoft
    @ProjectSoft
    Александр Васильев, Даниил Гладыш, ребята, вы настолько дали расширенный ответ, что реально, я лично, не могу пройти мимо ваших ответов.
    Для anmkh, осталось только правильно обернуть всё это в код. В логический и правильный, но это уже другая история..
    Вам же только БРАВО!.
    anmkh, вы можете отслеживать все события, которые возникают непосредственно в форме.
    Слушай форму, а не то, что вокруг неё. Инициализируй скрипт только тогда, когда форма доступна. Инициализация скрипта подразумевает под собой то, что ты навешиваешь события сам на все контролы, которые ты сам хочешь отследить. И только ты сам можешь от этих событий отписаться или переопределить эти события под своё усмотрение.
    Может быть я сложно навожу на мысль, но твой ход событий правильный.
    Написано
  • Как изменить позицию курсора при использовании автозаполнения?

    ProjectSoft
    @ProjectSoft
    Александр Дио, не знаю. Я всё-равно не смог отловить баг.
    Написано
  • Вставка значения из php в html?

    ProjectSoft
    @ProjectSoft
    <?php echo $total; ?>
    И
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $totalProducts = 20;
    ?>

    Где в коде PHP значение $total?

    Как должно быть
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    $totalProducts = 20;
    ?>
    <!DOCTYPE html>
    <html lang="ru">
    	<head>
    		<title>TEST</title>
    	</head>
    	<body>
    		<h2 style="margin-left: 30px; margin-bottom: 10px;"><br><?php echo $totalProducts ; ?>шт.</h2>
    		<!-- Без echo -->
    		<p><?= $totalProducts; ?> шт.</p>
    	</body>
    </html>
    Написано
  • Как изменить позицию курсора при использовании автозаполнения?

    ProjectSoft
    @ProjectSoft
    Вы используете js плагин для инициализации маски номера телефона?
    Ещё момент. Плейсхолдер должен быт вот такого формата placeholder="+7(___)___-__-__" По крайней мере так по дефолту для type="tel"
    К сожалению я не смог воспроизвести подобный баг.
    Написано
  • Как методом POST вывести координаты клика мышкой?

    ProjectSoft
    @ProjectSoft
    Molder84, ну вообще то код и не должен работать так, как хотелось бы. Если у вас только этот код.
    Рассмотрите логику исполнения вашего скрипта.
    Я вижу, что форма отправляется через сабмит. Соответственно координаты будут передаваться только от позиции курсора над кнопкой сабмита. Странно? но это так. Лучше бы использовали ajax, например по движению мыши или по времени.

    Что у вас приходит по сабмиту?
    Написано
  • Как добавить необходимые атрибуты в html размету, полученную из xml файла и xsl схемы?

    ProjectSoft
    @ProjectSoft
    BuTOC_90 смотрю на твой вопрос уже часов 6... Честно, заинтересовало.
    Покажи код xml одного сегмента. Иначе ответа тебе ждать... до истечения веков.
    А уж потом будем думать над шаблонизацией.
    Написано
  • Как правильно сделать псевдо-элемент треугольник в меню?

    ProjectSoft
    @ProjectSoft
    Это что за чудо?

    .menu-item-has-children {
    	width: 0;
    	border: 4px solid transparent;
    	border-bottom: none;
    	border-top-color: #8a8383;
    	content: '';
    	vertical-align: middle;
    	display: block;
    	position: relative;
    	right: 5px;
    }


    Почему вы это применяете непосредственно к li, где свойствоcontent: ''; вообще не применим, а не к псевдоэлементу данного блока ::after, где content: ''; уже будет обязателен?
    Данная запись должна выглядеть так:
    .menu-item-has-children::after {
    	width: 0;
    	border: 4px solid transparent;
    	border-bottom: none;
    	border-top-color: #8a8383;
    	content: '';
    	vertical-align: middle;
    	display: block;
    	position: relative;
    	right: 5px;
    }

    И убрать стили для ::before у ссылки .top-nav_menu li a::after. Вообще удалить. Этот стиль вам не нужен.

    PS: естественно я не смотрел на правильность положения данного элемента. Это не ложится в суть данного вопроса.
    Написано
  • Как сделать перевод DOCX в PNG в python/js?

    ProjectSoft
    @ProjectSoft
    Раз уж есть python, то есть и ImageMagick.
    $ convert -verbose -quality 100 -fill "rgba(255,255,255,1.00)" -density 300 -alpha off test.docx test_docx.png
    Написано
  • Можно сделать так чтобы расширение chrome отправляло ссылку не в тг бот, а в конкретный чат?

    ProjectSoft
    @ProjectSoft
    labelv, всё возможно, если вы понимаете. Одно единственное условие - бот должен быть участником чата. Вернее группы. И быть там админом.
    Дальше только дело техники.
    Написано
  • Как выполнить POST запрос PHP и получить ответ JSON?

    ProjectSoft
    @ProjectSoft
    Использовать cURL
    В чём именно проблема?
    А сервер, на который вы пытаетесь сделать запрос, отдаёт json?
    Написано