包含 - 与直接链接不同的结果

时间:2011-03-10 01:25:28

标签: php stream

我有以下php代码:

<html>
  <body>
    <?php
    $_GET = Array('filename' => 'scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML'); // add the others here too
    include('scores.php');
    ?>
  </body>
</html>

使用此代码我试图包含此http://apps.facebook.com/krajecr/scores.php?filename=scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML 直接链接有效,但您可以在此处查看包含的结果:http://apps.facebook.com/krajecr/pokus.php - error: Warning: fclose(): supplied argument is not a valid stream resource in /3w/webz.cz/p/programming/facebook/scores.php on line 9

你能帮我解决一下吗?

scores.php可在此处找到http://www.flashkit.com/tutorials/Games/High-sco-Glen_Rho-657/index.php()

这是前10行:

<?php

    $winscore = (int)$winscore;

    // Create a Blank File if it doesn't already exist
    if (!file_exists($filename))
    {
        $file=fopen($filename, "w");
        fclose ($file);
    }

1 个答案:

答案 0 :(得分:0)

该错误表示您尝试对不是流资源的内容执行fclose

假设您从$file获得fopen,此处唯一的情况是fopen失败,$filenot a stream resource,但FALSE }。例如,如果您的网络服务器正在运行的用户没有创建该文件的权限,则可能会失败。

为函数调用添加错误检查。

我无法解释为什么当PHP通过网络执行包含请求时,这会有所不同。

修改

$_GET = Array('filename' => 'scores/score.sco&scoresize=10&action=VIEW&viewtype=HTML'); // add the others here too

应该是

$_GET = Array(
    'filename'  => 'scores/score.sco',
    'scoresize' => '10',
    'action'    => 'VIEW',
    'viewtype'  => 'HTML'
);

完全尝试使用HTTP查询字符串语法无处不在;这不是世界的运作方式!

我还注意到“scores.php”似乎永远不会定义$filename是什么。难怪文件创建失败:你永远不会给它创建一个有效的文件名!检查fopen的返回值 - 一如既往 - 应该会显示此错误。

你可能想写$_GET['filename']