Php 有没有更优雅的方法来检查表单的默认值?

Php 有没有更优雅的方法来检查表单的默认值?,php,html,Php,Html,我正在寻找一种更好、更干净、更优雅的方法来使用PHP检查表单的默认值 例如,假设这是我的HTML(我的表单字段之一): 现在,假设用户没有编辑此字段,这意味着变量“compName”将等于“在此处输入业务名称(必需)” 现在,假设我想把它记录到一个db或者别的什么东西上,显然我不想记录默认值,所以我可以这样做 if($compName == "Enter Business Name here (required)" ){ $compName = ""; } or if($comp

我正在寻找一种更好、更干净、更优雅的方法来使用PHP检查表单的默认值

例如,假设这是我的HTML(我的表单字段之一):

现在,假设用户没有编辑此字段,这意味着变量“compName”将等于“在此处输入业务名称(必需)

现在,假设我想把它记录到一个db或者别的什么东西上,显然我不想记录默认值,所以我可以这样做

if($compName == "Enter Business Name here (required)" ){
     $compName = "";
}

or


if($compName == "Enter Business Name here (required)" ){
     $compName = // make it some kind of default value etc
}
现在,想象一下,如果我有20个表单字段,每个表单字段都有自己的默认值,那么我必须编写大量代码、大量if/else语句来检查每个表单字段的默认值。这会很快变得臃肿和难以控制

是否有一个函数或任何东西可以检查HTML表单的默认值?像一个包罗万象的函数

例如,假设这个函数存在并且它的名称为“$\u MYCATCHALLFUNC()”,那么id仍然像normal一样将所有表单值收集到它们各自的变量中,但是我可以这样做

<input type="text" name="compName" value="" placeholder="Enter Business Name here (required)" required="true" />
例如:

$variable1 = $_GET['value here'];
$variable2 = $_GET['value here'];
$variable3 = $_GET['value here'];

$allMyVarsToCheck = array($variable1, $variable2, $variable3);

foreach($allMyVarsToCheck as $varsChecked){
     if($_MYCATCHALLFUNC( $varsChecked ){
         //do something
     }
}

PHP有类似的功能吗?

您将一次又一次地重复自己的操作

/* 
 * Field name => field default value
 * If you have different languages on sites, you can use here function to translate
 * phrases like __()
 */
$defaultValues = array(
'compName' => __('Enter Business Name here (required)')
)

foreach($defaultValues as $filed => $value)
{
      if($_GET[$field] === $value)
      {
         $_GET[$field] = NULL;
      }
}

使用占位符向用户提供有关该输入字段的信息

<input type="text" name="compName" placeHolder="Enter Business Name here (required)">


在PHP上检查是否设置了此字段。

详细说明@HAL9000的评论,最好且更安全的方法是使用HTML5中的新字段:

要显示HTML,请使用
占位符和
required
属性,如下所示

<input type="text" name="compName" value="" placeholder="Enter Business Name here (required)" required="true" />

首先,我会在html页面上正确使用一些jQuery表单验证器,因为这样用户就可以在提交到新页面之前纠正错误。当我们处于HTML部分时,我会使用占位符标记而不是值,因为占位符文本不会随表单一起发送

检查用户是否在字段中输入了内容的一种简单方法是使用函数empty进行检查

foreach($allMyVarsToCheck as $var){
 if(!empty($var)){
    return true;
 }else{
    return false;
 }

HTML5
占位符
&
必需
+PHP?@HAL9000旧浏览器(或黑客)仍然可以发送空参数(或根本不发送)。@MarcelKorpel空参数是什么意思?我不是建议盲目信任用户输入。@HAL9000您的评论是什么意思?@MarcelKorpel我的意思是保留选项,允许向服务器端部分提交占位符值,并检查提交的值是否仅为空,然后检查业务逻辑的有效性。提交占位符似乎很难看。。。如果他们只删除一个字符呢?
<?php
if (empty($_POST["compName")) {
    // empty field handling
}
foreach($allMyVarsToCheck as $var){
 if(!empty($var)){
    return true;
 }else{
    return false;
 }