我已经设置了我的代码,因此它需要表单中的所有字段,但由于某种原因,它只适用于输入类型的文本,电子邮件和密码。所以我的问题是我如何获得单选按钮,选择框和复选框也是表单中的必填字段? 这是我的代码:
<form action="" method="post">
<ul id="register">
<li>
<input type="text" name="first_name" placeholder="First Name">
</li>
<li>
<input type="text" name="last_name" placeholder="Last Name">
</li>
<li>
<input type="email" name="email" placeholder="Email"><br><br>
</li>
<li>
<input type="password" name="password" placeholder="Password">
</li>
<li>
<input type="radio" name="sex" value="male">Male
<input type="radio" name="sex" value="female">Female
</li>
<li>
Birthday:
<select name="month">
<option value="January">January</option>
//all the other month options
</select>
<select name="day">
<option value="1">1</option>
//all the other days of the month
</select>
<select name="year">
<option value="2013">2013</option>
//ton of year options here
</select><br><br>
</li>
<li>
<input type="checkbox" name="terms_of_service" value="termsofservice">Terms of Service<br><br>
</li>
<li>
<input type="submit" name="registrationform" value="Sign up">
</li>
</ul>
</form>
<?php
if (empty($_POST) === false) {
$required_fields = array('first_name', 'last_name', 'email', 'password', 'sex', 'birthday', 'terms_of_service');
foreach ($_POST as $key=>$value) {
if (empty($value) && in_array($key, $required_fields) === true) {
$errors[] = 'You didn\'t fill in all of the categories.';
break 1;
}
}
}
print_r($errors);
?>
答案 0 :(得分:1)
试试这个..
if(isset($_POST['registrationform'])){
$required_fields = array( /* all required fields including radio, select and
checkboxes as associative array with key as actual name and value as field name */);
foreach ( $required_fields as $key=>$value) {
if (!isset($_POST[$value]) || $_POST[$value]=='') {
$errors[$value] = $key." is required";
}
}
print_r($errors);
}
答案 1 :(得分:1)
服务器端和客户端验证:
服务器端验证在服务器中处理。某些数据无法在客户端验证,必须在服务器端验证。例如,数据库中两个日期之间的日期。
在提交表单之前,客户端验证将在客户端进行处理。使用客户端验证的优点是它减少了网络流量,因为验证是在客户端计算机本身中处理的。例如电子邮件isnumeric isdate等。
如果您想要服务器端验证(在PHP中),您需要编写如下条件:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$error_msg = array();
if(!isset($_POST['your_radio_button_name'])){
$error_msg[] = "Enter the required fields";
}
if(!isset($_POST['your_checkbox_button_name'])){
$error_msg[] = "Enter the required fields";
}
if(!isset($_POST['your_select_box_name'])){
$error_msg[] = "Enter the required fields";
}
if(isset($error_msg) && count($error_msg) == 0){
// do some form processing
}
else{
// redirect to the form again.
}
}
在php中阅读有关表单验证的更多信息:
http://phpmaster.com/form-validation-with-php/
如果您想要客户端验证,那么可以使用多种选项:
检查以下文章:
http://www.jeasyui.com/tutorial/form/form3.php
希望它能帮到你。
答案 2 :(得分:1)
试试这个:
<form action="" method="post">
<ul id="register">
<li><input type="text" name="first_name" placeholder="First Name"></li>
<li><input type="text" name="last_name" placeholder="Last Name"></li>
<li><input type="email" name="email" placeholder="Email"><br><br></li>
<li><input type="password" name="password" placeholder="Password"></li>
<li>
<input type="radio" name="sex" value="male">Male
<input type="radio" name="sex" value="female">Female
</li>
<li>
Birthday:
<select name="month">
<option value="">Choose</option>
<option value="January">January</option>
<option value="February">February</option>
</select>
<select name="day">
<option value="">Choose</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="year">
<option value="">Choose</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select><br><br>
</li>
<li><input type="checkbox" name="terms_of_service" value="termsofservice">Terms of Service<br><br></li>
<li><input type="submit" name="registrationform" value="Sign up"></li>
</ul>
</form>
<?php
if (!empty($_POST)) {
$required_fields = array('first_name', 'last_name', 'email', 'password', 'sex', 'month', 'day', 'year', 'terms_of_service');
foreach ($required_fields as $value) {
if (empty($_POST["$value"])) {
$errors .= "$value is required<br>";
}
}
echo $errors;
}
?>
答案 3 :(得分:0)
Ultimate的答案是完美的,是您所需要的。
我会解释一下什么是服务器和本地验证。
本地验证是指检查html代码中的输入或使用javascript。很快,因为它是在浏览器中检查。但访问您网页的任何人都可以通过很少的技术技能禁用该验证。
服务器验证是指检查php代码中的输入。 (<?php and ?>
之间的代码)。然后在服务器中进行检查。因此,访问您网页的任何人都不能够禁用该验证。
无论如何,我建议同时使用两者。因为本地验证很快,并且服务器验证是安全的。
要添加本地验证,此链接将非常好地解释: http://www.w3schools.com/html5/att_input_required.asp
[确保您在代码的第一部分中将doctype设置为使用html5:
<!DOCTYPE html>
<html>
<head>
...blablabalblabla more html code...
然后您的HTML验证将产生如下内容:
<form action="" method="post">
<ul id="register">
<li>
<input type="text" name="first_name" placeholder="First Name" required="required">
</li>
<li>
<input type="text" name="last_name" placeholder="Last Name" required="required">
</li>
<li>
<input type="email" name="email" placeholder="Email" required="required"><br><br>
</li>
<li>
<input type="password" name="password" placeholder="Password" required="required">
</li>
<li>
<input type="radio" name="sex" value="male" required="required">Male
<input type="radio" name="sex" value="female" required="required">Female
</li>
<li>
...
这是html5本地验证。