【问题标题】:PHP - the browser doesn't display echo'ed values after "require_once" command, why?PHP - 浏览器在“require_once”命令后不显示回显值,为什么?
【发布时间】:2014-06-28 11:44:55
【问题描述】:

我是 PHP 新手,我一直在学习一个教程,在该教程中我正在使用 PHP 中的 OOP 构建用户注册系统。我已经很好地消化了代码并且学得很快,但遇到了一个小问题(但令人沮丧)。

如果 echo 命令跟在 require_once 命令之后,我的 Web 浏览器不希望显示回显值,除非我在要回显的值之前添加额外的 echo '<br'>。看起来是这样的:

<?php
require_once 'core/init.php';
echo Config::get('mysql/host');

上面的这段代码不会在浏览器中回显最后一行。

<?php
require_once 'core/init.php';
echo '<br>';
echo Config::get('mysql/host');

上面的代码会在浏览器中回显最后一行。

为什么要加echo '&lt;br&gt;'才能显示?

非常感谢您的建议。

最好, 卢卡斯

core/init.php 中的代码如下:

<?php
session_start();

$GLOBALS['config'] = array(
    'mysql' => array(
        'host' => '127.0.0.1',
        'username' => 'root',
        'password' => '',
        'db' => 'lr'    
),
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800   
),
    'session' => array(
        'session_name' => 'user'    
)
);



spl_autoload_register(function ($class) {
require_once 'classes/' .$class . '.php';
});

require_once '/../functions/sanitize.php';


echo $config['mysql']['host'];

【问题讨论】:

  • 你使用输出缓冲吗? core/init.php 有什么代码?
  • Marcin,我已经在帖子中添加了init.php代码。
  • 提示:1) 确保您已将 PHP 配置为显示所有可能的错误消息 2) 使用浏览器的“查看源代码”菜单检查脚本的 raw 输出。
  • 你的代码还有比这更多的吗?例如这真的被包含在带有 html 标记的页面中吗?我的猜测是有,也许它真的在那里,但因为你的 html/css 标记的其余部分而“隐藏”了,br 是块级标签,它把它推到你可以看到的地方。你甚至从你的core/init.php 文件中看到echo $config['mysql']['host'] 吗?
  • include 和 require_once 是函数,对吧?所以它们的值不应该像 include('test.php'); 这样放在括号中吗? ?还是我错过了什么?

标签: php


【解决方案1】:

我已经测试了代码,一切正常。顺便说一句,您应该考虑不要在代码中使用$GLOBALS

下面是完整的工作代码:

index.php

<?php
require_once 'core/init.php';
echo Config::get('mysql/host');

core/init.php

<?php
session_start();

$GLOBALS['config'] = array(
    'mysql' => array(
        'host' => '127.0.0.1',
        'username' => 'root',
        'password' => '',
        'db' => 'lr'    
),
    'remember' => array(
        'cookie_name' => 'hash',
        'cookie_expiry' => 604800   
),
    'session' => array(
        'session_name' => 'user'    
)
);



spl_autoload_register(function ($class) {
require_once 'classes/' .$class . '.php';
});

require_once '/../functions/sanitize.php';


echo $config['mysql']['host'];

functions/sanitize.php

<?php 

function escape ($string) 
{ 
    return htmlentities($string, END_QUOTES, 'UTF-8'); 
}

classes/Config.php

<?php

class Config {

    static function get($what) {
        $what  = explode ('/', $what);
        echo $GLOBALS['config'][$what[0]][$what[1]];           
    }
}

在浏览器中启动index.php文件的结果是:

127.0.0.1127.0.0.1

如预期(127.0.0.1 显示 2 次,中间没有空格)

【讨论】:

  • 一定是我的浏览器有问题。感谢您检查代码。
猜你喜欢
  • 2013-03-15
  • 2013-04-21
  • 2020-02-27
  • 1970-01-01
  • 2017-06-29
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
相关资源
最近更新 更多