处理我自己的函数的if()语句的意外结果

时间:2012-05-09 14:49:38

标签: php function if-statement

以前从未涉及到此问题,但在if()语句中测试用户编写的函数是否存在问题?

我在另一个位于不同服务器上的PHP包含文件中有以下内容(称为“myPhpInclude.php”):

<?php

error_reporting(E_ALL);
ini_set('display_errors','On');

function displayIt($phrase = NULL) {
    if (is_null($phrase)) return false;
    else return true;
}

if ($_SERVER['REMOTE_ADDR'] == '123.456.789.012') { /* my ip address */
    echo 'include file is coming in ok...';
}

?>

摘自我的HTML文档,该文档位于与PHP包含文件不同的服务器上:

<?php include('http://mydomain.com/includes/myPhpInclude.php'); /* the displayIt() function is contained in this include file */ ?>

...

<div id="content">
<?php if (displayIt('on')) { /* <-- MY PROBLEM ORIGINATES HERE */?>
    <p>Some content.</p>
<? } ?>
</div>

网页在if()语句处停止渲染,并且不返回任何错误。 PHP错误调试已激活并打开。

感谢。

3 个答案:

答案 0 :(得分:3)

等待等待,你有$短语和$阶段?我认为这是一个错字。

有:

function displayIt($phrase = NULL) { <== phrase
    if (is_null($phase))             <== phase

如果没有,请尝试将其放入try {}块,尝试echo displayIt('on');,也许由于某种原因返回false。

修改:而不是include('http://mydomain.com/includes/myPhpInclude.php');尝试include('./includes/myPhpInclude.php');或将其替换为所包含文件的文件系统路径。

即使cross_domain_include有效,从url获取php文件也不会给你php代码,而是输出(在这种情况下会是空的)。

答案 1 :(得分:2)

问题在于包含文件:

include('http://mydomain.com/includes/myPhpInclude.php');

将通过正常的http请求从服务器includes/myPhpInclude.php请求文件http://mydomain.com。你将收到的不是php代码,而是运行该php文件时web服务器的输出。甚至在某些条件下:

  

PHP 4.3.0之前的Windows版本的PHP不支持通过此函数访问远程文件,即使启用了allow_url_fopen也是如此。

您需要做的是,通过本地文件系统包含文件,使用相对路径(或文件系统的绝对路径),例如:

include 'includes/myPhpInclude.php';

答案 2 :(得分:1)

你在第二个变量中拼错了“短语”。