Будучи новичком, я нахожусь на перекрестке о том, как отправить бесплатную форму. Ссылка на файл php ниже. Я использовал три параметра действия со следующим последствием: Метод 1 action = ""
Это указывает на ошибки на той же странице, есть ли ошибка или нет. Способ 2: Действие = "" Это указывает на ошибки на той же странице, есть ли ошибка или нет. Способ 3: action = "Пользователь sch contact.php" Это открывает новую страницу (User sch contact) со всеми входами пользователя, есть ли ошибка или нет.Как отправить бесплатную форму
Теперь я не хочу, чтобы форма была представлена до тех пор, пока пользователь не очистит каждую ошибку. Пожалуйста, как я могу это достичь? Есть ли что-то, чего я не вижу в php, sql, Mysql, которые помогут мне достичь этого?
<!DOCTYPE html>
<html>
<head>
<title>PHP Exercise</title>
<style type="text/css">
body {font-family: Arial, Verdana, Helvetica,Sans-serif; padding: 0px;
margin-left: 50px;}
input:hover {background-color: rgb(250,250,150);}
.btn {padding: 5px 5px 5px 5px; background-color: rgb(240,240,240); font-
size: 12px; font-weight: bold; font-style: italic; border: 1px; }
.btn:hover {background-color: rgb(250,250,150);}
th {font-weight: bold; font-size: 14px; border: 1px; border-style: solid;
margin: 0px; border-spacing: 0px;}
.cdtl {text-align: left;}
td {font-weight: Normal; font-size: 14px; border: 1px; border-style: solid;
margin: 0px; border-spacing: 0px;}
.err {color: rgb(250,50,10); width: 200px; font-style: italic; border: 0px;
font-size: 14px;}
</style>
<script type="text/javascript">
var debugScript = true;
</script>
</head>
<?php
$username = $useraddy1 = $useraddy2 = $userfone = $useremail = $userurl
= "";
$firstgrade = $secondgrade = $thirdgrade = $fourthgrade = "";
$usernameerr = $useraddy1err = $useraddy2err = $userfoneerr =
$useremailerr = $userurlerr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["username"])) {
$usernameerr = "Name is required";
} else {
$username = test_input($_POST["username"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z0-9 ]*$/",$username)) {
$usernameerr = "Only alphanumerics and white space allowed";
} else {$usernameerr = "";}
}
if (empty($_POST["useraddy1"])) {
$useraddy1err = "Address is required";
} else {
$useraddy1 = test_input($_POST["useraddy1"]);
if (!preg_match("/^[a-zA-Z0-9 ]*$/",$useraddy1)) {
$useraddy1err = "Only alphanumerics and white space allowed";
} else {$useraddy1err = "";}
}
if (empty($_POST["useraddy2"])) {
$useraddy2err = "Address is required";
} else {
$useraddy2 = test_input($_POST["useraddy2"]);
if (!preg_match("/^[a-zA-Z ]*$/",$useraddy2)) {
$useraddy2err = "Only letters and white space allowed";
} else {$useraddy2err = "";}
}
if (empty($_POST["userfone"])) {
$userfoneerr = "Address is required";
} else {
$userfone = test_input($_POST["userfone"]);
if (!preg_match("/^[+0-9]*$/",$userfone)) {
$userfoneerr = "Only + numbers and white space allowed";
} else {$userfoneerr = "";}
}
if (empty($_POST["useremail"])) {
$useremailerr = "Email is required";
} else {
$useremail = test_input($_POST["useremail"]);
// check if e-mail address is well-formed
if (!filter_var($useremail, FILTER_VALIDATE_EMAIL)) {
$useremailerr = "Invalid email format";
}
}
if (empty($_POST["userurl"])) {
$userurl = "";
} else {
$userurl = test_input($_POST["userurl"]);
// check if URL address syntax is valid (this regular expression also
allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?
=~_|!:,.;]* [-a-z0-9+&@#\/%=~_|]/i",$userurl)) {
$userurlerr = "Invalid URL";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h4>User Input</h4>
<form id="setUp" method="post" action="<?php echo
htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<table id="contact" class="userInfo">
<tbody>
<tr>
<th class="cdtl">User Name:</td>
<td><input type="text" name='username' value="<?php echo $username;?>" />
</td>
<td class='err'><?php echo $usernameerr;?></td>
</tr>
<tr>
<th class="cdtl">Address1:Number, Street, City</td>
<td><input type="text" name='useraddy1' value="<?php echo $useraddy1;?>" />
</td>
<td class='err'><?php echo $useraddy1err;?></td>
</tr>
<tr>
<th class="cdtl">Address2:State, Country</td>
<td><input type="text" name='useraddy2' value="<?php echo $useraddy2;?>" />
</td>
<td class='err'><?php echo $useraddy2err;?></td>
</tr>
<tr>
<th class="cdtl">Telephone (International format)</td>
<td><input type="text" name='userfone' value="<?php echo $userfone;?>" />
</td>
<td class='err'><?php echo $userfoneerr;?></td>
</tr>
<tr>
<th class="cdtl">e-mail Address</td>
<td><input type="email" name='useremail' value="<?php echo $useremail;?>" />
</td>
<td class='err'><?php echo $useremailerr;?></td>
</tr>
<tr>
<th class="cdtl">Website (Optional)</td>
<td><input type="url" name='userurl' value="<?php echo $userurl;?>" /></td>
<td class='err'><?php echo $userurlerr;?></td>
</tr>
</tbody>
</table>
<br>
<input class="btn" type="submit" value="Submit" />
</form>
</body>
</html>
Какая у вас ошибка? – bicho
Когда я использую action = "User sch contact.php", файл открывается всеми данными, введенными пользователем, даже если в поля формы есть странные символы. например Если пользователь вводит $, #, @ в поле имени, я не ожидаю, что форма будет отправлена, потому что это ошибка, которая должна быть зафиксирована скриптом. –
Эта строка вашего кода работает? if (! preg_match ("/^[a-zA-Z0-9] * $ /", $ username)) {потому что здесь вы допускаете только буквы и цифры – bicho