как мне разрешить только один адрес электронной почты?
Запустите SELECT
запрос, чтобы проверить, существует ли такой адрес электронной почты.
как я могу проверить только знак @ в письме
strpos будет достаточно.
Хотя было бы неплохо подтвердить адрес электронной почты, отправив письмо на этот адрес, вы знаете.
Также в вашем коде есть несколько вещей, которые нужно исправить.
ваше else if
утверждение не обязательно, должно быть просто else
и mysqli_real_escape_string не должны быть в разделе проверки. Это функция, связанная с базой данных, а не функция проверки.
А если это регистрационная форма, следует использовать метод POST
что-то вроде этого
$err = array();
if (empty($_POST['email']) $err['email'] = "email cannot be empty";
if (strlen($_POST['email']) >= 256) $err['email'] = "email is too long";
if (!strpos("@",$_POST['email'])) $err['email'] = "malformed email";
$query = "SELECT 1 FROM members WHERE email ='".
mysqli_real_escape_string($mysqli, $_POST['email'])."'";
$res = mysqli_query($mysqli, $query) or trigger_error(mysqli_error($mysqli).$query);
if (mysqli_num_rows($res)) $err['email']="email already present";
//other validations as well
if (!$err) {
//escape all the data.
//run your insert query.
header("Location: ".$_SERVER['REQUEST_URI']);
exit;
} else {
foreach($_POST as $key => $value) {
$_FORM[$key]=htmlspecialchars($value,ENT_QUOTES);
}
include 'form.php';
}