По общему признанию, я украл этот вопрос откуда-то еще (не могу вспомнить, где я все больше читал), но думал, что это было забавно:
Q: Что такое T_PAAMAYIM_NEKUDOTAYIM
?
A: Его оператор разрешения объема (Двойная толстая кишка)
Опытный php'er сразу знает, что это значит. Менее опытные (а не ивритские) разработчики могут захотеть прочитать это .
Но сейчас более серьезные вопросы:
Q: Какова причина этого предупреждения: «Предупреждение: не может изменять информацию об изменении заголовка - заголовки уже отправленные», и какая хорошая практика, чтобы предотвратить это?
A: Причина: Данные тела были отправлены, вызывая отправку заголовков тоже.
Профилактика: Обязательно выполните код в заголовке, прежде чем выводить какие-либо данные тела. Убедитесь, что вы случайно не отправили пробелы или любые другие персонажи.
Q: Что не так с этим запросом: «Выбрать * из таблицы, где ID = $ _POST [« ID »]«
?
A: 1. Это вулкавим для инъекций SQL. Никогда не используйте ввод пользователя непосредственно в запросах. Сначала дезинфицировать его. Прекраичное использование подготовленных утверждений ( PDO ) 2. Не выбирайте все столбцы (*), но укажите каждый столбец. Это преимущественно для предотвращения памяти запросов, когда в будущем добавляется столбец BLOB в будущем.
Q: Что не так с этим, если утверждение: , если (! Strpos ($ HayStack, $ иглы) ...
?
A: respos
Возвращает Индексное положение того, где он сначала обнаружил, что $ игла, которая может быть 0
. С 0
также разрешается false
Решением является использование строгого сравнения: Если (false! == strpos ($ Haystack, $ иглы) ...
Q: Что является предпочтительным способом написать это, если оператор, и почему?
, если (5 == $ quotear)
или , если ($ quotevar == 5)
A: Первый, как оно предотвращает случайное назначение от 5 до $, когда вы забыли использовать 2 Equalsigns ( $ quotvar = 5
), и приведет к ошибке, последний не будет.
Q: Учитывая этот код:
function doSomething( &$arg )
{
$return = $arg;
$arg += 1;
return $return;
}
$a = 3;
$b = doSomething( $a );
... Каково значение $ A
и $ B
После вызова функции и почему?
A: $ A
4
и $ B
3
. Первый, потому что $ arg пропускается Ference, последнее, потому что возвращаемое значение функции представляет собой копию (не ссылаться на) начальное значение аргумента.
ОЧАС
Q: В чем разница между общественным
, защищена
и частным
в определении класса?
: Public
делает классный элемент, доступный для «всех», защищен
, делает элемент класса, доступный только для сама и полученных классов, частных
делает только доступный элемент к самому классу.
Вопрос: Что не так с этим кодом:
class SomeClass
{
protected $_someMember;
public function __construct()
{
$this->_someMember = 1;
}
public static function getSomethingStatic()
{
return $this->_someMember * 5; // here's the catch
}
}
A: Статические методы не имеют доступа к этому $, поскольку статические методы могут быть выполнены без создания класса.
Q: В чем разница между интерфейсом и абстрактным классом?
A: Интерфейс определяет контракт между классом реализации, и объектом, который вызывает интерфейс. Абстрактный класс предварительно определяет определенное поведение для классов, которые расширяют его. В определенной степени это также можно считать договором, поскольку он может существовать определенные методы.
Q: Что не так с классами, которые преимущественно определяют Getter и Deventers, эта карта прямо к своим внутренним членам, не имея методов, которые выполняют поведение?
A: Это может быть кодовый запах Поскольку объект действует как неоднозначный массив, без особых других применений.
Q: Почему внедрение PHP используют интерфейсы Sub-оптимальной?
A: PHP не позволяет вам определить ожидаемый тип возврата метода, который по существу делает интерфейсы довольно бесполезный. :-P
Как лучше всего избегать ввода данных пользователем? (Кажется, этот вопрос часто возникает)
-121--847611-Если вы хотите быть действительно портативным, то лучше всего использовать инструменты командной строки Subversion. Вы можете делать с ними все, что вам нужно, и они будут одинаковыми на каждой платформе, которая была доступна до этого.
-121--2991165-Почему вы никогда не должны выводить пользовательский ввод напрямую!
Печать данных непосредственно из GET может привести к появлению уязвимостей межсайтового сценария (XSS) . Поэтому сначала необходимо отправить входные данные от клиента через htmlspecialchars ().
Terry Chay имеет блог пост в основном суммирование того, каково каждый разработчик PHP должен знать и / или, как ожидается, ответит на некоторую степень в собеседовании.
http://terrychay.com/article/php-coders.shtml
Я думаю, что это отличное резюме.
Оставайтесь вдали от MFC и его библиотека обмена сообщениями.
На самом деле, если вы видите MFC и потоки, приходящие к вам - запустите для холмов (*)
(*), если, конечно, если MFC исходит с холмов - в этом случае убегают от холмов.
-121--1017742-Когда сайт разработан с использованием PHP, и это полное дерьмо, это:
A) Неисправность PHP
b) Неисправность программистов
Я думаю, что хороший вопрос: Как работает HTTP? Работа с Get
и Post
данные Среди других HTTP Communications присуждается разработкой PHP. Понимание того, как HTTP работает в более широком контексте и как PHP реализует это далеко.
«Почему вы не используете что-то еще?»
Извините, кто-то должен был сказать :) [)
Я бы спросил что-то вроде:
а) как насчет кэширования?
b) Как можно организовать кэш?
C) Вы уверены, что вы не делаете дополнительные вопросы DB? (В моих первых вещах я сделал на PHP, это была MySQL_Query внутри Foreach, чтобы получить имена пользователей, которые сделали комментарии ... ужасно :))
d) Почему регистрация_глубали зла?
E) Почему И как вы должны разделить вид от кода?
f) Какова главная цель «реализация»?
Вот вопросы, которые вообще не были ясны для меня после того, как я прочитал некоторые основные книги. Я обнаружил все о инъекциях и CSX, Strpos через несколько дней \ недель через тысячи часто задаваемых вопросов FAQ в Интернете. Но пока я не нашел ответов на эти вопросы, мой код был действительно ужасен :)
«Какой твой любимый отладчик?»
«Какой твой любимый профилировщик?»
Фактическое приложение / IDE / Frestend не имеет значения, если выходит за рамки «Блокнот, эхо и микротрие ()». Он настолько вряд ли вы нанимаете один в миллиарде разработчика, который все время пишет идеальный код, и его / ее единицы тесты заметили все ошибки и узкие места, прежде чем они даже произойдут, что вы хотите, чтобы кто-то, кто может профилировать и / или выйти через код и найти ошибки в конечном времени. (Это правда для, вероятно, все языки / платформы, но кажется немного слаборазвитым навыкам среди разработчиков PHP для меня, чисто субъективных говорящих)
для f в «tree -fi | grep foo»; do sed -i -e 's/foo/bar/g' $ f; done
Как обстоит дело с паро? http://www.parosproxy.org/functions.shtml
-121--2485543-В чем разница между = = и = = = и зачем вообще использовать = = =?
Окончательно вопросы безопасности!
(Простые ответы в этом посте, конечно, закрепление веб-приложений PHP намного более сложнее)
MySQL_REAL_ESCAPE_STRING () для начала с MySQL. Затем попробуйте изучить PDO, чтобы воспользоваться преимуществами подготовленных утверждений и переносимости через поставщики баз данных.
Добавьте токен на каждый важный запрос на безопасность важных операций (пользователь, должно быть, видел форму перед отправкой важной заявки).?
HTMLEntities () хорош для начала.
Вам необходимо знать, каковы «словарный запас», используемый XXX, а затем вычтете то, что вам нужно для демонстрации и / или и-отвержение ».
функции, которые интерпретируют PHP-код (возможно, включенный в удаленный файл) или которые выполняют команду в вашей системе. Короткий и неполный список может быть: Exec (), Passthru (), System (), POPEN (), EVAL (), preg_replace () ...
Нужна тщательная проверка параметров, используемых при открытии файла или удаленных ресурсов.
Это будет долго, поэтому я пропускаю ответ, пожалуйста, прочитайте руководство PHP.
Первый преобразует запись в чем-то менее враждебном. Второй проверить, правильно ли запись и, если не отказывается от него.
Что не так с следующим кодом?
$a = 2;
function foo()
{
$a = 3;
}
foo();
echo $a;
При вызове элемента «Имя» в размере $ Array, которое является правильным?:
$ Array [Имя]
$ Array [«Имя»]
Оба часто будут работать, но только цитируют форму правильно. Определите («имя», 0);
и посмотрите, как ошибки летают. Я видел этого слишком много.
Как вы можете отправить элементы формы формы в качестве массива?
Добавьте пустые кронштейны на атрибут имени: несколько <Тип ввода = «Флажок» Name = «Флажки []» />
будет преобразован в массив на сервере (например, $ _ post [«флажки] [0..N]
). Я не думаю, что это на 100% PHP-специфический PHP, но он уверен, что ударает зацикливаться через $ _ Post
для каждого возможного «Флажок». $ I
элемент.
mysql_, mysqli_ или pdo?
Здесь только один действительно неправильный ответ: библиотека mysql_ не делает подготовленные утверждения и больше не может оправдать свою емкость для зла. Называть функцию, как ожидается, будет называться несколько раз за выполненный запрос, « MySQL_REAL_ESCAPE_STRING ()
», - просто соль в ране.
Какова лучшая практика экранирования пользовательского ввода? (Этот вопрос, кажется, часто возникает)
.- это кросс-браузер PHP?
(Я знаю, это сделает смех многих людей, но более-заданный вопрос на форумах PHP!)
Никто его еще не трогал, но это то, о чем каждый PHP-разработчик должен иметь возможность подробно рассказать: Почему register_globals
плохо?
Объясните разницу между
extract()
explode()
implode()