Ответы пользователя по тегу PHP
  • Как правильно сделать get запрос?

    Acuna
    @Acuna
    Заполнил свой профиль
    Мой коллега хочет сказать, что эта ошибка говорит о том, что он не может найти файл expample.php) Во первых, судя по всему, он пытается найти его в папке testajax, но его там нет. Скорее всего он лежит где-то в другом месте. Если уж используете относительные пути к файлам, то кладите их в ту же папку, где у Вас лежат html-файлы, в которых Вы будете выполнять код. Однако чтобы такого не было - всегда (всегда!) указывайте абсолютные пути к файлам. Иначе если Вы перенесете какие-либо файлы в другое место - у вас может все перестать работать, ибо скрипт будет искать файлы в папке с самим собой, где их уже давно нет.
    Ответ написан
    Комментировать
  • Пишу приложение на PHP, подкинете идею, что можно еще добавить?

    Acuna
    @Acuna
    Заполнил свой профиль
    Ну наконец-то растет поколение, которое учится программировать не в теории, а на практике! Неужели я этого дождался, неужели? Отличное начинание!)

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

    Хотя я-бы рекомендовал начать с проекта, а потом уже с админки. Просто чтобы ее писать, нужно вообще хоть самому знать что это за проект вообще, чтобы потом уже в нее нужные фишки добавлять.
    Ответ написан
    2 комментария
  • Как вставить свой путь к файлу в document.documentElement.innerHTML?

    Acuna
    @Acuna
    Заполнил свой профиль
    Дак в чем проблема? Аяксом вызываете какой-нибудь файл (на php), передаете в него нужные параметры (если хотите), подвешиваете колбек и в его теле уже обрабатываете какой-нибудь тег на странице и в нем выводите содержимое этого файла:

    $.ajax ({
      
      'method': 'get',
      'url': 'http://ваш_сайт/my-file.php',
      'data': { массив параметров по желанию },
      'success': function (content) {
          $('#mytag').html (content);
      },
      
    });

    Предварительно вставьте на страницу код вида

    <div id="mytag"></div>

    А в my-file.php уже суйте highlight_file () или что вам нужно через echo. JS - это просто прокладка, он сам ничего не получает, он может только содержимое колбека всунутого в него получить.
    Ответ написан
    Комментировать
  • MYSQL REGEXP. Как экранировать символ "["?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вы были всего в минуте от решения: по некоторым историческим причинам слеша должно быть два :/

    str_replace ('[', '\\[', $query)
    Ответ написан
    4 комментария
  • Я хочу хорошую библиотеку на PHP для MySQL. Я зажрался, или такое есть и активно используется?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вы не поверите, но существует PDO, это и есть та библиотека, которую Вы и хотите: php.net/manual/ru/intro.pdo.php Умеет даже SSL. Притом абсолютно дефолтная. И не благодарите)
    Ответ написан
    4 комментария
  • Почему file_get_contents не получает по ftp содержимое файла?

    Acuna
    @Acuna
    Заполнил свой профиль
    Главная ошибка разрабов в том, что они знают только file_get_contents и пытаются им сделать все, вплодь до cURL. Пользуйте стандартные инструменты для работы с FTP: php.net/manual/ru/book.ftp.php, там и контроль ошибок есть, и сертификаты, и все что нужно. И да, в отличиии от file_get_contents они скажут что не так.
    Ответ написан
    Комментировать
  • Как сделать проверку пустого поля в таблице mysql php?

    Acuna
    @Acuna
    Заполнил свой профиль
    if ($_GET['do'] == 'catalog' and isset ($_GET['company'])) {
    
       $id = (int) $_GET['company'];
    
       $query = "SELECT * FROM `organizations` WHERE `id` = '".$id."' LIMIT 10";
    
       $res = mysqli_query ($query);
    
       while ($row = mysqli_fetch_assoc ($res)) {
         
         if (!$row['site'])
         echo 'Нет';
         else
         echo 'Есть';
         
       }
      
    }


    Конструктивные замечания:

    1) (int) работает быстрее, чем intval ()
    2) Достаточно просто проверять переменную на ложность, а не на пустоту, ибо там может храниться все что угодно, не обязательно пустота.
    3) Поля и колонки должны быть в кавычках.
    4) Фигурные скобки не обязательны, если проверяется всего одно условие.
    5) Пользуйтесь переносом строк. Всегда. Это улучшает читаемость кода.
    6) Слова "Нету" не существует.
    Ответ написан
    1 комментарий
  • Сайт на Java Script или PHP?

    Acuna
    @Acuna
    Заполнил свой профиль
    Чем JS серьезнее PHP? Что умеет JS из того, что не умеет PHP? Если Вы не сможете ответить на этот вопрос (внятно, невнятно, хоть как-то), то JS Вам совершенно не нужен.
    Ответ написан
    Комментировать
  • Какая бд выдержет нагрузку в 10к запросов в минуту?

    Acuna
    @Acuna
    Заполнил свой профиль
    Позвольте-с, а чем Вы руководствовались, решая, что "mysqli использовать смысла нету в наше время"? Сам MySQLi альтернативы не имеет в рамках выполняемых им задач, может быть Вы имели вообще NoSQL-решения? Тогда да. Только это разные вещи. Все, что Вам предлагают в комментах - это SQL-решения. Просто реально интересны мотивы, когда списывают нормальные технологии по незнанию. Это как переписать проект на объектах на процедуры, располагая только неверно страктованным утверждением, что это прибавляет производительности.
    Ответ написан
    Комментировать
  • Ошибка с пробелами?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вы не написали что за двиг у сайта, самопис? Часто фильтруют содержимое массива $_GET, убирая из него все ненужное, чтобы инъекции в него не сували. Возможно под одно и $_POST у вас фильтруют, но как-то криво. Либо еще какой-то плагин перехватывает и отрезает все. Но что-то определенно должно ее ломать, сама себя сломать она не может, суперглобальные массивы - это просто массивы, они просто содержат данные, которые уже используют скрипты. Введите свой код в самом начале сайта (прям в index.php), если выводится чистое значение - значит опускайте дальше и снова проверяйте, пока не найдете что лее ломает. Только так. А кому сейчас легко?)
    Ответ написан
    Комментировать
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    Acuna
    @Acuna
    Заполнил свой профиль
    Совсем по мелочам если - все переменные можешь ввести в одном типе через запятую:

    private $name, $password, $code, $mail;

    Для работы с БД (любыми) нужно пользовать готовые библиотеки, свои или сторонние. Они регулярно развиваются и поддерживаются, не нужно городить свои велосипеды. Это же касается и работы с мылом, для него в PHP имеется мощнейшая библиотека phpmailer.
    Остальное все коллеги более чем подробно расписали, нет смысла повторяться.
    Ответ написан
    Комментировать
  • Какие есть книги хорошие книги на английском языке по программированию PHP + MySQL?

    Acuna
    @Acuna
    Заполнил свой профиль
    Писал тут уже по этой теме не один раз. Книги Вам мало чем помогут, ибо в любом случае самый эффективный способ разучивания языка (любого, не обязательно программирования) - это практика. Много. С параллельным штудированием php.net. Сей ресурс должен быть Вашей настольной книгой. И так как практики должно быть не много, а очень много - займитесь разработкой сложного проекта. Да, прям так сразу. Постепенно учитесь писать интернет-магазин, полноценный торрент-трекер, а лучше сразу свою CMS. Качество кода Вашей поделки оставит желать лучшего, да и скорее всего Вы никогда даже не выкатите ее в продакшн (хотя свою CMS я все-таки выкатил, когда писал ее все свое время учебы в универе), постепенно Ваш опыт будет расти и Вы будете только и заниматься ее рефакторингом, да и ценность она будет иметь разве что историческую, однако все это даст Вам ценнейший и не сравнимый ни с чем опыт программирования в бою. А там уже и работать сможете идти после этого. А теория без практики мало чем ценна. Наглядный пример - лекции в универах. Какие у нас теперь специалисты? Вот-вот.
    Ответ написан
    1 комментарий
  • Будет ли работать mysql с нагрузкой примерно триллион записей?

    Acuna
    @Acuna
    Заполнил свой профиль
    Если у Вас чисто теоретический вопрос - тогда так и отвечу без конкретных реализаций))) Работать будет относительно быстро, если регулярно осуществлять партицирование или сегментирование (почитайте в интернетах, очень полезная вещь даже для небольших БД). В кратце - это разделение всей БД по партициям, с которыми мускулу намного легче работать, чем с одной крупной БД. Сам мускул предоставляет отличные инструменты для этого. Более того, он сам определяет в какой партиции хранятся нужные данные уже в момент запроса. Так же при этом не накладывается совершенно никаких ограничений в работе с джоинами и индексами. Единственный минус заключается в том, что его нужно осуществлять вручную. Хотя для этого достаточно запускать простенький скрипт на кроне, который будет выполнять около сотни запросов партицирования всего раз в месяц. Нагрузки он этим почти не создаст, однако сам мускул Вам будет очень благодарен, что вы разгружаете его от ненужной работы по тасканию тяжеленных баз. Еще иногда с связке с ним реализуется шардинг, когда автоматически создается новая таблица в БД, когда в старой накопилось какое-то количество записей (как правило 10 000), c именами table1, table2, table3 и т. д. В этом случае разные БД можно вообще разнести по разным серверам, однако в большинстве случаев из-за некоторых субъективных факторов его реализация как правило неосуществима, поэтому в большинстве случаев повсеместно используется партицирование.
    Также, как уже было сказано ранее - неизвестно, в каких условиях будет пользоваться Ваша БД: если запросов на добавление больше, чем на чтение - нужно пользовать MyISAM, иначе InnoDB, разница замечается. Сильно.
    Ответ написан
    Комментировать
  • Php cms для самоучки реально?

    Acuna
    @Acuna
    Заполнил свой профиль
    Я поступил по-другому. Еще на заре понадобилось создать сайт для своей семьи (еще до Контакта), стал подбирать себе довольно сложную, но одновременно простую в использовании CMS. Остановился на DataLife Engine (вроде до сих пор выпускается), из-за того, что для нее выпускалось просто огромное количество дополнительных модулей. И да, она была очень логична в плане юзабилити. Так как из себя самой она представляет только новостной модуль и подходит разве что для какого-то варезника 2000-х годов, пришлось устанавливать эти модули, постепенно превращая свой сайт во что-то действительно дельное. В установке этих модулей был один важный нюанс: это все делалось вручную путем правки ее исходного кода. Поэтому постепенно за несколько лет неспешной доработки моего сайта я перелопатил ее код вдоль и поперек и благодаря этому получил довольно неплохие знания в PHP. После этого я понял, что ее код не слишком-то и масштабируем и решил писать свою CMS c нуля по той логике, которая была заложена в DLE. Как оказалось в дальнейшем, ее код просто идеально подходил для создания клонов CMS на ее основе: это полноценный ООП, однако он не содержит зубодробильных паттернов с кучей уровней абстракции, о которые сломает ноги даже опытный разраб. И вместе с этим я внимательно изучал для чего нужна та или иная функция, которую я встречал в коде, пользуясь поиском по php.net, например: php.net/manual/ru/function.str-replace.php. В итоге весь процесс занял порядка двух лет, но он был очень интересен тем, что содержал в себе не сухую, оторванную от жизни теорию, а 90% применимой в реальной жизни практике, поэтому оно было настолько эффективно и интересно. Очень рекомендую мой опыт для обучения)
    Ответ написан
  • Как запустить curl команды на PHP?

    Acuna
    @Acuna
    Заполнил свой профиль
    Есть встроенные команды, не стоит городить велосипеды.

    $ch = curl_init ();
    
    curl_setopt ($ch, CURLOPT_URL, 'https://api.github.com');
    curl_setopt ($ch, CURLOPT_USERAGENT, 'cURL/php');
    curl_setopt ($ch, CURLOPT_USERPWD, 'login:password');
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    
    echo curl_exec ($ch);

    А так, коллеги кидали ссыли выше. Тут подробнейший мануал по опциям: php.net/manual/ru/function.curl-setopt.php. Все что хотите)
    Ответ написан
    22 комментария
  • Как правильно использовать $bd в ООП?

    Acuna
    @Acuna
    Заполнил свой профиль
    Все просто. Вы немного запутались в областях видимости)

    class MyClass {
      
      private $f3, $db;
      
      function __construct () {
        global $f3, $db;
       
        $this->f3 = $f3;
        $this->db = $db;
        
      }
      
      function MyFunc () {
        $this->f3->somebody ();
      }
      
    }
    
    $obj = new MyClass ();
    Ответ написан
    Комментировать
  • Как научиться писать такой ООП код?

    Acuna
    @Acuna
    Заполнил свой профиль
    Коллеги вверху правильно ответили, что не стоит так усложнять код кроме разве что академического интереса. Задание по вашей ссылке можно было бы уместить в одну простую функцию и не городить из этого целый движок. Проблема не в ООП, он очень нужный и классный (серьезно), однако проблема в том, что его часто суют где только можно, но где это совершенно не нужно. Можно и гвозди унитазом забивать, только зачем?
    Ответ написан
    Комментировать
  • PHP и UTF-8 всё таки жизнь возможна или нет?

    Acuna
    @Acuna
    Заполнил свой профиль
    Смотрите в сторону mb_* функций. Все уже создано за Вас, разжевано и положено в рот. Разве что Вашу функцию нужно доработать:

    <?php
    
    function mb_str_split ($string) {
    
        $array = array ();
        $strlen = mb_strlen ($string);
    
        while ($strlen) {
    
            $array[] = mb_substr ($string, 0, 1, 'UTF-8');
            $string = mb_substr ($string, 1, $strlen, 'UTF-8');
            $strlen = mb_strlen ($string);
    
        }
    
        return $array;
    
    }
    
    ?>


    И не надо ничего конвертировать, это от нежелания решать проблему.
    Ответ написан
    Комментировать
  • Нормально ли такое тестовое задание?

    Acuna
    @Acuna
    Заполнил свой профиль
    Я же о нем ни нашел ничего. Только пару ссылок на сайтах типо Кубач или Онлайн файтинг (по его почте вычислил).

    И только 2 встречи в гугле
    minecraft-statistic.net
    DC Universe Online

    с фото пьяного молодого человека на выпускном

    Особенно обратите внимание на название сообществ в Гугле. И Вас по прежнему ничего не смущает?) Задание не сложное, странного ничего нет, код не просят. Однако не смущает ли дальнейшая работа с таким человеком? И куда Вас, кстати, приглашают? В Яндекс?)))
    Ответ написан
  • Как увеличить скорость загрузки сайта?

    Acuna
    @Acuna
    Заполнил свой профиль
    И социальные кнопки убери, они у тебя люто грузят все. Сейчас от серверов Яндекса пинг большой идет уже несколько недель...
    Ответ написан
    Комментировать