0

我有一个 php 文件,其中包含一个 HTML 表单,然后是 PHP 逻辑,然后是 HTML 页脚......按此顺序。

我正在尝试将表单中的值获取到页面底部(但在页脚之前)中的一些 php 验证逻辑中<?php VALIDATION LOGIC HERE ?>.

问题是当验证发现错误时,php 逻辑将 die(),因此,我的 HTML 页脚将不会被执行。

尽管我的 php die(); 有办法让我的 HTML 页脚执行吗?...或者是否有更好的整体方式来集成我的 HTML 和 PHP?谢谢!任何帮助将非常感激。


编辑:我实际上在我即将连接到数据库的代码中几乎所有地方都有 die() 。如果用户凭据正确,他们连接..如果凭据错误,那么它将死()..

这是好的做法和使用 die() 吗?看来我的问题的解决方案是使用 return() INSTEAD OF die()...为了继续处理 HTML 页脚。

另外,我有mysql_connect() 或die() 等情况。在处理 HTML 之前执行 die() 时,我如何继续处理剩余的 HTML 页面?..我不认为 mysql_connect() 或返回;是好的做法吗?

再次非常感谢!反馈非常有帮助!

4

5 回答 5

2

我将使用外部文件进行表单处理和验证,然后在错误/成功时重定向回表单页面,显示错误/成功消息。

于 2009-12-18T08:54:03.740 回答
2

与其他州一样,您应该有多个文件;header.php、index.php、footer.php、formvalidator.php。在您的 index.php 文件中,您应该包含 header.php 和 footer.php。在form标签中,action设置为加载formvalidator.php

在表单验证器脚本中,您可以有如下内容:

  // All form fields are identified by '[id]_[name]', where 'id' is the 
  // identifier of the form type.
  // The field identifier we want to return is just the name and not the id.
  public function getFormData() {
    $formData = array();
    foreach ($_POST as $key => $value) 
    {
      // Remove [id]_ 
      $name = preg_replace('!.*_!', '', $key);

      if (is_array($value)) {
        $formData[$name] = implode(',', $value);
      } else {
        $formData[$name] = $value;
      }
    }
    return $formData;
  } 

现在您可以遍历数组并验证每个字段。如果发现错误,则回显错误消息,否则处理表单。

更新
回答您的更新。

你应该“从不”使用 die()。相反,退出您所在的函数并返回错误消息。如果你只是死(),你永远不知道哪里出了问题。

除非您单击提交按钮,否则无法对表单进行服务器验证。您可以将我给您的代码与表单放在同一个 PHP 文件中,提交时,您只需重新加载相同的页面(只需 set action="<?= $_SERVER['PHP_SELF'] ?>"

如果您想在提交之前验证字段,您必须使用 javascript 来验证,例如jQuery.validate

嗯...似乎您需要更多有关如何将 PHP 与 HTML 混合的知识。看看这个初学者指南,了解如何在 PHP 中使用表单。

于 2009-12-18T09:13:41.437 回答
1

我只制作了一个 header.php 和一个 footer.php 文件。如果有错误只是返回而不是死。

这样,您可以在页面顶部放置:

<?php include('header.php');?>

///put in whatever html there may be


<?php 
/// put your form and processing info here
///just return if you need to prevent further processing
?>

///put in whatever html there may be
<?php include('footer.php');?>
于 2009-12-18T09:02:05.817 回答
0

有很多更好的方法来做你正在做的事情。但要回答您的第一个问题,您可以创建一个名为 footer 的函数,该函数返回一个字符串,其中包含需要在页脚中显示的 html 并调用 die(footer()); 但是...为什么要使用 die ?你不能只计算错误并将它们显示在结果中的某个地方吗?你不应该那样杀死脚本。

对于第二个问题。您可以像 BenTheDesigner 所说的那样使用一个 html 页面,其中的表单操作指向一个 php 脚本,该脚本进行验证,如果出现问题,则返回表单,如果没有,则转到其他地方。但也有,你应该删除 die() 函数并调用其他东西来重定向你。您可以使用 smarty 之类的模板系统将您的逻辑与您的 html 演示文稿分开。你可以把它全部写在一个文件中,但试着把你的整个逻辑写在文件的顶部,把所有的html写在底部。并使用 <?=$var?> 来显示 php 内容,或用于不同 html 结果的简单条件。但不要使用 die()。我猜这只是让事情复杂化。

于 2009-12-18T09:01:09.827 回答
0

使用 die() 不是一个好习惯,因为它不会向访问您网站的用户显示友好的消息。您应该绝对确定要使用 die。例如,当您怀疑存在黑客攻击时,您可以在程序中使用它。而是尝试使用 if else 结构来显示或隐藏事物。以下是您可能想要实现的原型:

  // if there is a validation error, show it, otherwise not
  if ($error == true)
  {
    // show footer
  }

  <!-- Your footer goes normally here -->
于 2009-12-18T09:26:42.720 回答