Задать вопрос
  • Курсор ввода в любом месте окна браузеров?

    rus0nix
    @rus0nix
    Admin
    Видимо вы нажали клавишу F7 в Microsoft Edge.
    5b549528da25f774201802.jpeg
    Нажмите опять эту клавишу для отключения.
    Ответ написан
    20 комментариев
  • Session_start и Permission denied (13)?

    Sky4eg
    @Sky4eg Автор вопроса
    Web разработчик
    прописал в конфиге пула и настройки сайта
    fastcgi_pass unix:/var/run/php-fpm/sky.sock; вместо
    fastcgi_pass 127.0.0.1:9000;

    и проблема исчезла
    Ответ написан
    Комментировать
  • Как исправить ошибку при записи в mysql "Incorrect string value"?

    APTEMOH
    @APTEMOH
    Пишу чат ботов, телеграм ботов, ботов во вконтакте
    Подключение к БД так же нужно изменить на utf8mb4
    Ответ написан
    3 комментария
  • Как взять все из $_GET и записать в строку?

    gubin_niko
    @gubin_niko
    Смотря как вы хотите записать данные в строку.

    echo http_build_query($_GET);
    Ответ написан
    Комментировать
  • Воспроизведение аудио файлов с сервера без возможности их скачивания?

    Anonym
    @Anonym
    Программирую немного )
    Самый геморройный вариант — сделать свой плеер. С сервера отдавать не mp3, кодированные данные, которые сами по себе бесполезны без расшифровки. Плеером их раскодировать и играть.
    Ответ написан
    2 комментария
  • Воспроизведение аудио файлов с сервера без возможности их скачивания?

    wartur
    @wartur
    Если надо защитить.

    Можно давать временные ссылки для скачивания на один раз, только для плеера. Это усложнит процедуру скачивания, но далее существуют граберы с аудиплаты.
    Ответ написан
    2 комментария
  • Почему не работает on("click"...) в jquery?

    dimsog
    @dimsog
    Переносил код с PHP 4 на 7.4...
    Будет работать 146% :)
    $(document).on('click', '.text', function() {
    });


    Если не работает, показывайте вывод из консоли.
    Ответ написан
    1 комментарий
  • Как сохранять emoji utf8mb4 в mysql на shared хостинге?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Чтобы сохранять символы с кодами больше 0xFFFF недостаточно задать кодировку сессии, необходимо чтобы таблицы базы данных имели кодировку utf8mb4. Пересоздай таблицы БД с явным указанием кодировки utf8mb4.

    Но учти, что максимальная длина индексного значения в БАЙТАХ при этом не меняется. Потому, если у тебя есть индексы по полям типа VARCHAR, то для utf8mb4 (4 байта на символ вместо 3 у utf8) длина этих полей не должна превышать 191 символ (255*3/4).
    Ответ написан
    1 комментарий
  • Fatal error: Allowed memory size. Как сделать запрос SQL чтобы не получать ошибку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Читаем https://www.php.net/manual/ru/mysqlinfo.concepts.b...
    и делаем свой запрос небуферизованным.
    Ну и разумеется читаем все 300 офигиллиардов строк не сразу в массив, а обрабатываем по одной.
    Ответ написан
    6 комментариев
  • Как отправить файл через POST на php?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    например если надо отправить данные и файл на mp3-server.ru/accept.php
    $target = 'http://mp3-server.ru/accept.php';
    $file_path = realpath('/путь/к/файлу/filename.mp3');
    $post = array('name1' => '111', 'name2' => '222', 'file'=> '@'.$file_path);
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result=curl_exec ($ch);
    curl_close ($ch);
    echo $result;

    на другом конце провода accept.php должен принимать данные примерно так
    $uploaddir = realpath('./') . 'uploads/';
    $uploadfile = $uploaddir . basename($_FILES['file']['name']);
    echo '<pre>';
    	if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
    	    echo "Файл успешно загружен в папку $uploaddir \n";
    	} else {
    	    echo "Не удалось получить файл \n";
    	}
    	echo 'Информация о принятых данных';
    	print_r($_FILES);
    	echo "<hr>";
    	print_r($_POST);
    Ответ написан
    Комментировать
  • Как декодировать json в array на JavaScript?

    @abberati
    frontend-разработчик
    const array = JSON.parse('[1, 2, 3]')
    Ответ написан
    Комментировать
  • Почему не работает xpath?

    Lafafm
    @Lafafm
    Development lead, Full stack generalist
    Лично я не знаю как правильно, но почему бы не использовать file_get_contents, и после получения страницы с помощью простого регулярного выражения взять таблицу?

    Вот решение:
    $html = file_get_contents("http://w1.c1.rada.gov.ua/pls/z7503/a002");
    preg_match('#<table  class="striped Centered" WIDTH="100%" cellspacing=0 cellpadding=3>(.+?)</table>#is', $html, $arr);
    echo $arr[0];
    Ответ написан
    2 комментария
  • Telegram самоподписной сертификат для IP?

    theblackpost
    @theblackpost Автор вопроса
    В общем, решил.
    Итак, мб кому-то пригодится нормальная инструкция для IP:

    openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 365 \
    -keyout YOURPRIVATE.key \
    -out YOURPUBLIC.crt \
    -subj "/C=RU/ST=Saint-Petersburg/L=Saint-Petersburg/O=Example Inc/CN=IP_СЕРВЕРА"


    Дальше, конвертим в .pem :

    openssl x509 -in YOURPUBLIC.crt -out YOURPUBLIC.pem -outform PEM


    Копируем файлы в папку с другими ключами: (можно не копировать,, но указать свой путь в конфиге Apache)
    cp YOURPUBLIC.crt /etc/ssl/certs/YOURPUBLIC.crt
    cp YOURPRIVATE.key /etc/ssl/private/YOURPRIVATE.key


    В настройки (для apache) /etc/apache2/sites-available/default-ssl.conf :

    <IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    ServerAdmin your_email@example.com
    ServerName IP сервера
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/YOURPUBLIC.crt
    SSLCertificateKeyFile /etc/ssl/private/YOURPRIVATE.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
    </VirtualHost>
    </IfModule>


    Создать новый сниппет Apache в каталоге etc/apache2/conf-available.

    Рекомендуется указать в названии файла его назначение (к примеру, ssl-params.conf):

    sudo nano /etc/apache2/conf-available/ssl-params.conf


    # from https://cipherli.st/
    # and https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    SSLProtocol All -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
    Header always set X-Frame-Options DENY
    Header always set X-Content-Type-Options nosniff
    # Requires Apache >= 2.4
    SSLCompression off
    SSLSessionTickets Off
    SSLUseStapling on
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"


    Настроечки для Apache:

    sudo a2enmod ssl
    sudo a2enmod headers
    sudo a2ensite default-ssl


    Проверяем,
    sudo apache2ctl configtest
    если ок, то будет что-то типо:
    AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
    Syntax OK


    Ребутаем.
    service apache2 restart

    Если ок, то открываем c https в браузере.

    Ну а дальше скармливаем сертификат ОБЯЗАТЕЛЬНО! с @ телеграм боту

    curl -F "url=https://IP_МОЕГО_СЕРВЕРА/tg/index.php" -F "certificate=@YOURPUBLIC.pem" "https://api.telegram.org/МОЙ_ТОКЕН/setwebhook"


    Проверяем:

    https://api.telegram.org/МОЙ_ТОКЕН/getWebhookInfo
    Ответ написан
    Комментировать
  • Проблемы с Telegram bot'ом - почему телеграм не отправляет запросы на адрес webhook?

    redflasher
    @redflasher
    Full-stack developer
    Зайдите через браузер на
    https://api.telegram.org/bot<токен_бота>/getWebhookInfo
    и там увидите сообщение об имеющейся ошибке.
    Ответ написан
    Комментировать
  • Как загрузить файл на сервер через ссылку?

    @ugodrus
    function downloadFile ($URL, $PATH) {
        $ReadFile = fopen ($URL, "rb");
        if ($ReadFile) {
            $WriteFile = fopen ($PATH, "wb");
            if ($WriteFile){
                while(!feof($ReadFile)) {
                    fwrite($WriteFile, fread($ReadFile, 4096 ));
                }
                fclose($WriteFile);
            }
            fclose($ReadFile);
        }
    }

    Метод отлично работает на больших объемах.
    Можете также реализовать через сокеты. Тоже няшка получается.
    Ответ написан
    1 комментарий
  • Как вывести ошибку работая с функцией shell_exec?

    @Zubastik_1
    $text = shell_exec('php -r "becho 99;" 2>&1');
    echo $text;
    Ответ написан
    Комментировать
  • Как пропорционально уменьшить высоту элемента?

    1) Определяете отношение высоты к ширине, которую хотите соблюдать
    2) Внутрь существующего блока вкладываете еще один блок и задаёте ему свойство "padding-bottom: 50%", где "50%" - соотношение высоты к ширине (в данном случае, высота составляет 50% от ширины). И делаете его относительно позиционированным
    3) Внутрь него вкладываете абсолютно позиционированный блок, растягивая на всю ширину/высоту.

    Оно?
    Ответ написан
    3 комментария
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Как решить проблему с ошибкой: open_basedir restriction in effect. File(/home/u314597346/public_html/tmp) is not within the allowed path(s)?

    dubr
    @dubr
    пыхарь
    open_basedir - настройка, которая ограничивает места, куда php может "лезть".

    В вашем случае это директории:

    /home/u850868817
    /tmp
    /var/tmp
    /opt/php-7.0/pear
    /usr/local/bin // вау!
    /etc/pki/tls/certs

    На шаред-хостингах значение задается "сверху" хостером и переопределить его из скрипта нельзя.

    На картинке: Джумла взяла значение upload_tmp_dir - это временная директория для загрузки файлов на сервер, и попыталась проверить, можно ли туда писать. Но проверить не получилось, потому что open_basedir не пустил is_writable() к этой директории, потому что ее и ее родителей нет в списке разрешенных.

    Вам хорошо бы выяснить, кто такой u314597346 - потому что ваш аккаунт называется u850868817. Скорее всего вы где-то его скопипастили и надо искать по исходникам. Попробуйте создать вот такой файл:

    <?php
    echo 'tmp dir: '.ini_get('upload_tmp_dir')."<br />";
    echo 'doc root: '. $_SERVER['DOCUMENT_ROOT'];


    и посмотрите, что он выведет. Если там будут разные uXXXX - надо спрашивать хостера, чо за. Если оба будут u850868817 - надо искать, откуда взялся u314597346.
    Ответ написан
    7 комментариев
  • Как изменить содержимое файла с помощью phpexcel?

    @DuD
    Ну гуглится же элементарно.
    stackoverflow.com/questions/7594444/phpexcel-modif...
    Для того чтобы файл менять, его надо сначала открыть.
    Ответ написан
    1 комментарий