我有一个简单的xhtml表单,文本框询问用户的姓名,id,地址等。我必须使用php来验证数据。例如,在ID字段中只允许6个数值,如果不是这种情况,它会向用户显示一个错误,要求他们修复它。我想做的是,当用户点击提交与不正确的数据,我想保持在字段中的数据时,错误显示出来。我目前正在这样做:-
<td><label for="customerid">*Customer ID: </label></td>
<td><input type="text" value="
<?php if(($_POST['customerid'] != $id) || ($_POST["customerfname"] != $fname)
|| ($_POST["customerlname"] != $lname)){echo $_POST['customerid'];} ?>"
id="customerid" name="customerid"/>
我刚刚修改了所有文本框的语句,但你可以想象,如果我必须为10个文本框这样做,它会变得有点复杂。我想知道这是不是一种更简单的方法。
大胆更新
<td> <select name="state" id="state" value="<?php echo (isset($_POST["state"]) ? : ''); ?>">
<option value="--">--</option>
<option value="ACT">ACT</option>
<option value="NSW">NSW</option>
<option value="NT">NT</option>
<option value="QLD">QLD</option>
<option value="SA">SA</option>
</select>
</td>
像这样?
<input type="text" name="customerid" value="<?php echo (isset($_POST['customerid']) ? $_POST['customerid'] : ''); ?>">
更新-在重新生成表单之前运行检查
<?php
if(($_POST['customerid'] != $id) || ($_POST["customerfname"] != $fname) || ($_POST["customerlname"] != $lname))
{
// do nothing
}
else
{
$_POST['customerid'] = '';
}
?>
<input type="text" name="customerid" value="<?php echo (isset($_POST['customerid']) ? $_POST['customerid'] : ''); ?>">
这里有几件事你可以单独做,也可以组合做:
- 通过AJAX提交表单
- 在将其传递给服务器之前在Javascript中进行验证(这将捕获用户可能遇到的大多数错误)
- 将提交的值保留在
$_SESSION
数组中,如果设置了,则将其回显到字段中。ex<input type='text' value='<?php echo $_SESSION['myVal'] || '';?>'></input>
这些语句是什么?
$_POST['customerid'] != $id
你可以使用$fields数组来存储标签,$errors数组来放置错误,然后使用
<?php $fields = array ('customerId' => '*CustomerID'); ?>
<?php // validation ?>
<?php foreach($fields as $name => $label): ?>
<td><label for="<?php echo $name ?>"><?php echo $label?>: </label></td>
<td>
<input type="text" value="" id="<?php echo $name ?>" name="<?php echo $name ?>">
<?php if(isset($errors[$name])): ?>
<?php echo $errors[$name] ?>
<?php endif; ?>
</td>
<?php endforeach; ?>
你也可以在表单中添加html验证,通过添加"required"属性到输入(<input required ... >
)或"pattern"属性