Каково “продолжать” ключевое слово и как оно работает в Java?

ВАЖНО

. Лучший способ предотвратить SQL Injection - использовать подготовленные выражения вместо экранирования , поскольку демонстрирует принятый ответ .

Существуют библиотеки, такие как Aura.Sql и EasyDB , которые позволяют разработчикам легче использовать подготовленные инструкции. Чтобы узнать больше о том, почему подготовленные операторы лучше в останавливать SQL-инъекцию , см. этот mysql_real_escape_string() обход и недавно зафиксированные уязвимости Unicode SQL Injection в WordPress .

Предотвращение впрыска - mysql_real_escape_string ()

У PHP есть специально созданная функция для предотвращения этих атак. Все, что вам нужно сделать, это использовать функцию функции mysql_real_escape_string.

mysql_real_escape_string берет строку, которая будет использоваться в запросе MySQL, и возвращает ту же строку со всеми попытками внедрения SQL безопасно сбежал. В принципе, это заменит эти неприятные кавычки ('), которые пользователь может ввести с помощью заменителя в MySQL, сэкономленная цитата.

ПРИМЕЧАНИЕ: вы должны подключиться к базе данных, чтобы использовать эту функцию!

// Подключение к MySQL

$name_bad = "' OR 1'"; 

$name_bad = mysql_real_escape_string($name_bad);

$query_bad = "SELECT * FROM customers WHERE username = '$name_bad'";
echo "Escaped Bad Injection: 
" . $query_bad . "
"; $name_evil = "'; DELETE FROM customers WHERE 1 or username = '"; $name_evil = mysql_real_escape_string($name_evil); $query_evil = "SELECT * FROM customers WHERE username = '$name_evil'"; echo "Escaped Evil Injection:
" . $query_evil;

Более подробную информацию вы найдете в MySQL - SQL Injection Prevention .

295
задан Francesco Menzani 18 September 2015 в 05:10
поделиться

6 ответов

continue оператор без маркировки повторно выполнит от условия самое внутреннее while или do цикл, и от выражения обновления самого внутреннего for цикл. Это часто привыкло к раннему оконечному обработка цикла, и, таким образом, избегайте глубоко вложенный if операторы. В следующем примере continue получит следующую строку, не обрабатывая следующее утверждение в цикле.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

С маркировкой, continue повторно выполнится от цикла с соответствующей маркировкой, а не самого внутреннего цикла. Это может использоваться для выхода из глубоко-вложенных-циклов, или просто для ясности.

Иногда continue также используется в качестве заполнителя для создания пустого тела цикла более ясным.

for (count = 0; foo.moreData(); count++)
  continue;

тот же оператор без маркировки также существует в C и C++. Эквивалент в Perl next.

Этот тип потока управления не рекомендуется, но если Вы, так выберите, можно также использовать continue для моделирования ограниченной формы [1 113]. В следующем примере эти continue повторно выполнит пустое for (;;) цикл.

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;
408
ответ дан Francesco Menzani 23 November 2019 в 01:34
поделиться

continue отчасти похож goto. Действительно ли Вы знакомы с break? Легче думать о них по контрасту:

  • break завершает цикл (переходы к коду ниже его).

  • continue завершает остальную часть обработки кода в цикле для текущего повторения, но продолжает цикл.

503
ответ дан Francesco Menzani 23 November 2019 в 01:34
поделиться

Давайте посмотрим пример:

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

Это получило бы сумму только нечетных чисел от 1 до 100.

99
ответ дан Dimitri Kopriwa 23 November 2019 в 01:34
поделиться

Если Вы думаете о теле цикла, поскольку подпрограмма, continue вид подобных return. То же ключевое слово существует в C и служит той же цели. Вот изобретенный пример:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

Это распечатает только нечетные числа.

28
ответ дан Francesco Menzani 23 November 2019 в 01:34
поделиться

Обычно я вижу continuebreak) как предупреждение, что код мог бы использование некоторый рефакторинг, особенно если while или for объявление цикла сразу не в поле зрения. То же верно для return посреди метода, но по немного отличающейся причине.

, Поскольку другие уже сказали, continue перемещения следующему повторению цикла, в то время как break перемещения из цикла включения.

Они могут быть бомбами замедленного действия обслуживания, потому что нет никакой непосредственной ссылки между continue / break и цикл, который это продолжает/повреждает кроме контекста; добавьте внутренний цикл или переместите "кишки" цикла в отдельный метод, и Вы имеете скрытый эффект continue / break сбой.

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

continue, break, и return (кроме Одного Истинного Возврата в конце Вашего метода) всю осень в общую категорию "скрытого GOTOs". Они помещают цикл и функциональное управление в неожиданных местах, которое тогда в конечном счете вызывает ошибки.

17
ответ дан 2 revs, 2 users 76% 23 November 2019 в 01:34
поделиться

continue должно быть в цикле Иначе это showsThe ошибка ниже:

Продолжаются вне цикла

0
ответ дан 23 November 2019 в 01:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: