【问题标题】:How to make my footer appear after die()如何让我的页脚在 die() 之后出现
【发布时间】:2012-02-19 07:52:35
【问题描述】:

此处为 HTML 标头代码

<div id="content">
<?php
$checkvars = array('subject','message');
foreach ($checkvars AS $checkvar) if (strpos($_REQUEST[$checkvar],'{php}')!==false) die("We are sorry, but you cannot use \"{php}\" in a ticket submission. If you do have a legitimate issue, please press the back 
button in your browser and then change any instances of \"{php}\" to \"(php)\" so that your ticket may be submitted. Keep in mind that in the event that you are trying to exploit our system, we log and report all hack attempts to IC3.GOV.");
?>
</div>

此处为 HTML 页脚代码

我正在将上述代码用于计费系统,以通过提交支持票来阻止 eval 的利用。页眉工作正常,但页脚不会显示(因为我假设的 die 命令)。我对编码知之甚少(上面的代码不是我写的,它是由其他人在另一个网站上分享的)并且希望有人可以帮助我让我的页脚出现。

【问题讨论】:

  • 死而复生。请改用break
  • 我建议,如果您发现提交的信息有问题,您只需打印出您的页脚或其他内容,然后使用 die();
  • 答案是不die。您必须重新构建您的应用程序以使失败的方式有所不同。

标签: php html footer


【解决方案1】:

像这样创建自己的函数

died($message)
{
    //call footer
    die($message)
}

//Use it like this

died('You did something wrong');

【讨论】:

  • 这会将消息放在页脚下方。试试这个:function died($message){ echo $message; call_footer(); die(); }.
  • @JosephSilber 那个代码没用。它所做的只是返回一个空白页。
  • @Isaiah - 当然不是。您必须实际创建 call_footer 函数!
【解决方案2】:

你不能!

你现在要求脚本死掉 - 那之后你应该如何输出代码

[听起来像我多年前遇到的 CS 问题,当时客户抱怨他们的数据库在机器断电后严重关闭 - 因为只有我可以编写在机器关闭时运行的特殊代码以整齐地关闭表格]

【讨论】:

  • C 有 atexit 功能,所以也许 OP 正在寻找类似的东西。
  • 听起来更像是他在试图为一个不存在的问题寻找解决方案。 die() 不是一个正常的代码路径——而且真的不应该发生在生产代码上
【解决方案3】:

在 HTML 的“内部”做任何严肃的工作一开始就是一个糟糕的结构。在开始任何类型的输出之前完成所有验证、数据库查询、文件操作等。

<?php

// check $_POST
// update the database
// validate data
// water the plants
// DECIDE WHAT THE USER SHOULD SEE

?>
<html>
...
</html>

如果您检测到任何错误或无效操作,您可以简单地输出一个完整的错误页面。一个非常强调这一点的架构是 MVC,其中 controller logicviews 是明确分开的。尝试从这种结构中学习。

【讨论】:

    【解决方案4】:

    您可以使用register_shutdown_function 定义一个函数,该函数将在脚本终止前调用die() 时运行。

    或者,您可以将上面代码中的die()s 替换为最后调用die() 的函数。

    【讨论】:

      【解决方案5】:

      IC3.gov 是 Advanced Currency Markets 在瑞士被关闭的原因。

      【讨论】:

        猜你喜欢
        • 2020-11-10
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 2022-07-19
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        • 2015-03-03
        相关资源
        最近更新 更多