【问题标题】:Apache Url are not being reading correctly, rewrite problem?Apache Url 读取不正确,重写问题?
【发布时间】:2011-11-12 08:39:12
【问题描述】:

最近我将我的网站迁移到另一台使用 ISPCP 的服务器。但是,我遇到了一些麻烦,在 URL 中传递的变量没有被读取。

示例: 网址: http://www.site.com/index.php?page=show.php&id=4030

应该调用“show.php”(show.php 在某个表中进行选择并显示结果,它在旧服务器上工作),但现在这个 url 只是调用“index.php" 不解释参数。

是不是重写的问题?

Apache 日志没有显示任何错误,它返回代码 200... 出了什么问题?

【问题讨论】:

  • 你能举个小例子吗,比如 index.php 文件中的print_r($_GET);
  • 当然:site.com/index.php?page=show.php&id=4026 结果:数组 ([page] => show.php [id] => 4026)
  • 到目前为止听起来还不错,不是吗?如果 show.php 没有被调用,你需要查看 index.php 为什么
  • 好久没用PHP开发了,有什么变化吗?我只是调用“require_once("$HTTP_GET_VARS[page]");"在我的 index.php 中
  • 感谢 Pekka,已解决。我将:“if (!$HTTP_GET_VARS['page'])”更改为“if (!$_GET['page'])”

标签: php apache apache2


【解决方案1】:

来自cmets:

require_once($_GET['page'])

无论如何,这是一种包含文件的坏方法。完全不安全。

【讨论】:

    【解决方案2】:

    问题出在 index.php 中

    我刚换了:

    if ($HTTP_GET_VARS['page'])
       require_once("$HTTP_GET_VARS[page]");
    

    )

    if (!$_GET['page'])
       require_once($_GET['page']);
    

    我只是不知道为什么它在旧服务器上工作......

    【讨论】:

    • 旧服务器可能有 PHP 4 甚至更早版本。但是,这是一个安全风险 - 它允许外部攻击者访问您系统中的其他文件。参见例如How can I sanitize my include statements? 了解如何修复它
    猜你喜欢
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多