我有一个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就可以拾取并传递它。