如何使用PHP检测元素是否可见?

如何使用PHP检测元素是否可见?,php,forms,Php,Forms,所以我有一个表单,其中6个字段中有2个对用户可见。然后,用户可以单击按钮显示其他字段 每个字段都使用以下PHP验证(注意:preg_匹配用于确保它们输入了一个空格,因为这是一个全名字段): 一直到客人6点 然后使用以下方法将结果回传给用户: if (isset($_POST["multipleSubmit"])) { if ($multipleFormErrors) { echo "<div class=\"errors\">"; echo "Please fix

所以我有一个表单,其中6个字段中有2个对用户可见。然后,用户可以单击按钮显示其他字段

每个字段都使用以下PHP验证(注意:preg_匹配用于确保它们输入了一个空格,因为这是一个全名字段):

一直到客人6点

然后使用以下方法将结果回传给用户:

if (isset($_POST["multipleSubmit"])) {
  if ($multipleFormErrors) {
    echo "<div class=\"errors\">";
    echo "Please fix the following errors:";
    echo "<ul>";
    foreach ($multipleFormErrors as $error) {
      echo "<li>";
      echo $error;
      echo "</li>";
    }
    echo "</ul>";
    echo "</div>";
  }
}
if(isset($\u POST[“multipleSubmit”])){
如果($multipleFormErrors){
回声“;
echo“请修复以下错误:”;
回声“
    ”; foreach($multipleFormErrors作为$error){ 回声“
  • ”; echo$错误; 回声“
  • ”; } 回声“
”; 回声“; } }
这里的问题是,即使用户看不到来宾3-6,也会显示所有错误。因此,如果他们在提交表单时只填写了最初的两位来宾,他们将得到一个错误,因为来宾3-6的值为空字符串。我认为解决这个问题的一种方法是让PHP检测显示值是否像JS中那样设置为block,那么这是可能的还是我需要做一些不同的事情


干杯

PHP发生在服务器上,Javascript发生在客户机上,这是问题的关键。服务器无法(没有更多的编码和状态跟踪)知道客户机是否正在查看某些内容

我建议:

  • 保持通用应用程序结构不变(不要进行状态跟踪,这需要更多的JS/jQuery/etc)

  • 也许将错误代码放在文本框中,这样只有文本框显示错误时才会显示错误

  • 对您的系统进行编码时充分认识到来宾(超过第一个?)是可选的,因此只有在存在部分名称的情况下才应该在服务器端进行来宾检查(事实上,错误显示来宾是否为空,这是经常发生的)。客人2-6的空名字可能是完全合法的

您的PHP没有“可见”的概念。用户浏览器中的页面与PHP生成的HTML无关。
if (isset($_POST["multipleSubmit"])) {
  if ($multipleFormErrors) {
    echo "<div class=\"errors\">";
    echo "Please fix the following errors:";
    echo "<ul>";
    foreach ($multipleFormErrors as $error) {
      echo "<li>";
      echo $error;
      echo "</li>";
    }
    echo "</ul>";
    echo "</div>";
  }
}