<form name="contact" method="POST" action="">
<input type="text" name="first_name">
<input type="submit" name="submit">
</form>
我想回复first_name
字符串。即使没有设置name="first_name"
的值。
我到底想要实现什么?
看到变量$ name,我希望它能回显first_name
。
所以,我可以说我在表单中添加了另一个输入,
<input type="text" name="surname">
我希望我的函数check_empty
说:“请不要将姓氏字段留空。”以及:“请不要将名称字段留空。 “
class validator{
function check_empty($first_name){
if(empty($first_name)){
echo "Please don't leave the $first_name field empty.";
}
}
}
修改 基本上我试图做的是仅使用一个函数来验证所有空字段。并显示相关消息,如果firstname字段为空,请告诉它们为空。如果姓氏是空的,告诉他们它是空的。我不想使用多个函数来验证不同的空字段。
答案 0 :(得分:2)
如果要在用户提交值之前验证这一点,则必须使用JS
执行此操作如果要使用PHP验证,则必须检查是否按下了提交并检查名字值:
if(isset($_POST['submit'])) {
//check first name value
if(isset($_POST['first_name']) && $_POST['first_name'] != '') {
//enter code here
} else {
echo "Please don't leave the $_POST['first_name'] field empty.";
}
}
或者,使用你的功能:
if(isset($_POST['submit'])) {
check_empty($_POST['first_name']);
//do whatever
}
上课:
if(isset($_POST['submit'])) {
$validation = new validator();
$validation->check_empty($_POST['first_name']);
}
L.E:我将使用我提供的后一个例子。 SO:
if(isset($_POST['submit'])) {
$validation = new validator();
//you do this for every `_POST` you have
$values = array();
$values['label'] = 'First Name';
$values['value'] = $_POST['first_name'];
$validation->check_empty($values);
}
//check_empty needs a small adjustment now:
function check_empty($value){
if(empty($value['value'])){
echo "Please don't leave the " . $value['label'] . " field empty.";
}
}
希望它有所帮助!
继续编码!
顷。
答案 1 :(得分:1)
我假设您正在循环$_POST
并呼叫check_empty
。在这种情况下,请执行以下操作
$objValidator = new validator();
$arrErrors = array();
foreach($_POST as $key => $value) {
$arrErrors[] = $objValidator->check_empty($key, $value);
}
array_filter($arrErrors); //Remove FALSE values, so only actual errors are stored
if( count($arrErrors) ) {
echo implode("<br />", $arrErrors);
//Show form?
} else {
//Everything is filled in
}
然后,只需修改你的方法;
function check_empty($key, $value){
if(empty($value)){
return "Please don't leave the ". $key ." field empty.";
} else {
return FALSE;
}
}
答案 2 :(得分:1)
您可以在一行中获取空字段的名称:
$empty_fields = array_keys(array_diff_key($_POST, array_filter($_POST)));
记住KISS - 保持简单,愚蠢。
答案 3 :(得分:0)
好的,你们帮忙,这就是我的所作所为。它几乎给了我想要的结果。
class validator{
function check_empty($post_array){
foreach($post_array as $key=>$value){
if(empty($value)){
echo $key . " field cannot be left empty" . "</br>";
}
}
}
}
if(isset($_POST["submit"])){
$Validator = new validator();
$Validator->check_empty($_POST);
}
再次感谢:)