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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Давайте обратимся к классикам, например применим метод Ферми для оценки топа посещаемости ресурса. Естественно все приведенные цифры с некоторой погрешностью...

    Пусть в регионе проживает 1КК людей, из которых 20% это несовершеннолетние, 20% это люди пожилого возраста, то есть 2 категории, которые с огромной долей вероятности сервисом пользоваться не будут. Так же, можно сразу выкинуть 15% проживающих за чертой бедности, и еще примерно столько же (15%) находящихся в граничном с бедностью состоянии.

    Из оставшихся 30% (300К)охват рекламой/слухами может составить около 50% в столице, и 30% в области, пусть будет 40% общего охвата, хотя это скорее всего завышенный показатель. То есть в остатке потенциальных знающих о вашем сайте около 130К, причем это цифра не на старте, а примерно спустя пол года-год.

    Предположим что магазин имеет не нишевую специализацию, а достаточно широкий ассортимент, заинтересующий 70% от потенциальных ознакомившихся с ним людей (это оооочень оптимистично, но допустим). Из них 30% "отложат на потом" посещение ресурса, и больше о нем не вспомнят, или зайдут 1-2 раза, что на общую статистику не влияет. В сухом остатке имеем около 40-70К потенциальных посетителей. Предположим, что прошло пол года, и все они равномерно росли до этой цифры, и посещали магазин ну пусть 3 раза в месяц.

    В итоге в месяц будет 70к*3 = 210К визитов, визит примерно из 5-7 страниц, итого = 6*210К = 1 260 000 хитов в месяц.
    Делим на 30 дней = 42 000. делим на 12 активных часов, получаем 3500 хитов в час, 58 хитов в минуту, то есть 1 хит в секунду. В пике пусть будет 6 рпс.

    Вывод: слабенький церлерон и винт на 7200 rpm вполне справится с вашей мегаубервафлей...

    Если ваши цифры не совпадают с моими - просто пересчитайте самостоятельно всю цепочку, будете знать примерную нагрузку.
    Ответ написан
    3 комментария
  • Какие могут быть вероятные причины, когда база данных не выдает ошибок и перестала выводить посты?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    0) Проверить лог ошибок или добавить в код выше
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    и убедиться что ошибок выполнения нет. Естественно, подключение должно быть настроено на вывод ошибок. Так же убрать бессмысленный биндинг $stmt->execute(['id'=>id]);, где внутри даже не переменная, а какая-то фигня...
    1) Проверить запрос в консоли или в phpmyadmin
    2) В случае если запрос ничего не выдает - удалить строки INNER JOIN category ON category.id=post.cat_id, выполнить запрос
    3) Если выдает что-либо, значит таблица с категориями пострадала, проверить выведенные посты на номер категории, и посмотреть что стало с этими записями в таблице category.
    4) Если не выводит - повторить пункт 3 со строкой INNER JOIN users ON post.user_id = users.id, со всеми вытекающими.
    Ответ написан
    6 комментариев
  • PHP не видит директорию?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Пути прописаны верно.
    Я сомневаюсь, так как маловероятно что код работает неверно, 99% что ошибается пользователь/кодер, особенно в вопросах прописывания пути...
    ок, давайте так:
    Как вы задали путь? Код в студию.
    Что выдает var_dump(__DIR__); в index.php?
    Где реально лежит перенесенная папка, и как вы проверяете is_dir($path), что попадает в $path?.

    PS: Как уже написали в коментах - у вас может быть заблокирован доступ к директориям выше document_root, что лечится настройками пхп.ини или переносом папки в доступные директории.
    Ответ написан
  • Почему некорректно работает форма обратной связи?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var_dump($_POST);
    Например сразу будет понятно что $_POST['phone'] у вас будет не $_POST['phone'], судя по коду
    <input type="text" id="phone3" placeholder="Введите телефон" name="telephone" required="" class="input1">
    Ответ написан
    Комментировать
  • Как правильно организовать таблицы?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Я так понимаю, клиентов у вас в год копится больше чем позволяет проиндексировать int?
    Тогда во первых поздравляю со столь успешным бизнесом.
    Во второых - чем обусловлено такое гениальное решение (ну, кроме незнания о существовании bigint)?
    Ну и в третьих - при таких оборотах можно было бы позволить себе нанять нормального программиста, или даже архитекта...
    Ответ написан
  • Как через ajax получить ответ из страницы php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для аякса предусмотрены колбэк функции, в частности онсаксесс(дата), где в "дата" попадает ответ сервера. То есть код в этой функции будет вызываться в случае успешного выполнения скрипта на сервере (статус 200). Пишете там свое изменение статуса корзины и все, профит.
    Ответ написан
    4 комментария
  • Почему не работает скрипт у определенных пользователей?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - что за гениальная идея с интервалом?
    Во вторых - для манипуляций с ДОМ элементами надо дождаться загрузки документа целиком, в жквери даже специальная финтифлюшка есть для докумекнт реди.
    Ну и в третьих - ошибки в консоли какие?
    Ответ написан
  • Как можно сделать свою систему проверки на плагиат на сайт?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Теперь вопрос можно ли написать свою систему плагиата
    Можно, разрешаю, пишите. А если серьезно - аналитическая составляющая такого продукта будет стоить как отдельный маленький гугл. Не считая вычислительных мощностей и сложности самого кода, там еще и база статей и текстов с полноформатным аналитическим поиском должна быть, а ее надо еще откуда-то взять, что тоже весьма нетривиальная задача. Про размер этой базы и стоимость хранения я вообще молчу. А ее еще и поддерживать в актуальном состоянии нужно...

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

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Как сделать поиск максимально производительным?
    Вопрос из серии "какая машина самая крутая?". Нет решения которое подходит под любой вариант базы и структуры, иначе все только одним им и пользовались, логично?

    Есть несколько больших postgresql таблиц(по ≈ 1млн строк в каждой).
    Это таблицы среднего размера, ничего большого в них нет. Миллион записей это средняя таблица со статистикой, все должно работать достаточно быстро и без каких-то особых танцев.

    Пользователь вводит номер, ему выдаётся инфа из бд.
    Ну так сами пробовали сделать 20-30 рандомных запросов и посмотреть скорость, explain, использование индексов? Или мы "боимся заранее"?

    Что использовать? Асинхронность? Многопоточность?
    Мозги, используйте мозги, это гораздо эффективнее...
    Ответ написан
    Комментировать
  • Как решить задачу по изменению элементов JS c помощью input?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Включаем цыганскую магию:
    1) Листенер вешаем на ul
    2) При событии проверяем евент таргет, если это li, то делаем грязные цыганские штучки с текущим таргетом (все что у вас там срабатывало по клику на ли).
    3) Профит, вы прекрасны, идете пить кофий с круассаном...
    Ответ написан
    Комментировать
  • Разрешить доступ к сайту только с определенной страны?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Как получить нужные id из mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) поле id обычно используется для обеспечения уникальности данных на уровне строк. Если у вас там не уникальное значение, желательно использовать другое название. В идеале должно быть и уникальное `id` и кастомное `чтототам_id`...
    2) Rsa97 уже написал все ключевые функции для решения данной задачи. В принципе достаточно по ним загуглить...
    Ответ написан
    Комментировать
  • Как реализовать ответы к комментариям?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Как совершенно справедливо заметил Akina, единственно что отличает ответ от корневого коментария - наличие родителя. По этому нет смысла плодить сущности, надо просто добавить одно-два поля. В зависимости от вида коментариев - 1 ветка(как на вк например) или ветвление (как на хабре), структура хранения может немного отличаться, но в целом это просто будет набор комментов, с указанием родителя (если родитель_айди = 0 или = айди, в зависимости от логики, то это корневой комент). Для разветвленных коментариев удобно добавлять айди ветки, по которой они будут группироваться, для 2 уровней это поле избыточно.
    Ответ написан
  • Как клиенту самостоятельно менять фотографии в документе PDF?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Клиент не умеет пользоваться чем то, что сложнее Adobe Acrobat
    Во первых - ворд как самый простой вариант, умеет сохранять в пдф. Делаете шаблон документа - сохранить как - пдф - профит.
    Если это не подходит - можно накалякать страничку хтмл + 2 скрипта, открыть в хроме - печать - в пдф - профит.
    Ответ написан
    Комментировать
  • Почему проблемы с пробелами в списках ckeditor?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    разные цсс? Что мешает взять мышку, тыкнуть правой кнопкой->инспект и посмотреть чем отличаются 2 разных куска хтмл и добавить нужные цсс в админке?
    Ответ написан
  • Как внести в бд данные из формы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Конечная формулировка вопроса такая: как отправить данные из формы в php-скрипт,
    у формы есть атрибут action, отвечающий за урл на который будут отправлены данные. Достаточно нажать кнопочку субмит.

    в написании самого скрипта вроде ничего сложно нет.
    Как всегда, дьявол кроется в деталях...
    Ответ написан
    Комментировать
  • Как правильно заменить текст в html?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    По ходу решения - самое простое решение - регулярки.
    Что-то типа: /(<script.*-(1|2)\.gif.*<\/script>)/gsU и использовать в preg_replace.
    Ответ написан
    Комментировать
  • Почему не приходят письма php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Отправка почты через дефолтный mail() глупая затея. Во первых, на продакшн сервере будут совершенно другие настройки почтового сервера, и не всегда их можно поправить и не всегда они подходят для нормальной работы.
    Во вторых, вы не контролируете из кода процесс отправки, а только передаете серверу задачу на отправку, после чего полномочия пхп все... То есть отладка или выявление проблемы становится в разы сложнее, если вообще возможной.

    Для нормальной отправки, а так же для контроля над всей цепочкой передачи сообщения, используются готовые протестированные и настроенные библиотеки, тот же phpMailer или Symfony Mailer, или любой другой настроенный инструмент для отправки почты. Все они обладают широким функционалом настройки, простым интерфейсом и понятной отладочной информацией. Тот же phpMailer в вербоуз моде расскажет вам все что происходит при соединении и отправке сообщения со всеми подробностями.
    Ответ написан
    Комментировать
  • Не могу авторизоваться, почему?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    так, давайте по порядку:
    login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);
    $pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING);
    Во первых - зачем? Вы здесь не вносите никаких данных в систему, вы просто проверяете данные от пользователя с данными в бд.
    Во вторых - если у вас есть правила для логина и пароля - надо их и применять, а не втыкать абсолютно бесполезные фильтры.

    $pass = md5($pass."ghjsfkld2345");используйте встроенные функции, password_hash и password_verify для работы с паролями.

    $result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass '");
    Читаем про подготовленные выражения. Без них рано или поздно словите инъекцию. И начинать надо сейчас, на этапе обучения, и привыкнуть что по другому с переменными в запросах не работают. Так же, по уму подключение желательно вынести отдельно и добавить настройки. Рекомендую использовать PDO драйвер подключения к бд, он работает чуть быстрее и по функционалу побогаче.

    Warning: count(): Parameter must be an array or an object that implements Countable in D:\OSPanel\domains\Site1\auth.php on line 14
    по тому что читаем доку -
    fetch_assoc — Fetch the next row of a result set as an associative array
    Соответственно, если запрос пустой, то фетчить нечего. Для проверки существует num_rows.

    Выводит: "Такой пользователь не найден." Но в БД такой пользователь есть зарегестрированный, все данные авторизации правильные, а он выводит, что нету такого пользователя.
    Программу не на*бешь. Если говорит что нету, значит нету. А если не находит то что есть, значит вы не правильно ищете, что легко проверить. Вангую что запрос будет совершенно не таким как вы ожидаете:
    ...
    $query = "SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass'";
    var_dump('check: ',$login, $pass,$query); 
    $result = $mysql->query($query);
    ...


    UPD: абсолютно верно подмечено Adamos - `pass` = '$pass ' никогда ничего не найдет из-за пробела в условии.
    Ответ написан
    Комментировать
  • MySQL. Поиск в Базе данных по одному параметру?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - научитесь разделять код и представление, винегрет из кода и разметки не то что отлаживать, читать тяжело.
    Во вторых - $result полученный в первом куске вы нигде не используете, ни в выводе, ни в вычислениях.
    Ну и в третьих - в последнем куске вы затираете ранее полученный результат выборки, так что смысл в первой выборке полностью теряется.
    Ответ написан
    Комментировать