Ответы пользователя по тегу PHP
  • Какие годные идеи проектов для портфолио веб-разработчика вы знаете?

    @asd111
    Программа для кросспостинга. Т.е. написал один раз и отправил сразу в twitter,facebook, vkontakte, google+ и куда угодно ещё.
    Идею взял отсюда:
    Чем вы пользуетесь для ведения групп в соцсетях?
    Ответ написан
  • Как на CentOS запустить консольное приложение PHP?

    @asd111
    screen -S myPHP
    php myscript.php
    жмешь ctrl+a и потом после ctrl+a жмешь d
    так ты запустил в screen скрипт,
    чтобы вернуться к скрипту пиши
    screen -r myPHP

    вместо myPHP и myscript пиши что своё

    время выполнения скрипта - настройка max_execution_time в php.ini
    Ответ написан
  • Почему скрипт работает очень медленно ?

    @asd111
    Ответ написан
    Комментировать
  • Должны ли конструкторы подклассов быть приватными при реализации синглтона?

    @asd111
    По моему в вашем случае лучше сделать protected static controller чтобы он был недоступен для ненаследников и писать self::controller=new self() тогда ваш родитель будет как интерфейс а наследники будут его реализовывать
    Ответ написан
  • Кривое сохранение символов в MySql через PHP. Что делать?

    @asd111
    смотри в сторону SET character_set_client, SET character_set_connection SET character_set_result ещё смотри set names и collation
    habrahabr.ru/post/10983
    Ответ написан
    Комментировать
  • Ценится ли IT-специалист, который умеет все?

    @asd111
    Если вы все это умеете делать качественно, т.е. если можете от начала до конца сделать какую нибудь работу, то все ок. А если всё поверхностно, т.е. без практической пользы, то лучше выбрать область в которой вы наиболее продуктивны и развиваться в этом направлении.
    Вам наверно может подойти работа Full stack developer, там как раз много чего надо знать и уметь.
    Что такое Full stack?
    Ответ написан
    Комментировать
  • Как отдебажить циклическую перезагрузку страницы?

    @asd111
    Как вариант пройтись поисковиком IDE по всем header("Location... ) и расставить breakpoint'ы перед header или на сами header.
    В phpstorm делается так: открываем в ide через File > Open directory папку где лежат все исходники проекта слева жмем правой кнопкой мыши на названии верхней папки и выбираем Find in Path там пишем для поиска header. Ещё нужно будет правильно указать search in directory если что то неправильно, у меня само все вышло правильно. Выйдет окошко Found occurances т.е. найденные совпадения и там можно быстренько даблкликом и ctrl+F8 обойти каждое совпадение и поставить breakpoint на сам header или на какой нибудь вызов какой нибудь функции перед header.

    Таким же образом если есть подозрение на javascript или другие причины, то можно попробовать закомментировать через поисковик все места с header для этого надо выбрать вместо Find in Path - Replace in Path в строке для поиска написать header("Location , а в строке для замены //header("Location и нажать Find потом All files. Потом можно так же обратно раскомментировать. Таким образом можно разом закомментировать все header во всех файлах во всех папках которые находятся в папке которую вы открыли через File > Open directory.

    C дебагером все не так сложно как кажется - главное один раз настроить потом можно ставить столько breakpoint'ов сколько хочется и наслаждаться тем что можно без всяких <? есно $myVariable ?> посмотреть значения переменных.
    Ответ написан
  • PHP-инъекции в прошлом?

    @asd111
    От PHP это не зависит, т.к. PHP по умолчанию не фильтрует вывод и в PDO есть способ писать небезопасно. Фреймворки немного решают проблему с SQL injection, а чтобы не было XSS нужно фильтровать вывод данных из БД и пользовательских данных.
    Ответ написан
    1 комментарий
  • Как исправить кривые переносы UTF из БД?

    @asd111
    Ответ написан
    Комментировать
  • Как обезопасить сайт?

    @asd111
    Ограничивать вход по белому списку ip не самая лучшая идея, т.к. если вы самостоятельно захотите зайти с ip которого нет в списке, то ничего не получится.
    Один из вариантов - ограничить количество неудачных логинов в админку с одного ip. Если не ошибаюсь ip клиента при правильно настроенном сервере должен быть в переменной $_SERVER['REMOTE_ADDR'].
    Т.е. при логине надо будет проверять количество неудачных логинов за сегодня с данного адреса и если лимит превышен, то блокировать попытку входа.
    В таком случае желательно выбрать сложный пароль.
    Но это защитит только от перебора пароля администратора. Если у вас на сайте где то XSS и проверяется вход по cookie то вход мог быть с cookie администратора. Т.е. если вы с куками админа зайдёте на страницу вашего сайта где из за XSS разместили javascript ворующий cookie, то ваши куки уже далеко, но после изменения пароля всё должно снова стать ок. Выход в таком случае - сессии. Единственная проблема - после закрытия браузера надо будет каждый раз логинится. Сессию украсть сложнее.
    XSS решается через повсеместную фильтрацию вывода через html purifier и т.п.
    Если у вас на сайте используется OАuth то там уже совсем другой подход, но смысл примерно тот же.

    Так же важно закрыть ненужные порты, спрятать всё кроме 80 за port knocking и обязательно использовать сложные пароли для всего. ssh sftp

    Когда то ещё был такой слух что крякнутый total commander ворует пароли от ftp если его использовать для подключения через ftp. Не знаю правда это или нет т.к. не пользуюсь.

    Если из за плохих настроек сервера после взлома злоумышленники получали полный доступ к серверу, то тогда проще менять хостинг.
    Из VPS рекомендую digitalocean или hetzner. Так вы получите полный контроль над сервером, что позволяет настроить по всем правилам.
    Ответ написан
    Комментировать
  • Как спроектировать архитектуру простого форума на PHP?

    @asd111
    Если нет требований к качеству, то хватит одного index.php и пара файлов: в один можно положить подключение к БД и запросы к БД - такие файлы ещё называют моделями, в другой отдельно положить вывод страницы, т.е. html. AJAX точно не знаю куда лучше положить, можно прям в html написать если кода мало(обычно AJAX делается через инструменты фреймворка). В таком случае у тебя получится, что главный файл - контроллер, файл с БД - модель, а файл с html - вид(шаблон).
    Твой контроллер сможет делать запросы к БД и выводить шаблон с заполненными данными.
    1. Проверяешь не пришло ли что то из формы и какая страница запрошена. $_POST $_GET(надеюсь об XSS ты в курсе)
    2. Если пришло, то пишешь в БД, если нет требований по неповторению сообщений.
    3. Вытаскиваешь из БД названия тем и заполняешь хедер. Тут нужно будет вытащить только те темы, которые нужно. Если требований нет, то сойдёт where id:$id limit 5; $id=rand(1, 150 000).
    4. Поиск. Если пришла строка на поиск нужно сформировать запрос с условием Like.
    Можно выполнить поиск текста от начала поля:
    SELECT Таблица.* FROM Таблица WHERE Таблица.Поле Like 'текст*'
    или в любой части поля - Like '*текст*'
    5. Статистика работы PHP. memory_get_usage() - для объема используемой памяти, microtime() - для времени выполнения скрипта. По MySQL microtime() - время выполнения запроса.
    6. Постраничный вывод тем. Считаешь число тем, делишь число тем на число тем на одной странице и в зависимости от запрошенного номера страницы выводишь запрошенные темы путем запроса в БД where id<:id $id берёшь из $_GET.
    Примерно так. Возможно будет тормозить поиск. В таком случае надо будет либо менять запросы на легковесные(в запросах я не силён), либо memcache, либо sphinx. Возможно что то ещё.

    P.S.
    В реальности сложные сайты обычно пишут на фреймворках. Например Yii.
    Ответ написан
    1 комментарий
  • Как вернуть return в функции несколько значенией?

    @asd111
    добавь значение в массив и выводи массив
    $a=[1,2,3,4,5];
    function my_return($input){
    $asd=6;
    $input[]=$asd;
    return $input;
    }
    $b=my_return($a);
    var_dump($b);
    Ответ написан
    2 комментария
  • Какие книги по программированию должен прочесть PHP программист?

    @asd111
    По MySQL для профессионалов думаю вот эта будет интересна :
    MySQL. Оптимизация производит...
    Ответ написан
    Комментировать