PHP 变量,其 strpos 基于动态哈希 url


PHP variable with strpos based on dynamic hash url

我正在动态地向 url 添加一个哈希 - 获取该 strpos 并尝试基于该变量显示某个页脚,我知道我可以翻译整个页面,但我需要为客户执行此操作,为什么它不起作用我想是问题所在?

网址看起来像 http://www.example.com/#/sp/

这是我的标题:

<?php 
    $page = $_SERVER['REQUEST_URI'];
    $isSpanish = strpos($page, '/sp/'); 
    $isSpanishDynamic = strpos('#/sp/', $page);

这是我的页脚:

   <?php if($isSpanishDynamic !== FALSE || $isSpanish !== FALSE) { ?>
                    <li><a href="/">PÁGINA DE INICIO</a></li>
                    <li><a href="/sp/our-story">HISTORIA</a></li>
                    <li><a href="/sp/menu">MENÚ</a></li>
                    <li><a href="/sp/contact">CONTACTO US</a></li>
                    <li><a href="/sp/order-online">ORDENE POR INTERNET</a></li>
    <?php } else { ?>
                    <li><a href="/">Home</a></li>
                    <li><a href="/en/our-story">Our Story</a></li>
                    <li><a href="/en/our-menu">Our Menu</a></li>
                    <li><a href="/en/contact">Contact Us</a></li>
                    <li><a href="/en/order">Order Online</a></li>
    <?php } ?>  

在像 http://example.com/#/sp/ 这样的 url 中,哈希#/sp/永远不会发送到服务器,所以你不能在 PHP 中做任何事情,除非你以某种方式与服务器交互。

参见维基百科:

片段标识符的功能与 URI 的其余部分不同:即,它的处理完全是客户端的,没有服务器的参与。当代理(如 Web 浏览器)从 Web 服务器请求资源时,代理会将 URI 发送到服务器,但不发送片段。相反,代理等待服务器发送资源,然后代理根据片段值处理资源。在最常见的情况下,代理将网页向下滚动到锚元素,该元素的属性字符串等于片段值。其他客户端行为是可能的

正如artlung指出的那样,哈希永远不会发送到服务器。还有其他几种方法可以做到这一点,查询字符串可能是下一个最容易实现的方法。您可以添加查询参数 /?lang=sp 而不是 /#/sp/ (完整网址:http://example.com/?lang=sp)。

然后在您的 PHP 脚本中,您可以使用以下代码对其进行检查:

if ( isset($_GET['lang']) && $_GET['lang'] == 'sp' )