【发布时间】:2016-08-18 02:07:47
【问题描述】:
这是我的代码。我已经在 PHP 代码中设置了显示错误消息。但是当所有元素为空时,显示错误消息似乎不起作用。它可以提交数据库中的空值。
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<p><span class="error">* required field.</span></p>
<form method="post" action="add.php<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website: <input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
这是我的表单操作代码 add.php
<?php
mysql_connect("localhost","root","") or die("Cannot connect");
mysql_select_db("testingdb");
$name= $_POST['name'];
$email = $_POST['email'];
$website =$_POST['website'];
$comment=$_POST['comment'];
$gender=$_POST['gender'];
$result=mysql_query("INSERT INTO information (name , email, website, comment, gender) VALUES ('$name' , '$email' , '$website' , '$comment' , '$gender')");
if($result){
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('SUCCESSFULLY ADD!')
</SCRIPT>");
}
else {
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('FAILED TO ADD!')
</SCRIPT>");
}
?>
【问题讨论】:
-
您需要验证
add.php中的请求数据。 (您的其他 PHP 验证发生在 浏览器甚至接收到 HTML 之前,因此不会验证用户输入的内容。) -
您的问题是您在错误的位置验证表单。看我的回答。
标签: javascript php mysql css forms