• Как сделать скриншот или запись, если запрещено?

    @AlexVWill
    Без рут - никак, поскольку приложение для отрисовки окон использует системные функции, и если приложение для окна установило FLAG_SECURE то система запретит скриншот (точнее отрисует окно в отдельном защищенном буфере, из которого нельзя получить скриншот). Т.е. это системное решение. Вот тут подробности:
    https://developer.android.com/reference/android/vi...
    Как вариант использовать web версию сервисов, браузер не имеет такого рода ограничений.
    Ответ написан
    Комментировать
  • Утечка DNS или как соц. сети узнают мое местоположение?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    А какая связь между используемым DNS и определением вашего местоположения в соц-сетях?

    DNS нужен для того, что бы ваше устройство (компьютер или телефон) узнали IP-адрес сервера, к которому нужно подключиться для получения/скачивания информации. А соц-сети могут вас палить просто по IP-адресу источника коннекта. Вы уверены, что абсолютно все соединения к соц-сетям с вашего устройства идут только и исключительно только через удалённый прокси? Любой другой трафик - заблокирован?

    Да даже ваш Wi-Fi роутер, к которому вы же и коннектитесь, уже запеленгован, Google и другие уже знают, где ваш роутер географически находится, поэтому... Скрыться не получится: какой-бы роутер не поставили - он будет виден другим телефонам, они об этом сразу сообщат Google, прощай приватность! Разве что не включать Wi-Fi на телефоне и роутере, раздавать Интернет телефону - про проводу (Android и Gnirehtet), и блокировать весь трафик кроме прокси.
    Ноооооооооооооо это не точно!!!
    Ответ написан
    Комментировать
  • После регистрации пользователь в базу таблицы users не попадает..В чем проблема?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как правильно написал Антон, пора знакомиться с таким понятием, как отладка.
    Но дополним его ответ более практическими рекомендациями.

    Во-первых, при создании соединения с БД, надо сказать ПДО, чтобы он сообщал об ошибках.
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    Во-вторых, временно, на период разработки, включить отображение ошибок РНР. Чтобы тупо увидеть, если произошла какая-то ошибка.
    ini_set('display_errors', 1);

    И в-третьих, начать собственно отладку.
    Для начала убедившись, что РНР код в принципе запускается, и проблема в нем, а не в форме.
    Для этого в самом начале action.php пишем большими буквами
    die("пхп хотя бы запустился");
    И если после нажатия на кнопку мы этот текст не увидели, то начинаем тупить в свою форму - а с чего она вообще должна что-то посылать в файл action.php (и попутно задаваться вопросом - а какое отношение наш вопрос имеет к php и sql?)?
    Если форма отправляется аяксом, то смотрим ответ пхп в инструментах разработчика, вкладка Сеть.

    Если обработку формы мы начали, то заезжаем внутрь условия
    die("начали обработку формы");

    И так далее, отслеживаем работу своего кода, выполняется ли он вообще, и содержат ли переменные нужные значения.

    А в целом, конечно, код очень жестокий.
    Вот прямо хочется спросить -
    зачем здесь функция test_input?
    зачем здесь try {}catch (){echo 'Error : '.$e-getMessage();}?
    зачем class Auth extends Database?
    почему showMessage - это часть класса Database? Ну вот серьёзно, каким местом вывод сообщения в браузер в виде HTML хоть как-то относится к работе с базой данных?

    Чтобы сделать этот код минимально осмысленным, надо
    выкинуть класс Database
    в класс Auth добавить
    public function __construct($pdo){
                $this->conn = $pdo;
        }

    и выкинуть из него require_once 'config.php';

    В config.php оставить только соединение с PDO
    в action написать
    require 'config.php';
    $user = new Auth($pdo);

    и выкинуть условие при регистрации, оставив только
    $user->register($name,$email,$hpass);
    $_SESSION['user'] = $email;

    И тогда этот код станет минимально осмысленным
    Ответ написан
    Комментировать
  • Как сделать, чтобы при каждом обращении к РНР скрипту, он выводил по две новые строки из текстового файла?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    shuffle($arr) - перемешивание массива. Если нужно по порядку, то просто убрать это.
    Ответ написан
  • Почему не записываются emoji в базу данных?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Бд mysql wp должна иметь кодировку utf8mb4 (поддерживает хранение символов юникод втч. эмоджи), а вот utf8 в mysql не поддерживает 4 байтные символы, к которым относятся и эмоджи, из за чего они заменяются на знаки вопроса.

    wp-config.php:
    define('DB_CHARSET', 'utf8mb4');
    define('DB_COLLATE', 'utf8mb4_unicode_ci');

    И изменяем кодировку таблицы бд c utf8 на utf8mb4.
    Ответ написан
    6 комментариев
  • Почему при выборке первых трех строк, MySQL просматривает все записи таблицы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    почему этот запрос просматривает так много записей?


    Таков принцип работы у этой СУБД. MySQL сначала выбирает все соответствующие условиям отбора записи, и только потом применяет к ним ограничение количества. Правда, обычно в запросе ещё присутствует и сортировка.

    Подобный подход, кстати, ответственен за то, что при одинаковом количестве отбираемых записей чем больше начальное смещение, тем больше фактическое время выполнения запроса, и на объёмных выборках даже используются специальные методы ускорения работы.

    Мне возвращается первые 3 строки.

    Хочу огорчить. Не три первые, а три случайным образом полученные. Но, поскольку в запросе отсутствуют выражения отбора и сортировки, то записи обычно выдаются в том порядке, в каком они располагаются в кластерном (первичном) индексе. Впрочем, кэширование данных и вымывание их из кэша данными конкурентных процессов могут это изменить.

    Вот, полюбопытствуйте: FIDDLE. Кстати, забавно, что без хинта оптимизатор выбирает вовсе даже не первичный индекс... Более того, в данном конкретном случае этому есть совершенно точное и строгое объяснение - попробуйте его найти.
    Ответ написан
    Комментировать
  • Сколько памяти нужно для cdn?

    @Drno
    Vds??

    Несколько серверных стоек в ДЦ…

    Но по факту зависит от количества юзеров и насколько криво написан софт
    Ответ написан
  • Как в selectRaw в качестве столбца указать 1?

    dima9595
    @dima9595
    Junior PHP
    А вы уверены, что в вашей таблице users есть колонка под названием 1?

    Как в selectRaw в качестве столбца указать 1?

    Название столбцов не должны быть числовыми! Только string!
    Ответ написан
    1 комментарий
  • Проверка диапазона?

    Compolomus
    @Compolomus Куратор тега PHP
    Комполом-быдлокодер
    https://www.php.net/manual/ru/function.ip2long.php
    https://www.php.net/manual/ru/function.range.php
    https://www.php.net/manual/ru/function.in-array.php

    $range = [
        'from' => ip2long('194.125.224.0'),
        'to' => ip2long('194.125.227.255')
    ];
    
    $ip = ip2long('194.125.225.124');
    
    echo ($ip >= $range['from'] && $ip <= $range['to']) ? 'yes' : 'no';
    Ответ написан
    9 комментариев
  • Топ пользователей, и вывод текущего места в профиле, как правильно реализовать в MYSQL + PHP?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Решение на чистом SQL - пронумеровать возвращённые строки через cross join
    SELECT 
    (@row_number:=@row_number + 1) AS pos, 
    `login`, `rating`, `team`
    FROM `users`, (SELECT @row_number:=0) AS t 
    ORDER BY  `rating` DESC 
    LIMIT  100


    Либо вывести вести счётчик при выводе на PHP
    <table style="margin-left: auto;margin-right: auto; margin-top: 20px;">
               <tr><th style="color: black; text-align: center;">Игрок</th><th style="color: black; text-align: center;">Команда</th><th style="color: black;">ROT <i style="cursor: pointer;" title="ROT- Raiting One Tour" class="fas fa-question-circle"></i></th></tr>
               <?php 
    db();
    
    $rait = mysqli_query($db, "SELECT `login`, `rating`, `team` FROM `users` ORDER BY  `rating` DESC LIMIT  100");
    
    if(mysqli_num_rows($rait)) {
    
    $position = 0;
    while ($row = mysqli_fetch_assoc($rait))
     echo '<tr><td>'.(++$position).'. '.$row['login'].'</td><td>'.$row['team'].'</td><td>'.$row['raiting'].'</td></tr>';
    }
                ?>
               
           </table>


    Позиция в рейтинге для профиля = посчитать сколько записей с рейтингом который больше чем текущий рейтинг игрока
    SELECT (COUNT(*)+1) as rating_pos FROM users WHERE `rating` > 'рейтинг_текущего_профиля'
    Ответ написан
    5 комментариев
  • Спрятать RDP сервер... а как?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    Да, это возможно, и делается очень просто.
    Арендуете промежуточный сервер, настраиваете на нем проброс портов на сервер терминалов и все.
    В общем VDS за 200-300рублей в месяц, и три строчки в iptables для проброса портов на нем. Делается за 15минут.
    Никаких прокси, VPN, и прочего городить не нужно совсем в данной ситуации.

    Но я крайне не рекомендую арендовать сервер далеко ибо задержки приличные, работать неудобно. Арендуйте в том же регионе где сервер терминалов.
    Ответ написан
    5 комментариев
  • Спрятать RDP сервер... а как?

    @dronmaxman
    VoIP Administrator
    Что тут сложного? Достаточно 2х правил в iptables. Минус конечно есть - не будет видно IP клиента, на терминальном сервере все будут сидеть с IP VPS сервера (WAN_IP).

    RDP_IP='192.43.76.78'
    WAN_IP='54.23.45.43'
    WAN_INTERFACE=ens33
    SRC_PORT_FORWARD=3389
    DST_PORT_FORWARD=3389
    echo 1 > /proc/sys/net/ipv4/ip_forward
    sudo iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p tcp  --dport $SRC_PORT_FORWARD -j DNAT --to-destination $RDP_IP
    sudo iptables -t nat -A POSTROUTING -d $RDP_IP -p tcp  --dport $DST_PORT_FORWARD -j SNAT --to-source $WAN_IP
    Ответ написан
    1 комментарий
  • Производителен ли запрос лайв поиска на AJAX + PHP + RedBeanPHP?

    @kirill-93
    У вас обычный примитивный поиск. "тяжесть" поиска зависит от размера таблицы, длины поля, индексов и мощности сервера. В целом, если значения в полях короткие, то нормально. Если у вас там тексты, то нужен полнотекстовый поиск (sphinx, elasticsearch).
    Оптимизировать можно следующее:
    1. нужно на стороне клиента тот момент, что сейчас у вас при каждом нажатии клавиши летит запрос. То есть если я наберу слово из 5 букв, то полетит 5 запросов. А нужен один. Используйте для этого тайм-аут. Гуглите js debounce.
    2. Используйте не keyup keydown, а input. Сейчас при нажатии на клавишу у вас летит 2 запроса - при нажатии и при отжатии.

    В каких случаях сервер может лечь? В случае слишком большого количества запросов к этому скрипту. Ну тут стоит отметить, что при большом количестве запросов любой сервер и любой скрипт положат рано или поздно сервер. Тут беспокоиться не о чем.
    Ответ написан
    1 комментарий
  • Какая из IDE для PHP 7 удобнее?

    miraage
    @miraage
    Старый прогер
    PhpStorm.
    Не могу пересесть на другие IDE из-за:
    - автокомплита
    - рефакторинга
    - гибкости/настроек
    - плагинов

    Если работаете по найму и не можете себе позволить лицензию - попросите компанию ее Вам купить.
    500р/месяц в первый год, -20% за второй год, -40% в последующие, если подписка всё время активна - это совсем немного.

    Просто подумайте, сколько денег тратите в месяц на ненужную фигню, типа шоколадок/чипсов/сигарет. Сразу деньги на лицензию найдутся.
    Ответ написан
    5 комментариев
  • Стоит ли лезть на фриланс?

    KlVV
    @KlVV
    битриксоид
    Верстак не джун, не путай, верстак серьезная профессия предполагающая глубокое знание предмета. И еще верстак не прог, это тоже надо знать и понимать. Дорога из верстака в бекенд трудна и извилиста, не говоря уж о дороге из верстака во интерпрайс.
    Если хочешь работать во фрилансе иди и работай. Найди эти копейки на проф аккаунт и начни к N-ному отзыву на заказ добавлять свой N+1, тем более что большая часть из них не джуны а боты. Сбивай цену по началу, работай за 100 рублей, за + в карму. Быстро разберешься что к чему и определишь свою цену.
    Ну а как с учебой совмещать сам решишь, твоя жизнь - тебе жить.
    Ответ написан
    Комментировать
  • Как сделать функционал подтверждения номера телефона?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Принимаете данные формы с телефоном, рисуете форму ввода кода для подтверждения.
    На бекенде генерите некий случайный код, связываете его с введенным номером и помечаете как непроверенный. Через СМС-гейт или сервисы оправки СМС отправляете этот код на телефон. Клиент получив код - вбивает его в форме ввода. Если код совпадает - номер телефона подтвержден.
    Ответ написан
    Комментировать
  • Старт проекта на NodeJS+MongoDB или PHP+MySQL?

    @d-sem
    Если не мучаться с нормализацией данных на входе как в реляционных базах данных, то придется мучаться с ней на выходе. Обратная сторона удобства.

    В целом, итоговая производительность будет больше зависеть больше зависит от качества конкретной реализации, нежели от конкретного стека. У каждого есть куча ньюансов, которые могут создать проблем. Из них низкая сферическая производительность PHP + MySQL на старте - далеко не самая большая проблема.

    Лучше не заниматься преждевременной оптимизацией. Сделать прототип на том стеке, что лучше известен. Уточнить требования и уже дальше решить - стоит оптимизировать или нет. А еще лучше сделать два прототипа и решить, что лучше на практическом сравнении. Практическое же сравнение делать на основании тестов из сформированных требований.
    Ответ написан
    5 комментариев
  • Как средствами PHP конвертировать XLSX большого размера в CSV?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    PHPExcel уже deprecated, есть PHPSpreadsheet, в нем есть небольшая оптимизация для больших файлов (дока).
    Недавно начали рекомендовать box/spout - там меньше функционала, но лучше справляется с большими файлами.
    Ответ написан
    1 комментарий
  • Что такое COM объект, как происходит его разработка, какие особенности реализации COM Microsoft?

    gbg
    @gbg
    Любые ответы на любые вопросы
    1) Еще одна безумная инкарнация попытки микрософта по встраиванию одной программы в другую. До этого были DDE, OLE, ActiveX и прочий зоопарк. Про это даже легенды слагают.

    Сначала были Windows API и DLL Hell. Революцией N1 было DDE - помните, как ссылки позволили нам создавать статусные строки, отражающие текущую цену акций Microsoft? Примерно тогда же Microsoft создала ресурс VERSION INFO, исключающий DLL Hell. Но другая группа в Microsoft нашла в DDE фатальный недостаток - его писали не они!

    2) Долго, мучительно и с кучей копания в дебаггере. Спецификация COM - огромный многостраничный документ, которых вы боитесь.
    3) Они были популярны в 1998 году и около того времени. Тогда даже рабочий стол форточки сделали таковым объектом. За 10 лет популярность пошла на спад, так как оказалось что кроме встраивания экселя в ворд, это все нафиг никому не надо (особенно в ТАКОМ виде), а программы могут общаться между собой не при помощи монструозного бинарного интерфейса с маршалингом, и даже не при помощи километров XML в SOAP, а гораздо более легковесными посылками и обращениями к REST API. Сейчас это чудо можно встретить разве что при работе с DirectX.
    Ответ написан
    6 комментариев