В настоящее время у меня есть форма, которая запрашивает электронную почту пользователя, номер мобильного телефона и сотового оператора.Ни одно из полей не помечено как обязательное, так как мне нужен только адрес электронной почты или номер ячейки.Форма отправляется отлично, если пользователь вводит как адрес электронной почты, так и номер телефона, или просто номер телефона, а не адрес электронной почты.Однако форма не будет отправлена, если пользователь попытается отправить ее, указав только адрес электронной почты и номер телефона.Другими словами, для работы формы требуется номер телефона.
Как я могу предотвратить это?Я хотел бы, чтобы пользователь мог вводить только свою электронную почту или только телефон;ни один не должен быть обязательным.Любая помощь будет принята с благодарностью.
У меня также есть проблема с проверкой номера телефона (FILTER_VALIDATE_INT не работает с 10-значными номерами), но я решу эту проблему позже.Код для формы выглядит следующим образом:
<form action="insert.php" method="post" id="signup">
<p>
<input type="text" id="email" name="email" value="E-mail" /><br/>
<input type="text" id="phone" name="phone" value="Phone" /><br/>
<select id="carrier" name="carrier">
<option value="" selected="selected">Carrier</option>
<option value="att">AT&T</option>
<option value="sprint">Sprint</option>
<option value="tmobile">T-Mobile</option>
<option value="verizon">Verizon</option>
</select>
</p>
<p>
<input type="image" src="images/button.gif" alt="Register!" />
</p>
</form>
Код для сценария PHP выглядит следующим образом:
<?php
$con = mysql_connect("dbhost","dbuser","dbpass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname", $con);
$filters = array(
"email"=> FILTER_VALIDATE_EMAIL,
"phone" => FILTER_VALIDATE_INT,
);
$result = filter_input_array(INPUT_POST, $filters);
if (!$result["email"])
{
echo("E-mail is invalid.<br />");
}
elseif(!$result["phone"])
{
echo("Phone is invalid.<br />");
}
else
{
$sql="INSERT INTO dbtable (email,phone,carrier)
VALUES
('$_POST[email]','$_POST[phone]','$_POST[carrier]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header('Location: http://pagename.com');
}
?>