Ответы пользователя по тегу PHP
  • Отключить возможность обращения к функциям через переменные?

    @resurection
    Никак. Это конструкции языка.
    Максимум, что вы можете, это запретить некоторые функции:
    disable_functions = file_get_contents
    Ответ написан
    Комментировать
  • Как заставить phpStorm определять тип переменной в файлах определённого типа?

    @resurection
    Вопрос в догонку. Как правильно написать phpDoc для $this, что бы PS не ругался на приватные методы? То есть когда файл инклюдится из класса и в файле написать:
    <?php
    /**
    *@var myClass $this
    */
    $this->_privateMethod(); // PS Ругается красным.
    ?>
    Ответ написан
    Комментировать
  • PHP: Проверить, открыт ли файл на запись

    @resurection
    Подозреваю, что FTP-сервер пишет в локальный файл порциями, буферизируя пришедшие данные и периодически скидывая их на диск. Если моё предположение верно, то в промежутках между сбросами, файл не заблокирован. Если так, то, в настройках ФТП-сервера может быть соответствующая галка, что бы блокировать файл на протяжении всего процесса закачивания.
    Ответ написан
  • PHP: нужно ли создавать массив перед его заполнением?

    @resurection
    Нельзя isset-ом проверять т.к. для null-ового значения она возвращает false. См. доку:

    $a = array ('test' => 1, 'hello' => NULL);

    var_dump(isset($a['test'])); // TRUE
    var_dump(isset($a['hello'])); // FALSE

    Для проверки существования ключа массива необходимо использовать array_key_exists():

    var_dump(array_key_exists('hello', $a)); // TRUE

    ru.php.net/manual/en/function.isset.php
    Ответ написан
    Комментировать
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    @resurection
    Я бы сказал так:
    Интерфейс — это возможность задать жёсткую семантику.
    Абстрактный класс — это возможность вынести дублирующийся код и явно это отметить в иерархии.
    Ответ написан
    Комментировать
  • Как отучить стажёра от говнокода?

    @resurection
    Когда я начал изучать программирование (начал с php), то, наверное, первый год я просто узнавал основы синтаксиса и принципов. Например, если написать unset($arr[23]); — что будет: все последующие индексы сместятся или будет дырка? А как, что бы не было дырки? Если в двойных кавычках все переменные заменяются на значения, то будут ли кавычки влиять на ф-цию date(«Y-m-d»)? А что делать, если мне надо дату разбить на две строки br-ом? А как «склеить» два числа: 1+2=12?

    В общем, очень много базовых вопросов, которые в документациях явно не прописаны или описаны как-то завуалированно (в пхп не существует нумированных массивов, только ассоциированные!). На такие вопросы я очень много времени тратил в первый год. Базы данных даже не щупал — всё в файлах. Но тогда я программил для себя и понимал, что пока не сделаю самостоятельно несколько сайтов, устраиваться на работу — тупо. А вы хотите: первые дня два,… показал ему, что такое HTML, CSS, PHP, MySQL. Дня два не хватит даже что бы выбрать удобное IDE, а Вы ему 4 языка!

    В итоге: либо не экономьте на программерах, либо платите мелкую з/п за то что он ничего не успевает. А этому прогеру надо сначала написать хотя бы пару сайтов для себя/друзей и только после этого уже просить за свою работу денег.
    Ответ написан
    6 комментариев
  • Защита от SQL инъекций

    @resurection
    Если заменить запись
    $var2 = sql_guard('POST', 'input2', 'int');
    на
    $var2 = (int) sql_guard('POST', 'input2'); // эта конструкция короче на одну запятую

    то вашу ф-цию можно будет сократить в 2 раза выкинув все тернарные условия.

    А ещё можно заменить:
    $var1 = sql_guard('POST', 'input1');
    на
    $var1 = sql_guard($POST['input1']);

    Тогда ваша ф-ция превратится в алиас и будет содержать всего один вызов addSlashes или mysql_real_escape_string
    Ответ написан
    Комментировать
  • Обмен данными между двумя PHP скриптами

    @resurection
    Если взломщик имеет ПОЛНЫЙ доступ то он ведь сможет заглянуть куда угодно где бы Вы не спасались. Да и зачем ему перехватывать данные, если он сможет забрать готовый результат работы скрипта? Даже шифрование данных не защитит, ведь он сможет просмотреть исходники и узнать алгоритм и ключ.
    Ответ написан
    1 комментарий
  • Генерация автоинкрементного значения в составном первичном ключе не на первом поле в innoDB таблице

    @resurection
    Я бы сказал, что так делать не надо. message_id должно быть уникальным автоинкрементом.
    А если Вы хотите выводить красивую нумерацию индивидуальную для каждого юзера, то сделайте отдельное поле `number` SAMLLINT — его и вычисляйте триггером.
    Ответ написан
    Комментировать
  • PHP - не считывается полный файл. Памяти и времени хватает?

    @resurection
    Может это не то, но хоть идею подкину.

    Было у меня что-то похожее при скачивании видео флешем. У меня тоже плесало вокруг 40кб. Выяснил, что если файл короче, то сервер посылает HTTP-заговловок Content-Length. А если длинее, то заголовка нет. Виновником был mod_deflate который жал отдаваемые файлы на лету. Если файл был меньше чем, кеш, то сервер сперва сжимал и мог показать правильный размер.
    Попробуйте откатить Apache. Если поможет, то фаербагом досканально сравнивайте ответ.
    Ответ написан
    Комментировать
  • Чат на PHP: узкое место БД - как решить?

    @resurection
    Я помню лет 10-15 назад чаты были очень популярными. Кроме чатов и форумов ничего ещё изобретено не было. Ни блогов, ни социалок, ни твиттеров ни, даже, ajax. И тусили в этих чатах тысячи человек (можно было открыть несколько каналов). Или сотка людей в чате без каналов.
    Чаты были на фреймах и каждые 5 сек. фрейм со списком сообщений обновлялся ПОЛНОСТЬЮ (весь HTML со всей пачкой сообщений).
    Железо в те времена было что-то вроде 300-400 МГц. Ваш ВДС, я уверен, порвал бы те сервера.
    Как-то странно сейчас в 2010 году слышать, что чат не выдерживает больше 30 одновременных юзеров.

    Вы пробовали на другом сервере? Хотя бы на локале сколько держит?
    Ответ написан
    3 комментария