为了账号安全,请及时绑定邮箱和手机立即绑定

标头已发送,php mvc

标头已发送,php mvc

PHP
明月笑刀无情 2022-12-23 15:37:27
这不起作用有两个原因是因为当您使用“/”包含其他 PHP 文件时将引用 index.php 的“/”因此在所有包含中您必须将“/”更改为 __DIR__以及 index.php 中的这个使用include ('/app/app.php');将无法找到正确的当前目录,因此对于您的特定情况,将代码更改为:索引.php:<?php include ('.\app\app.php');?>应用程序.php:<?phpinclude(__DIR__.'\template\template.php');?>模板\模板.php :<?php// Load our Headinclude (__DIR__.'\parts\head.php');// Load our Headerinclude (__DIR__.'\parts\header.php');// Load our Bodyinclude (__DIR__.'\parts\body.php');// Load our Footerinclude (__DIR__.'\parts\footer.php');?>
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

虽然您的示例不是 100% 清楚,但当初学者在调用之前尝试输出页面的一部分时,这个错误最常发生在初学者身上header()

一旦您echo输出了任何内容,就会发送标头,因此您需要确保任何调用都header()发生在任何页面生成代码之前,无论是对标记外的 HTML 调用echo还是简单的 HTML调用<?php ?>

这里的一个常见问题是无意中包含了一些空格,通常是<?php在文件顶部的之前,或者在结束之后?>

当您使用 MVC 方法时,好的做法是只有您的模板/视图文件应该包含 HTML,并且任何 PHP 脚本的第一个字符应该是<?php,并且您不应该?>在文件末尾关闭以确保任何尾随空格不会包含在您的页面视图中。


查看完整回答
反对 回复 2022-12-23
?
跃然一笑

TA贡献1826条经验 获得超6个赞

好的,我发现了问题。


我的路由器是为文章页面编写的:


else if (strpos($frontend->url, 'article.php'))

        {

                $frontend->article(); 

            // Si l'utilisateur poste un commentaire sur un article

            if (isset($_GET['action']) && $_GET['action'] == 'addComment')

                $frontend->addComment($_GET['id'], $_POST['author'], $_POST['comment']);

        }

它加载了我的文章页面,然后,如果提交了评论,它会在重定向处调用我的控制器函数 AddComment。我在加载文章页面之前放置了 If 语句,它工作正常!


感谢您的宝贵时间,也感谢让我按铃的 deceze。希望它可以帮助别人,我没有找到很多 MVC 结构的例子。


查看完整回答
反对 回复 2022-12-23
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信