PHP / Javascript,来自重写URL的真实文件名

时间:2012-03-17 15:27:02

标签: php javascript

我有一个Javascript书签,POST到PHP脚本,我需要PHP知道bookmarklet发布的页面的文件名。我将使用file_put_contents()的文件名,所以我需要它是一个真实的文件。

PHP也将在与发布的页面相同的服务器上运行。

例如:

  • script.php位于任意服务器(http://site.com/
  • 的根目录中
  • 操作员在执行书签之前浏览服务器上的任意页面(http://site.com/foo/bar/baz
  • bookmarklet将一些数据发送到http://site.com/script.php
  • script.php现在需要对与http://site.com/foo/bar/baz对应的文件进行一些修改,但无法将URL解析为文件名。

Javascript中有location.href,PHP中有$_SERVER[ 'HTTP_REFERER' ],但如果是重写的URL(通过mod_rewrite或其他),则不包含实际文件名。

有没有办法在PHP或Javascript中找到网址的真实文件名?

2 个答案:

答案 0 :(得分:1)

您不能使用$_SERVER["HTTP_REFERER"],因为客户可能会选择不发送它,这似乎是一个重要的数据。

在JavaScript中,您只能知道向用户显示的网址(通过document.location.href)。如果你想知道处理该URL的php脚本的文件路径,只需让PHP在页面的某个地方输出文件路径(在JS源代码中),这样JS就可以把它拿起并传递给它。

答案 1 :(得分:1)

  

Javascript中有location.href,而$ _SERVER ['HTTP_REFERER']中有   PHP,但是在重写URL的情况下(通过mod_rewrite或其他)   这些不包含真实的文件名。

     

有没有办法在PHP或PHP中找到URL的真实文件名   的Javascript?

在Javascript中:客户端Javascript不知道服务器端代码,除非服务器将该信息传递给客户端。简短的回答:除非你使它成为可能,否则。

在PHP中:我认为realpath会将URL转换为本地驱动器上的物理文件(在ASP中是Server.MapPath),但是我不知道这是否适用于重写的URL 。我非常怀疑。如果我是正确的,它将不会,那么可能存在一个特定于您使用的任何框架的相关函数,如果正在使用它。如果您只是在没有框架的情况下使用mod_rewrite或类似的东西,那么您必须编写自己的函数,该函数知道如何从虚拟路径转换为真实路径。