Измените конструктор следующим образом
Circle::Circle(const Point& center, double radius)
: center_pt( center ), radius_size( radius )
{
}
Проблема заключается в том, что если вы не будете явно вызывать конструктор с параметрами для класса Point
, то компилятор пытается вызвать конструктор по умолчанию класса для создания члена данных center_pt
класса Circle, прежде чем вы сможете назначить точку внутри тела конструктора класса Circle
. Но вы не определили конструктор по умолчанию класса Point
, и компилятор выпустил ошибку.
Другой подход действительно должен определить конструктор по умолчанию для класса Point
, который, например, инициализирует точку с нулями .
Учтите, что по дизайну класса Point
вы не можете изменять элементы данных coord_x
и coord_y
созданного объекта. Возможно, вы должны перепроектировать класс.
Используйте JavaScript, чтобы остановить его отправку
Используйте JavaScript, чтобы отключить кнопку, как только она нажата.
onclick="this.disabled=true;forms[0].submit();"
В качестве альтернативы, используйте одноразовые ключи формы.
Предотвращение дублирования отправки формы показывает способ сделать это без JavaScript.
Я делаю следующее на action.php
if( Я делаю следующее на action.php
[110] Примечание: всегда инициируйте свои сеансы в заголовке с помощью session_start ();
SESSION && isset( Я делаю следующее на action.php
[110] Примечание: всегда инициируйте свои сеансы в заголовке с помощью session_start ();
SESSION['already_submitted'])) {
# If already submitted just redirect to thank you page
} else {
# If first submit then assign session value and process the form
Я делаю следующее на action.php
[110] Примечание: всегда инициируйте свои сеансы в заголовке с помощью session_start ();
SESSION['already_submitted'] = true;
# Process form
}
Примечание: всегда инициируйте свои сеансы в заголовке с помощью session_start ();
Двойное нажатие кнопки «Отправить» довольно редко приводит к множественным вставкам, но если вы хотите получить простое решение, используйте
onsubmit="document.getElementById('submit').disabled = true"
в теге формы, если вы дадите кнопку «Отправить» id="submit"
Отключите кнопку отправки с использованием Javascript после отправки формы (onsubmit
).
Обратите внимание, что если пользователь отключил Javascript, он все равно может отправить дважды. Будет ли это происходить достаточно часто, чтобы оправдать проверку вашего кода (как вы предложили в своем вопросе), зависит от вас.
Используйте уникальный токен с постом, чтобы каждый пост / постбэк обрабатывался только один раз.
Отключение кнопки отправки не очень хорошее решение, так как люди могут отключить JavaScript или делать другие странные вещи. Проверка на стороне клиента - хорошее начало, но ее всегда следует подкреплять обработкой на стороне сервера.
Я использую это:
$form_token = $_SESSION['form_token'] = md5(uniqid());
Отправить $ form_token с формой, то ...
Я проверяю form_token:
if($_SESSION['form_token'] != $_POST['form_token']) {
echo 'Error';
}
Еще один способ создать страницу подтверждения, где пользователь может, наконец, нажать кнопку отправки. Это может уменьшить возможности такого рода.
Создайте уникальный одноразовый ключ для отправки с помощью формы.
Полагаться на Javascript - плохая идея, потому что он мог быть отключен в клиенте пользователем. В схеме ключей, когда отправка получена сервером, отправка для этого ключа может быть заблокирована. Вы можете отвечать на дубликаты, как вам нравится.
Чтобы этот подход работал, ключи должны быть уникальными и очень трудно предсказать. В противном случае некоторые формы могут быть заблокированы из-за столкновений клавиш. Таким образом, вам не нужно отслеживать ключи для каждой отправки формы и избегать коллизий, ключи должны истечь с сеансом этого пользователя. Еще одна вещь, на которую следует обратить внимание: если злоумышленники смогут предсказать ключ, ваш код может оказаться уязвимым для какого-либо взлома или эксплойта DOS.
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
// reset session token
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'])) {
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'])) {
if ( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] != Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token']) {
echo '<h3>Oops! You already submitted this request.</h3>';
} else {
// process form
// reset session token
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] . time() );
}
} else {
echo 'post token not set';
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( $somevariable . time() );
}
}
о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'])) {
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'])) {
if ( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] != Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token']) {
echo '<h3>Oops! You already submitted this request.</h3>';
} else {
// process form
// reset session token
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] . time() );
}
} else {
echo 'post token not set';
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( $somevariable . time() );
}
}
о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] . time() );
мои последние сценарии выглядят так:
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'])) {
if (isset( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'])) {
if ( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] != Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token']) {
echo '<h3>Oops! You already submitted this request.</h3>';
} else {
// process form
// reset session token
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
POST['token'] . time() );
}
} else {
echo 'post token not set';
Арон Роттвил включает в себя уникальный токен на каждом посте , сработавшем для меня. Однако моя форма все еще отправляется, когда пользователь обновляет страницу (F5). Мне удалось решить эту проблему, добавив сброс:
[110] мои последние сценарии выглядят так:
[111] о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
SESSION['token'] = md5( $somevariable . time() );
}
}
о! не забудьте добавить session_start();
до <!DOCTYPE>
Я новичок в PHP, поэтому, пожалуйста, исправьте меня, если вы обнаружите ошибки.
Существует несколько решений этой проблемы:
Используйте JavaScript, чтобы отключить кнопку отправки формы, когда она опубликована. Недостаток этого является то, что это абсолютно не является надежности. Очень легко отправлять формы, не нажав на кнопку, и это также не будет работать для пользователей с помощью JavaScript отключена. Я бы определенно не рекомендовал этот метод.
Пример:
script>
Используйте сеансы PHP , чтобы установить переменную сеанса (например, $ _Session [«PostTimer») к текущему временному времени на пост. Перед фактическим обработкой формы в PHP проверьте, существует ли переменная $ _SESSION ['POSTTIMER'] и проверяет определенную разницу времени времени (т. Е.: 2 секунды). Таким образом, вы можете легко отфильтровать двойные подачи.
Пример:
// form.html
Включите уникальный токен на каждом посте. В этом случае вы также установили переменную сеанса в токен, который вы хотите включить, а затем рендерируйте токен в форме. Как только форма представлена, вы повторно генерируете токен. Когда представленный токен не соответствует токену на вашем сеансе, форма была перенесена и должна быть объявлена недействительной.
Пример:
// form.php
PHP.
// Очевидно, это может быть все, что вы хотите, пока это уникально
$ _Session [«токен»] = MD5 (SESSIC_ID (). Время ());
?>
отключить кнопку отправки после того, как пользователь отправил форму, используя JavaScript. Это то, что, например, StackOverflow использует, когда вы отвечаете на вопрос.
Например,
<input type="submit" onclick="this.disabled=true" />
.