Задать вопрос
Ответы пользователя по тегу PHP
  • Почему Open Server пишет, что $_POST не существует?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    почему вы квадрат так странно назвали? А 3д куб думаю можно через канвас, например вот с библиотекой Three.js.
    Ответ написан
    Комментировать
  • Прошу взглянуть на мой код и подсказать где я возможно не прав?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <input type="file" name="avatar" accept="image/gif, image/jpeg">
    облегчает человеку выбор верного формата

    if(isset($file))не гарантирует что файл загрузился, по этому нужно проверять еще и еррор, перед тем как передавать несуществующие свойства в функцию

    $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    ваще жесть, про хэш не слышали? Тем более еще и в разных регистрах называть файлы...

    В остальном обычный такой код из начала нулевых, пхп4 и вот это все...
    Ответ написан
    Комментировать
  • Как сделать ссылку со словами из заголовка?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Это называется slug, простейший метод - использовать класс Transliterator и preg_replace + strtolower для нелитералов.
    Ответ написан
    Комментировать
  • Долгий ответ сервера на Opencart в 5000 мс?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Без навыков и подтираться то не выйдет... Просто кнопки "сделать хорошо" там нету. Нужно проверить бд на наличие необходимых индексов, а по уму еще сначала тайминг кода с отсечками до/после запросов/циклов/критичных участков. Так что просто "стукнуть сервер посильнее" не прокатит.
    Ответ написан
    Комментировать
  • Почему из MySQL базы данных не выводится login?

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

    и в обратном порядке для чтения:
    а) Загрузить класс объекта который вы будете получать (иначе магии не получится)
    б) Десериализовать из сессии и добавить в объект все ссылки на нужные ресурсы, например ссылку на объект бд.
    Ответ написан
    Комментировать
  • Многомерный SimpleXMLElement object в массив php - как?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Классическое решение прям с мануала:
    $xml = simplexml_load_string($xmlstring);
    $json = json_encode($xml);
    $array = json_decode($json,TRUE);
    которое имеет однако несколько побочных эффектов, например не видит [CDATA[ ]] ноды или видит как пустые элементы...
    Ответ написан
  • Как проще написать удаление пробелов, тегов, и преобразование в нижний регистр?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    во первых - загадочная строка с $arr = str_replace('/\s/','',str_split($pin)); будет работать весьма неоднозначно, хотя бы по тому что str_split() не поддерживает работу с мультибайтовыми кодировками. Во вторых она там конечно же нафиг не нужна, так как str_replace() работает со строками в третьем аргументе, но зато не работает с регулярными выражениями в первом, по этому эта строка у вас вообще никак не работает. В остальном все вполне в лучших традициях бредогенераторов.

    Коротко: Если у вас есть поля определенных типов - проверяйте их отдельно на совпадение нужным типам, для этого есть фильтры и хелперы. Экономия на буквах была актуальна в 17 веке, когда бумага дорогая была.
    Ответ написан
    Комментировать
  • Как в кусок кода интегрировать дополнительный кусок правильно?

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

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

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

    В обоих случаях у вас не нужна никакая функция send(), достаточно повесить на документ слушатель субмита формы, и уже в нем отправлять аякс запрос со всеми данными текущей формы. И не надо никаких подстановок.
    Ответ написан
    Комментировать
  • Откуда php сервер берет информацию?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я включаю свой встроенный сервер
    это какой и во что он встроен у вас?

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

    Что можно сделать в данной ситуации?
    Практически все "встроенные сервера" имеют файлы конфигурации, позволяющие настроить как основной document root, так и "алиасы" - много доменов на одном сервере, каждый со своим document root. Смотрите настройки для своего "встроенного сервера".
    Ответ написан
  • Как исправить ошибку конфигурационного файла PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Нет времени на установку скриптов, или что то не получается? Мы установим, и настроим все за тебя, за дополнительную плату. Писать Вконтакте по ССЫЛКЕ. Посмотреть отзывы можно по ссылке.
    Услугу предоставляет Администрация сайта VipAdmin.Club
    Там же все четко написано, че вы тупите то...
    Ответ написан
    3 комментария
  • Обработка ajax запроса?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    нужно при клике на чексбокс ajax-ом получить/фильтровать товар, который выводи этот файл Product.php
    1) Чекбоксы что у вас фильтруют?
    2) В Product.php нет функционала, учитывающего более одного параметра, и то - только категорию.

    не понимаю как в обработчике ajax запроса, взять эти данные
    Плохо, значит пока еще слабо знаете свою предметную область. внизу вашего вопроса есть пример, эти данные там есть, что с ними делать зависит от того что нужно получить.

    надо ли обращаться к этому файлу Product.php
    В представленном виде он бесполезен для вашей задачи, нужно писать метод получения списка из произвольных параметров. Потом сформировать из списка хтмл с готовыми блоками и отдать его (сделать echo) обратно. Только в аяксе надо будет заменить dataType: 'html'
    Ответ написан
    3 комментария
  • Как создать свойство внутри метода?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1. Делают ли так?
    Делают, но это не хорошая практика. Во первых имеете шанс затереть какие-то настроечные данные объекта и получить непредсказуемость поведения. Во вторых, если у вас там значения из бд или другого хранилища в формате ключ-значение, лучше хранить их в отдельном поле, том же дата, но в виде stdClass, чтобы не путать их при работе с хранилищем с остальными полями, например так:
    public function setData(array $data):void{
      $this->data = (object)$data;
    }

    в идеале у вас должен быть DTO (data transfer object), но в актив рекорд движках он обычно не используется.
    Ответ написан
    4 комментария
  • Как сменить название каталога/файла на сервере при запросе?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для апача называется mod_rewrite, для нжинкса используется другая директива (лень искать, гугли).
    на сервере site.ru/cp/admin.php, чтобы в браузере на самом деле отображалось site.ru/cp/panel (грубый пример).
    Для этого еще нужно обрабатывать скриптом, или писать отдельные правила серверу на каждый чих. То есть либо единая точка входа и роутер, либо жесткие правила в конфиге сервера.
    Ответ написан
    Комментировать
  • Как создать квиз с отправкой ответов пользователя на почту?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Плохо ли так выводить html?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В целом - дело вкуса, можете вообще heredoc использовать. Я предпочитаю второй способ, в частности:
    1) редактор понимает стили и форматирование
    2) редактор понимает открытие/закрытие тегов
    3) редактор умеет фолдинг хтмл кода, что удобно
    4) меньше ошибок с кавычками и экранированием

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    А можно в двух словах логику реализации по шагам? А то код больше похож на письма обкуренного Шляпника...

    UPD: eliz_min, ну, вы конечно дополнили, но логику так и не проследил, ну да ладно... по шагам что-ли...

    1) код должен быть понятным и простым, так же желательно a) использовать реальные и логичные английские термины и слова (которые не знаешь - гуглишь), b) все данные готовить заранее, c) для поиска в базе неточных словоформ искать через like, d) в идеале использовать подготовленные выражения (я здесь оставил как есть, почитайте и примените самостоятельно), e) поля в бд обычно называются в нижнем регистре, разделители слов - андерскор (с разделителем все ок, поля надо нормально назвать), f) имена полей и таблиц желательно обернуть `` - обратными кавычками
    $name = mysqli_real_escape_string($link,$_POST['name']);
    $sql = "SELECT `product_id`, `calorie` 
    FROM `product` 
    WHERE `name_of_product` like'%{$name}%' 
    LIMIT 1";
     $query = mysqli_query($link, $sql);
    $data = mysqli_fetch_assoc($query);
    ок, тут мы (возможно) получили ид и количество калорий от еды с названием которое пришло постом...

    2) далее интереснее...
    пользователь вводит название продукта, который он употребил и ему выводиться сумма калорий за сутки.
    Как человек поверхностно знакомый с диетическим питанием, подозреваю что "я съел сыр" и "я сожрал 2 кило сыра" не всегда одно и то же. понимаете к чему я клоню?
    На данном этапе создана база данных с продуктами и таблицей употребленных, в которой находится id юзера,id продукта и время.
    Чего-то не хватает, вам не кажется? Ладно, едем дальше...

    3) и тут же на первой строчке у нас все становится очень интересным, я бы даже сказал что тут Шляпник особо глубоко затянулся... :
    if($data['Name_Of_Product'] === md5(md5($_POST['name']))) {...
    итак, учитывая что никакой Name_Of_Product мы в запросе не просили выбрать, естественно что тут уже будет лажа, однако далее еще интереснее: md5(md5($_POST['name'])), загадочные шаманские вуду пляски, видимо чтобы этот кусок кода внутри условия ТОЧНО никогда не выполнился. Вообще хотелось бы услышать, каким образом этот код пришел вам в голову и что он по вашему должен делать? Так, чисто понять как работает причудливый разум...

    4)
    mysqli_query($link, "INSERT INTO comsume (Id_p)VALUES ($data['Product_id'])");
    ...в которой находится id юзера,id продукта и время.
    но вносите вы почему то только ид продукта, кроме того, как я уже говорил - "чего то не хватает" )
    Ответ написан