我有一个Javascript书签,POST到PHP脚本,我需要PHP知道bookmarklet发布的页面的文件名。我将使用file_put_contents()
的文件名,所以我需要它是一个真实的文件。
PHP也将在与发布的页面相同的服务器上运行。
script.php
位于任意服务器(http://site.com/
)http://site.com/foo/bar/baz
。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中找到网址的真实文件名?
答案 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或类似的东西,那么您必须编写自己的函数,该函数知道如何从虚拟路径转换为真实路径。