如何使用php从javascript include中获取主页的url


How to get url of main page with php from within a javascript include?

我有一个标题为include的页面,只有当当前页面的文件名包含某个单词时,include才需要更改电话号码。

通常情况下,对于不在include中的更改,下面的代码会起作用。

<?php if (strpos($_SERVER['REQUEST_URI'],'example-match') !== false) 
{
    echo '555-555-5555';
} 
else 
{
    echo '1-800-555-5555';
}
?>

但是,由于代码位于页面上的包含文件中,而不是原始页面本身,因此服务器将返回该包含文件的名称。

示例:www.Example.com/im-on-this-page.html返回include的名称。php文件位于-www.Example.com/header-include.php。

有没有办法从include中的代码中获取include"包含在"上的页面的URL,而不是include的URL?

更新:

该文件是通过Javascript包含的,因为它包含的页面是一个html文件:

<script>
$('#Header').load('/includes/header.php');
</script>

截至您的最后一条评论:

然后它不是include,而是对PHP的GET请求,该请求将传递JavaScript。然后,给定的URL是正确的。为了找出脚本包含的位置,您可以查找referer标头(不稳定),也可以将当前文件传递给脚本本身:

<script> $('#Header')
 .load('/includes/header.php?from=encodeUriComponent("<?php echo $_SERVER['REQUEST_URI'] ?php>")'); </script> 

在脚本中,使用$_GET['from'] 而不是$_SERVER['REQUEST_URI']

正如评论者所提到的。这是不正确的。$_SERVER在脚本(包括)的持续时间内不会发生更改。包含一个文件不会改变它。

javascript include,这意味着它实际上是由客户端通过ajax调用调用的,并且在页面显示之前不包含在服务器上。(你加载一页,然后加载另一页,在第一页的某个地方"打印")

一个快速而肮脏的修复方法是在第一个php文件上沿着这些行写一些东西

<?php if (strpos($_SERVER['REQUEST_URI'],'example-match') !== false) 
{
    echo "<script> var phone_number = '555-555-5555';</script>";
} 
else 
{
    echo "<script> var phone_number = '1-800-555-5555';</script>";
}
?>

它将在客户端创建一个变量,然后您可以从加载的页面调用该变量作为javascript变量