【问题标题】:PHP and HTML integrationPHP 和 HTML 集成
【发布时间】:2010-12-27 23:28:51
【问题描述】:

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

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

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

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


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

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

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

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

【问题讨论】:

  • 请提供代码以及您的问题
  • 为什么您的验证退出脚本?您可以让验证只输出一条 HTML 错误消息,然后让它继续工作。这样,页脚就可以很好地通过。

标签: php html die


【解决方案1】:

与其他州一样,您应该有多个文件; 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文件中,提交的时候直接重新加载同一个页面(只要设置action="<?= $_SERVER['PHP_SELF'] ?>"

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我只制作了一个 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');?>
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

            // if there is a validation error, show it, otherwise not
            if ($error == true)
            {
              // show footer
            }
          
            <!-- Your footer goes normally here -->
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-15
            • 2011-05-08
            • 2017-02-23
            • 2016-12-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-22
            相关资源
            最近更新 更多