不要打印出缓冲的内容

时间:2011-05-15 16:12:20

标签: php .htaccess

php:view.php

<h1>hello world</h1>

php:index.php

require('view.php');

如果两个文件都在根mysite.com

如果我访问mysite.com/index.php我应该得到' hello world '

如果我访问mysite.com/view.php我应该没有显示任何内容。

我正在寻找一些.HTACCESS方法,但欢迎任何其他建议:)

结论:希望用户无法查看纯文本视图,只允许requiredget_file_contents()读取文件。所以只在服务器内读取文件。

3 个答案:

答案 0 :(得分:3)

处理此问题的最佳方法是让您的包含文件从不打算在Web根目录之外访问,从而无法通过浏览器访问它们。

即。你的文件结构是:

www/index.php
includes/view.php

您可以将PHP的include_path设置为包含includes/目录,这样您的包也不需要在其中明确显示路径。

答案 1 :(得分:2)

不要打印输出。使用输出数据创建一些变量(例如:$tmp)并将其打印在index.php

答案 2 :(得分:0)

你可以做.htaccess的东西

<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options -Indexes
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>

这不是你想要的,但我认为如果你把它与ceejay的答案结合起来,它应该有用