1

我正在向 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 } ?>  
4

2 回答 2

2

在类似的 urlhttp://example.com/#/sp/中,哈希#/sp/永远不会发送到服务器,因此除非您以某种方式与服务器交互,否则您无法在 PHP 中做任何事情。

参见维基百科

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

于 2012-06-22T00:49:03.740 回答
1

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

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

if ( isset($_GET['lang']) && $_GET['lang'] == 'sp' )
于 2012-06-22T00:53:24.893 回答