【问题标题】:What about calling aspx in php?在php中调用aspx怎么样?
【发布时间】:2009-11-09 12:31:45
【问题描述】:

这是我的代码

<html>
<body>

<?php
include("Default.aspx");
?>

</body>
</html>

但它一直给我输出



我只需要在网站上运行 Hello World。

【问题讨论】:

  • 选择一种语言并使用它。像这样使用 ASP 和 PHP 构建同一个站点是相当奇怪的。

标签: php asp.net


【解决方案1】:

如果你想要 aspx 文件的输出,你需要通过一个可以理解 aspx 文件而不是文件系统的 web 服务器来请求它,例如

include("http://example.com/Default.aspx");

您的 PHP 安装必须启用 URL fopen wrappers 才能正常工作。

正如 Magnus Nordlander 在另一个答案中指出的那样,如果您希望在文件中找到 php 代码,则应仅使用 include。如果不这样做,您可以简单地使用readfile 逐字输出数据:

readfile("http://example.com/Default.aspx");

【讨论】:

    【解决方案2】:

    您似乎以非常错误的方式处理此问题。

    include()(和 require(),就此而言)所做的是它使用 PHP 解释器解析指定的文件。如果您的 aspx 代码出于某种原因生成了 PHP 代码,并且应该由 PHP 解释器解析,那么 Paul Dixon 建议的方式将是解决此问题的正确方法。但是,我会强烈建议不要这样做。

    一方面,这是一场等待发生的巨大安全灾难。从架构上讲,它也非常糟糕。

    如果你想包含使用aspx生成的HTML标记等,你应该做的是使用

    echo file_get_contents("http://www.example.com/Default.aspx");
    

    这样,输出中的任何 PHP 代码都不会被解析,从而避免了上述安全灾难。但是,如果您能够在不混合这样的语言的情况下做到这一点,那可能会是一个更好的解决方案。

    【讨论】:

    • 虽然您的观点很好,但您假设 Default.aspx 的输出不受信任。如果是这种情况,那么即使使用 file_get_contents 也是一个坏主意 - 可以将基于 javascript 的漏洞利用传递给客户端。
    • 这也是一个好点。清理获取的响应肯定是谨慎的。我要说的是,通过 eval() 运行代码既没有必要,又增加了另一个攻击向量。无论如何,这只是进一步表明整个提议只是一个坏主意。
    • 这是一个很酷的答案,它与 aspx 中的控件和标签一起工作正常,但我需要在 .aspx 中显示 .php 中的图像,但显示效果不佳:(
    • 好的,我刚刚发现了问题,我从 asp 更改了 urlimage :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多