Ответы пользователя по тегу PHP
  • Элементы на php не отображаются на веб сервере в локальной сети. Как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я создал веб-сервер, переместил в папку "htdocs" шаблон сайта
    Код отсутствует, скрин от непонятно чего совершенно лишний и не несет никакой информации. Подозреваю что пути к ресурсам у вас указывают на локальное расположение ресурсов, в то время как для серверного использования нужно указывать пути от корневой папки сервера.
    Это легко проверить, посмотрев куда конкретно идет запрос при "The requested URL was not found on this server".
    Ответ написан
    Комментировать
  • Как скачать видео mp4 по ссылке быстро?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Все работает, но скачивается не очень быстро. Можно ли ускорить как-то?
    Ограничение скорости может быть в двух случаях: 1) Ваш сервер ограничивает входящий поток, 2) целевой сервер ограничивает исходящий поток. В первом случае идти к хостеру и решать вопрос с ним, во втором случае скорее всего только страдать.
    Ответ написан
  • Как выводить предупреждения в php?

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

    Как варианты реализации:
    1) Просто перед обработкой выбираем галочку "убрать все дубликаты", простое и рабочее решение, вы заранее определяете алгоритм обработки и больше ничего не надо делать.
    2) На сервере проходимся по файлу, находим все дубликаты и записываем массив позиций, выдаем человеку этот массив в виде списка галочек, после отправки - удаляем помеченные позиции. Реализация в разы сложнее, но полностью удовлетворяет условию.
    3) Вариант с извращениями - на сервере перебираем файл, при нахождении дубля отправляем клиенту галочку, а в сессию пишем позицию с которой продолжать и завершаем скрипт. По получении запроса с галочкой - продолжаем с той же позиции. Криво, но абсолютно повторяет функционал описанный вами.
    Ответ написан
    Комментировать
  • Как в php преобразовать строку с числом в строку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    '{id}' - всегда равна числу, например 57
    '{id}' - всегда равна строке, так как {57} явно не число, в отличие от 57, не говоря уже о том что это литерал по определению, так как заключен в кавычки. И скорее всего там даже не {57}, а просто {id}, если это не какая-то вьюшка с хитропопым парсером.

    Но если я преобразую строку в integer, то $idlink у меня равен 0.
    читайте документацию, крайне полезная штука.
    Ответ написан
    Комментировать
  • Нужно ли в таких случаях делать защиту от инъекций?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Минусы как бы очевидны:
    нет, не очевидны, по крайней мере миллионам разрабов

    1 Код становится трудно читаем. По месту использования не всегда понятно что имеется ввиду под Order::load() - \Framework\Sale\Order::load или \Vendor\Project\Sale\Order::load - приходится проматывать к верху файла.
    Вам как разрабу должно быть в принципе фиолетово, какой из пакетов используется, если они соблюдают один интерфейс. Если не соблюдают, при том что называются одинаково, значит все пошло не так задолго до проблем с определением пакета...

    2 Код становиться длиннее - там где было бы просто:
    \Framework\Main\UI\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    приходится писать:
    use \Framework\Main\UI\Extension;
    Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    Код становится длиннее в проектах где 2 контроллера и в них по 1 экшену. Там где Extension::load будет вызываться больше одного раза, очевидно экономия на эксплуатации клавиатуры заметно увеличивается. А в больших проектах создание объекта может (и будет) повторяться многократно.

    4 Код становиться замусоренным, так как верхушки файлов запросто превращаются во что-то вроде:
    Если не обращать внимание на отсутствие пункта 3, то... нет, не могу не обращать внимание, вот же торопыга....
    Во первых - данная портянка очень аккуратно прячется любой адекватной ИДЕ,
    Во вторых - это правильно и логично, хранить все импорты в одном месте
    В третьих - если ты пишешь неимпортированный класс в коде - ИДЕ обычно предлагает варианты внесения его в блок импорта, и все выглядит аккуратно.

    И хрен его знает используются импортированные классы ниже ещё или уже нет, ведь никто не убирает этот мусор.
    Хрен не знает, а ИДЕ замечательно знает и даже подсвечивает серым цветом неиспользуемые.
    Ответ написан
    4 комментария
  • Почему запрос в Yii выполняется медленнее?

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

    Ну и в целом, запросы без лимитов и условий практически нигде не используются, по этому странно сравнивать идиотский запрос типа "вытащи мне все что есть в таблице весом в 600 мегабайт" и "покажи первые ндцать записей".
    Ответ написан
    Комментировать
  • PHP Что делать ошибка function foreach() on null?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Очевидно что в переменной $diary ничего нет(NULL), и вы пытаетесь вызвать метод от пустой переменной. Предполагается что для начала нужно создать в ней объект класса Diary.
    Ответ написан
    8 комментариев
  • Нужно ли выполнять асинхронные запросы чтоб ускорить выполнение кода на PHP?

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

    ЗЫ: Встал цыган на цыпочки и цыкнул на цыпленка в цыкле... ))
    Ответ написан
  • Как вставить несколько записей в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    При проверке var_dump($country_id); мне приходит массив с значением NULL
    Ок, а проверить таким же способом $_POST что мешало?

    Путь должен быть от корня сервера, а не просто имя вызываемого файла.

    echo "<option =". $row["id"] . "selected>" . $row["name"] . "</option>";
    Так у вас получается что ВСЕ опции при старте уже выделены... кроме того - откройте код странички и посмотрите что у вас в value попадает, не факт что там есть значения.
    Ответ написан
    Комментировать
  • Как правильно сделать такой поиск?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Учимся думать:
    $search   = _string($_POST['search_string']);
    $sql = '
    SELECT * 
    FROM `chat` 
    WHERE `user_id` IN (
       SELECT `id` 
       FROM `users` 
       WHERE `login` LIKE "'.$search.'%"
    ) 
    ORDER BY `time` 
    DESC '; // делаем запрос отдельной строкой,
    var_dump($sql);
    //вставив в него переменную убеждаемся что там ерунда
    
    //пишем нормально
    $search   = $_POST['search_string'].'%';
    $sql = '
    SELECT * 
    FROM `chat` 
    WHERE `user_id` IN (
       SELECT `id` 
       FROM `users` 
       WHERE `login` LIKE ?
    ) 
    ORDER BY `time` 
    DESC '; 
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('s', $search);
    $chat_result = $stmt->execute();
    while ( $row = $chat_result->fetch_assoc() ) {
        echo $row['user_id'].'<hr>';
    }


    ps: и нет смысла делать серч через пост запрос, лучше через гет, так поисковый запрос можно например переслать или скопировать и переиспользовать.
    Ответ написан
  • Почему не проверяется ответ с сервера JSON?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    dataType: 'text', соответственно сукчес примет данные как текст и никакого объекта со свойством status там нету, проверка даст фалс.
    Ответ написан
    1 комментарий
  • Как грамотно реализовать пагинацию через класс?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Еще раз: Тут нет никакого ооп, у вас получается какой-то процедурный код, засунутый внутрь класса. Это к ооп не имеет никакого отношения. Не пытайтесь сделать деревянную печку, ничего хорошего не получится.
    У вас:
    Код реализует (такой себе) пэйджинг для одного конкретного запроса (нахрена такой пейджинг засовывать в класс?)
    Код ничего не инкапсулирует, тупо выполняется как функция. По сути если мы уберем class Paginate extends Connection{ то ничего не поменяется.
    Внутри методов используются глобальные переменные (GET), что само по себе уже лютый говнокод.
    Много слов про солид и прочие вещи из ооп не пишу, в виду полного их отсутствия в коде, да и смысл?

    По этому решения для вашего случая в контексте ооп просто нет, так как:
    Пэйджинг работает с моделями на основе ОРМ, в пэйджинг в качестве аргумента передается модель, и далее уже пэйджинг работает с моделью, используя ее методы работы с хранилищем, а не просто тупо фигачит запросы. У вас моделей просто нет.
    Модели подразумевают конкретный интерфейс, который позволяет работать с пэйджингом адекватно. Ну и моделей нет ))
    Точкой взаимодействия между моделью и пэйджингом будет контроллер, про который тут вообще у вас никто не в курсе.
    Вывод (view) никогда не пересекается с кодом логики, в него просто передаются готовые данные, после чего они вставляются в нужные точки шаблона.
    Ответ написан
  • Идет ли время куки, когда пользователь на сайте?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1 комментарий
  • Cтоит ли использовать новостной движок CUTENEWS.RU?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Cтоит ли использовать новостной движок CUTENEWS.RU?
    В общем случае - нет, движки без поддержки сообщества и без обновлений по сути бесполезны. По этому какой бы крутой движок не был "внутри", весь смысл в работе на постоянной основе и поддержке, а это без распространенности не бывает. Так что ответ - не стоит.

    Если лучше подключить другой, можете порекомендовать простой бесплатный движок с гайдом подключения?
    Если вы не программист, то скорее всего вордпресс - ваш выбор. Гайды на установку есть как на офф. сайте, так и на миллионе сторонних ресурсов. Очень распространен и имеет большое сообщество, регулярно выходят обновления.
    Ответ написан
    1 комментарий
  • Почему не работает Magnific Popup?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) скрипт инициализации должен вызываться по событию загрузки документа.
    2) для начала уберите параметры и задайте правильный тип, указанный в документации type:'inline',
    3) Проверьте как ведет себя попап элемент, возможно у вас кривые стили, которые работают, но ничего не показывают.
    Ответ написан
    Комментировать
  • Как использовать библиотеку PHP?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $('#btn_submit').click(function(e) {
       e.preventDefault();
        // собираем данные с формы
    Ответ написан
    1 комментарий
  • Почему тормозит код записи в MySQL после разбивки его на функции?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вот к примеру была функция check_category - вообще ничего не записывала:
    $sql = "SELECT category_id,name FROM {$prefixTables}category_description WHERE name='".iconv('UTF-8', 'UTF-8', trim($str['category']))."'";

    $res = $pdo->query($sql);

    while($row = $res->fetch())
    {
    $category_id = $row['category_id'];
    }

    Это вы на каждый параметр делаете проверку таким образом, да? Ну тогда все логично, вместо одного запроса в бд у вас их много, вот и выходит лажа. То что она ничего не записывала не отменяет нагрузку на базу. База вообще самое узкое место практически всегда, по этому в базу нельзя лазить когда вздумается. Сделал 1 раз выборку всех нужных данных и с этим массивом работаешь.
    Ответ написан