КАК предотвратить повторную отправку формы.
<?php
require 'resource/libs/db/db.php';
$data = $_POST;
if(isset($data['do-signup']))
{
$errors = array();
if(trim($data['login']) == '')
{
$errors[]='Введите логин';
}
if(trim($data['email']) == '')
{
$errors[]='Введите email';
}
if($data['password'] == '')
{
$errors[]='Введите pasw';
}
if(R::count('users',"login = ?", array($data['login'])) > 0 )
{
$errors[] = 'login уже есть';
}
if(R::count('users',"email = ?", array($data['email'])) > 0 )
{
$errors[] = 'email уже есть';
}
if(empty($errors))
{
$user = R::dispense('users');
$user->login = $data['login'];
$user->email = $data['email'];
$user->password = password_hash($data['password'],PASSWORD_DEFAULT);
R::store($user);
}else
{
echo '<div>'.array_shift($errors).'</div><hr>';
}
}?>
<form action="signup.php" method="POST">
<ul>
<li><input type="text" name="login" placeholder="Логин"></li>
<li><input type="email" name="email" placeholder="Email"></li>
<li><input type="text" name="password" placeholder="Пароль"></li>
<li><input type="submit" name="do-signup" value="Вход"></li>
</ul>
</form>
Вас спасет самый древний костыль на эту тему, дедовский способ:
В форме вставляем:
<input type="hidden" name="token" value="<?php echo(rand(1,999999));?>" />
Тогда проверка выглядит так:
session_start();
if (isset($_POST['token'])) {
if ($_POST['token'] == $_SESSION['formToken']) {
// ошибка: повторная отправка формы
} else {
$_SESSION['formToken'] = $_POST['token'];
// обрабатываем форму
}
}
Редирект (но тогда от выводов в PHP придется отказаться)
header("Location:".$_SERVER['PHP_SELF']);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется раздел CRM, в нём КомпанииПри добавлении новой компании предлагается выбрать из выпадающего списка Тип
Создан вывод комментариев при помощи дефолтной функции wp_list_comments()
Как использовать переменные внутри класса? ВОт пример кода, который нужно заставить работать: