Ответы пользователя по тегу PHP
  • Почему на php криво выводит из файла?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Почему на php криво выводит из файла?
    Думаю, что это не PHP так криво выводит, а Ваш браузер так криво отображает, т.к. русские буквы не той кодировке, в которой работает браузер. Попробуйте изменить кодировку в браузере на ту, в которой сохранен файл, который Вы читаете с помощью PHP.

    P.S. Так же, если у Вас в качестве веб-сервера, на котором это тестируется - Apache - в нем можно задать кодировку через файл .htaccess, расположенный в корне сайта (создать новый или добавить эту строчку в уже существующий), подробности описаны тут.

    А так же можно воспользоваться PHP-заголовком, или попробовать отправить в браузер мета-тег с кодировкой, как обсуждалось тут.
    Ответ написан
    Комментировать
  • В json ответе ковычки нужно декодировать в PHР?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как видите в provider имя банка в кавычках и из-за этого рушится JSON Как быть?
    а) Оптимально - Попросить того, кто писал удалённый сервис - исправить столь явный баг кодирования в JSON и намекнуть ему, что если он сам не может сделать нормально - пусть воспользуется готовыми библиотеками.
    б) Костыль - примерно такой:
    $json_string = str_replace ('""', '\"\"', $json_string)
    Ответ написан
    6 комментариев
  • Как излечить сайт от вируса?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Стал смотреть что изменилось, файлы темы такие же, сравнил базу - такая же, зато много новых непонятных файлов в файлах вордпресса, измененный htaccess который редиректит на внешние ресурсы
    Я бы для этого порекомендовал воспользоваться GIT'ом или другой VCS, сможете отследить изменения "до буквы".

    Хочу выяснить почему приходит вирус
    По тому, что это его обязанность - приходить. Вирус, он как налоговый инспектор, хочешь/нехочешь - а всё равно придёт.

    смена базы и темы ничего не меняет
    А должно, смена темы, как минимум - должна менять тему.

    Взял другой хостинг , залил исходный вариант сайта туда - прошло несколько дней и он целый и невредимый. неужели дело в хостинге?
    Возможно в хостинге, возможно в том, что кто-то хранит пароли от FTP не надёжно. Возможно в том, что взломали соседний сайт, а у Вас где-то стоят права "777" что позволяет заливать файлы Вам на аккаунт или... (1000 других причин).

    Просто опасаюсь как бы вирус снова не проявил себя на новом хостинге.
    При использовании популярных CMS, в частности Wordpress, слово "вирус" будет Вас приследовать почти круглосуточно. Что примечательно, около 15% случаев последнего массового взлома WP были произведены через баг в плагине, который должен быть предотвращать взломы, повышать безопасность и т.д.

    Как обезопасить этот сайт от вируса,
    варианты:
    1. Не использовать популярные CMS или как минимум - не устанавливать на них сторонние плагины, не прошедшие тестов на безопасность (а это примерно 99% плагинов практически любой CMS)
    2. Не использовать дешевые непроверенные хостинги, а ещё лучше - обзавестись личным VPS
    3. Делать бекапы, ежедневно как минимум (или после каждого изменения на сайте)
    4. Подключить сайтовый антивирус (с этим вопросом - в поддержку хостера)

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

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Вопрос , как в браузере открыть адрес modules/news/1.php из корня web/index.php?
    Если при входе на сайт, по адресу "/" (т.е. "главная страница") отображается файл web/index.php, а нам нужно открыть уровнем выше папку moules/news/ и с нее открыть файл 1.php - то логически адрес бы выглядел примерно так: "/../modules/news/1.php". Но, только если в настройках веб-сервера такой доступ разрешен и допустим (что вряд ли). Иначе говоря, наиболее вероятный ответ на Ваш вопрос - "никак".

    Если Вы имеете доступ к конфигурации веб-сервера - можете попробовать сделать для этой страницы "специальный" адрес, или на отдельный URL вынести всю папку "modules/news".
    Ответ написан
    Комментировать
  • Как сделать методом php - отображение текста из файла txt?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Можно это сделать без MySQL ?
    Если у Вас маленький объём данных, <200-500Мб, в общей сложности и нет необходимости в некоторых возможностях "толстой" БД, такой как MySQL - можете взять SQlite3, его поддержка встроена в PHP с версии 5.3+ (кажется).

    Как это делается - берёте любую программу, например, SQlite maestro, создаёте БД (файл). Добавляете данные в БД (базу данных), пишите SQL-запрос, что-то вроде... SELECT * FROM table1 WHERE city = 'Москва'; и... пользуетесь.

    Если Вы более точно конкретизируете вопрос - получите более точный на него ответ :)
    Ответ написан
    Комментировать
  • Почему при соединение с базами данных phpmyadmin выдает такую фигню?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Почему при соединение с базами данных phpmyadmin выдает такую фигню?


    Возможно, по тому, что вот эта функция:
    $result = mysqli_query($connection, 'SELECT * FROM `articles_categorie`');
    требует первым параметром "mysqli_connect()", а не "mysql_connect()" как у Вас?
    Ответ написан
    Комментировать
  • Когда удаляется сессия?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Тут почти всё о сессиях PHP. В частности, описание параметра session.gc_maxlifetime.

    P.S. Вообще, я бы по ряду причин рекомендовал Вам хранить сессии в Redis. Например тут есть простой пример на эту тему, который, как я думаю, без проблем можно применить и к последующим версиям PHP.

    В частности Redis хорош тем, что:
    1. Вы можете точнее контролировать время жизни сессии
    2. Такой подход исключает создание множества файлов на жестком диске
    *PHP создаёт по файлу на жестком диске на каждую сессию, из-за чего, в старых (но активно применяющихся до сих пор) файловых системах Linux'а может возникнуть проблема, заключающаяся в том, что закончились inod'ы (извините, терминологией не богат). Подобный вид атак не редко используется "хакерами" что бы положить сервер.
    Ответ написан
    Комментировать
  • Как поступить с таблицей?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Здравствуйте!
    Здравствуйте!

    имеет ли смысл создать вторую таблицу, но только с теми данными которые будут часто доставаться
    В MySQL - да, в PostgreSQL возможно, я порекомендовал бы Вам использовать для этого наследование. НО! крайне важно понимать, что смысл таких операций есть только в тех случаях, если Вам действительно нужно увеличить производительность, то есть, производительности на данный момент, по какой-то причине не хватает (и никаким другом способом или в виду неких соображений, её увеличить нельзя) и Вам нужно её увеличить. В иных случаях, плодить лишние связи, крайне не рекомендуется. Не зависимо от того, MySQL это либо какая-то иная БД.

    *из личных наблюдений: чем меньше таблица в MySQL (в плане объёма на диске) - тем быстрее выборка, не зависимо от того, участвую ли "лишние" поля в этой выборке или нет.

    И если да, то лучше использовать MyISAM или InnoDB?
    Быстрее - MyISAM, надёжнее (+ там ещё транзакции всякие поддерживаются, и прочие плюшки) - InnoDB. Лучше - ?.

    как сделать запись в одну таблицу сразу же после выполнения записи в другую таблицу?
    Наверное, с помощью триггера или транзакции. Не понимаю суть Вашего вопроса.

    При этом нужно знать сохранить один и тот же айдишник у них.
    Для этого есть LAST_INSERT_ID().
    Ответ написан
    3 комментария
  • Варианты хранения id профилей в куках?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Есть ли какие то более распространенные и удобные варианты хранения подобного рода кук?
    Мне кажется да, хранение в куках ID сессии пользователя в куках, а всей нужной информации - в БД, при этом ID-сессии будет какой-то единой строкой (состоящей из цифр, букв или чего-то ещё), которую достаточно прогнать через 1 фильтр, что бы избежать SQL-инъекций. А если Вы используете ORM, то они (ORM'ы) обычно умеют это делать самостоятельно (фильтровать данные, что бы избежать SQL-инъекций) и даже фильтры не нужны.

    PHP имеет встроенный механизм сессий, в т.ч. с сохранение соотв. информации в куках, многие PHP-фреймворки так же имеют свои варианты реализации сессий.

    Как уже отметил предыдущий автор ответа - размер кук ограничен, а base64, насколько я помню, увеличивает размер исходных данных на 1/3 (с "1/3" возможно я не совсем прав, не помню нюансов). Так же ограничено и количество кук на 1 домен.

    Для удобства, сессии можно хранить, например в Redis'е, автоматически очищая информацию которой не пользовались N-времени.

    Base64, как Вы заметили - это "кодирование", а не "шифрование".

    Каждая кука передаётся с каждым HTTP-запросом, это не ускоряет загрузку сайта.

    P.S. К хранению информации для незарегистрированных пользователей я бы отнёсся довольно осмотрительно.
    Ответ написан
  • Страный код в начали файла Wordpress?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    подскажите что это за страный код в начали файла это вирус
    Судя по всему - да. Можете попробовать скачать весь сайт (код сайта) себе на компьютер и проверить его антивирусами Dr.Web и Kaspersky, оба они в той или иной мере способны находить (и иногда даже лечить) в т.ч. и такие вирусы. По крайней мере, Вы узнаете наверняка, вирус ли это...

    P.S. И у Kaspersky и у Dr.Web были бесплатные утилиты для проверки без необходимости установки самого антивируса себе на ПК. Так же если архив с сайтом не очень большой (если очень - можно удалить оттуда картинки, загрузки и прочее) можно попробовать загрузить на VirusTotal, и тогда вообще ничего ставить не придётся.
    Ответ написан
  • Как реализовать авторизацию через YouTube на сайте?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Насколько я помню, YouTube - это сервис Google'а, и аккаунт во всех его сервисах - единый.

    Предположительно, процесс авторизации описан здесь и здесь.
    Ответ написан
    Комментировать
  • Как ловить людей, которые из поиска попадают на PDF?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как сделать так, чтоб люди попадали на какую-то все же страницу сайта со ссылкой на скачивание pdf, а не сразу на pdf?
    Отдавать PDF через какой-то скрипт-прокладку, которая будет проверять по каким-то параметрам (refer, user-agent или каким-то другим) и либо отдавать сам PDF либо соотв. страницу, в зависимости от условий.
    Ответ написан
    Комментировать
  • Как сделать автоматическую отправку письма с видеокурсом после того как человек оплатил?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Подскажите как осуществить такое, может есть какие то программы

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

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

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Кто подскажет как лучше делать сканирование больших сайтов?
    Только не смейтесь, но подобное лучше делать на Си и/или в несколько потоков, если говорить о необходимости максимальной производительности подобных процессов.

    и как работа такого скрипта повлияет на сервер?
    Вы можете сами контролировать максимальную нагрузку процесса на сервер (машину), например с помощь (re)nice.

    Вопрос 2: Как ещё можно получить скорость загрузки стр.?
    Такой же точно результат как у GPS (Google Page Speed) - никак. Ваш результат, как бы Вы его не получали, будет отличаться от результата GPS по ряду причин (думаю, они довольно очевидны, что бы их озвучивать). Но в целом процесс довольно прост в своей логике:
    0. Определяемся, что мы хотим получить, скорость загрузки всей страницы или скорость загрузки HTML-кода страницы.
    1. Запускаем таймер (например, как описано тут, для PHP
    2. Скачиваем HTML-код
    3. Сканируем все ссылки на странице, если нас интересует и циклически загружаем их (если нам нужно время полной загрузки страницы)
    4. Останавливаем таймер, получаем результат

    P.S. То, чем пользуется GPS - предположительно (скорее всего) основано на браузере Chromium и работает не совсем так просто, как возможно ожидалось (это ещё одна из причин, почему Ваше время и время GPS будут отличаться, вопрос больше в том, какое именно время Вы хотите получить). В рамках "тостерного ответа", (впрочем как и любого другого ответа) довольно сложно описать все принципы работы подобных схем, для этого потребуется как минимум серия статей и хорошие знания C/++ у спрашивающего, с очень большой вероятностью (для того, что бы изменить исходники Chromium'а по себя, соответствующим образом).
    Ответ написан
    4 комментария
  • Какой самый быстрый способ сравнения двух таблиц MySQL?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    На вскидку, самый "адекватный" способ, называется "репликация", на счёт репликации отдельных таблиц в MySQL не уверен, но в целом можно что-то придумать.

    Если репликация по каким-то причинам не устраивает, я думаю, оптимальнее всего будет не сравнивать две базы/таблицы постоянно, а например, создать триггер, который при обновлении/добавлении новой записи (возможно, это будет 2 триггера или более) будет писать в 3-ю таблицу, что "добавился" такой-то элемент или "обновился такой-то элемент", потом в "час Х" Вы собираете данные из этой таблицы, делаете выборку нужных записей (по ID'шнику например) и отправляете на дочерний сервер.

    P.S. Это один из простых вариантов.
    Ответ написан
    2 комментария
  • Как вывести строку из txt файла по порядку на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    <?php
    
    $file = file('.gitignore'); //Файл со строками
    
    while(true) { //Выводить строки с начала, после того как файл закончился
        foreach($file as $string) {
            print "{$string}<br/>"; //Вывести стрроку (обычно в браузер)
            flush(); //Сбрасывать буфер (отправлять текст в браузер) после вывода каждой строки
        }
    }
    Ответ написан
  • Какой PHP фреймворк посоветуете для быстрой разработки проекта?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    - Представление о MVC имею. Раньше писал пару проектов на CodeIgniter, но на нём на мой взгляд мало что есть из коробки, и много времени уходит на разработку.
    С тех пор изобрели Composer, при должном желании прикручивается он и к CI в том числе :)

    - Нужен современный не заброшенный фреймворк, с достаточным количеством документации. Не обязательно на русском, но будет плюсом.
    На русском - CodeIgniter, на не русском - Laravel, Symfony и другие.

    - Хотелось бы большое количество подключаемого функционала из коробки, для экономии времени разработки. Например уже написанная логика авторизации, регистрации, восстановления пароля и разграничения по уровням доступа. Понимаю что всё равно придется немного допиливать под свои нужды, но времени это сэкономило бы кучу.
    Composer - решает 99% проблем, практически в любом фреймворке.

    - Возможность работы с различными БД из коробки
    Пока фреймворков без этой штуки не видел, но есть... Вы не поверите, Composer, что бы сменить/поставить "другой" ORM, если Вам "текущий" чем-то не подошел.

    - Поддержка кэширования из коробки. И желательно что бы была поддержка некешируемых областей при генерации страницы, а сам кэш был управляемым.
    То о чем Вы говорите, это: Varnish, Nginx+SSI и т.д. кэширование "из коробки" есть в Symfony (т.к. если его отключить, страницы может генерироваться феерически долго)

    - Не тяжелый фреймворк, в котором оптимизирован код, и который не жрёт огромное количество ресурсов на сервере. Если будет поддержка PHP7 - тоже плюс.
    По моему, любой современный фреймворк, если уже даже "Битрикс" небеизвестный до этого до этого дошел... некоторые фреймворки вообще скоро будут требовать PHP7, а не только "поддерживать".

    - Проект будет ориентировочно крутиться на nginx+php5-fpm. Думаю практически все фреймворки смогут работать в этой среде, но вдруг...
    Я пока таких "вдруг" не встречал. Если у админа голова и руки на месте - то никаких "вдруг" быть не должно. А вообще, у PHP версии 5.х, есть как минимум 3 основных "ветки", это <5.3, >=5.3 или 5.4+ и т.д., ещё кое-какие отличия были в 5.5 и 5.6, но не такие "разительные", подробности можно почитать в истории версий PHP. По этому, нужно конкретнее указывать версию, например, Laravel требует 5.6+

    - Возможность масштабирования. В принципе не обязательно, но возможно однажды будет масштабироваться проект.
    Это не возможность фреймворка - а навык программиста/админа.

    - Всякие плюшки из коробки типа каптчи, обработки и обрезки изображений и прочие приятности будут огромным плюсом и будут иметь «больший вес» при выборе, т.к. важна простота и скорость разработки.

    1. Yii2
    2. CMS + готовые модули CMS
    3. Вы не забыли, что есть... composer?!

    P.S. Простота и скорость разработки зависит исключительно от уровня Вашего понимания процесса и прочих личностных навыков. В эти же навыки, как один из первичных, входит умение "правильно выбирать фреймворк под конкретную задачу".

    Большое спасибо за время уделенное прочтению моего вопроса, и огромное спасибо за Ваши ответы.
    Не за что! Кнопка "Мне нравиться" - сразу под сообщением :D
    Ответ написан
    4 комментария
  • Как найти нужные элементы php SimpleXML?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
  • Почему не получается посчитать количество строк в бд?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    mysqli_result Object
    Это судя по всему, не результат, а объект результата или указатель. Примерно это должно помочь.

    P.S. Извиняюсь, ссылкой промахнулся. Исправил.
    Ответ написан
    Комментировать
  • Какой метод / формат для хранения данных при редком использовании?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    SQLite3, по моему, идеальный для Вас вариант. Вернее, почти любой язык, в т.ч. PHP, + SQLite3. Его поддержка есть в PHP, Python и наверняка, почти во всём остальном.
    Ответ написан