当php文件不在doc根目录下时如何使用图像生成php

时间:2018-06-28 18:20:33

标签: php

我有一个文件django_migrations,可以输出图像。

我这样引用它:

showcaptcha.php

工作正常,因此<img src='/security/showcaptcha.php'> 中的代码没有问题。

但是,出于安全原因,现在我将该php文件移到了doc根目录之外。将php文件放在doc根目录之外是一种很好的做法,因为这会使黑客更难访问任何源代码。

但是现在,我应该在img的src中放什么呢?

showcaptcha.php

<img src='???showcaptcha.php'>

2 个答案:

答案 0 :(得分:2)

将真实代码放入PHP include路径(位于文档根目录之外)的目录中,并在安全性目录中保留存根,该存根仅做require('showcaptcha.php');。闲逛的人只会知道该文件在某个地方存在,但是如果它们在文档根目录中,则将无法看到或找到它。

答案 1 :(得分:1)

我认为您正在使用public文件夹(或其他名称)放置公用文件,对吗?像这样:

- src/
- public/
  - index.php
- .htaccess

在这种情况下,您将无法使用../showcaptcha.php,则需要将其放在根目录.htaccess中。如果根.htaccess将用户发送到public文件夹,那么您需要创建一个新规则,将url指向showcaptcha文件。 像这样:

...
# access the `images/captcha.jpg` to get the result
RewriteRule ^images/captcha.jpg$ ./path/to/showcaptcha.php

# send all urls that not is a folder or a directory to public/index.php, then init the magic with friendly url in this file
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule .$ public/index.php