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


PHP/Javascript, Real Filename from Rewritten URL

我有一个Javascript bookmarklet,它可以发布到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中找到URL的真实文件名

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

有没有任何方法可以在PHP或Javascript?

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

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

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

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