PHP包括帮助

时间:2011-03-09 21:32:15

标签: php include

我需要一些高级文件包含代码的帮助..我用Google搜索,但我不确定如何用简短的方式来描述它。

基本上这里是文件结构:

/public_html/include_handle.php  

/protected_site/index.html
               /images/image.jpg  

如果我使用常规include语句包含index.html,则image.jpg显然不会在浏览器中显示,因为它不在公共/相对目录中。除了一些沉重的preg_match / replace解析之外,如何在包含index.html时在include_handle.php页面上显示图像?我还希望能够链接到index.html页面中的其他页面。我知道我可以使用iframe并将静态页面放在公共目录中,但我不希望出于各种原因。任何帮助将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:2)

您可以设置Apache别名以在公共站点中创建“虚拟”目录:

Alias /images /protected_site/images

之后,面向公众的网页中的任何/images/网址都将在内部重定向到受保护网站的图片目录。成本是这暴露了受保护站点的文档树的一部分,因此您必须小心放入该图像目录中的内容。

答案 1 :(得分:1)

第一个解决方案:将图像放到公共文件夹中,浏览器可以访问它,.html中的链接应该是相对于/ public_html

第二个解决方案:通过php脚本提供受保护的图像(您需要为浏览器发出正确的标题并使用readfile例如传递图像数据) jpg的例子:

header("Content-Type: image/jpeg"); 
readfile("/protected_site/images/image.jpg");

图像链接如下:

image.php?id=image.jpg

答案 2 :(得分:1)

您可以使用页面的base HTML标记,就好像它位于不同的目录(或主机)中一样。将使用此值作为当前文档解析相对链接。

我猜我无法通过网络访问protected_site。您将需要一个PHP脚本来读取受保护目录中的文件并将其发送给用户。它看起来像:

getimage.php?image=image.jpg

如果您不想更改index.html的内容并仍然以something.jpg而不是上面的方式链接到图像,则可以在服务器端使用mod_rewrite:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?\.(jpg|gif|png))$ getimage.php?image=$1 [L]

这样,apache会为你的PHP调用公共目录中不存在的任何图像文件。