我正在动态地向网址添加一个哈希 - 采用该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 } ?>
答案 0 :(得分:2)
在像http://example.com/#/sp/
这样的网址中,哈希#/sp/
将永远不会被发送到服务器,因此除非您以某种方式与服务器进行交互,否则您无法在PHP中执行任何操作。
请参阅Wikipedia:
片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端,没有服务器的参与。当代理(例如Web浏览器)从Web服务器请求资源时,代理会将URI发送到服务器,但不会发送该片段。相反,代理等待服务器发送资源,然后代理根据片段值处理资源。在最常见的情况下,代理将Web页面向下滚动到锚元素,该锚元素具有等于片段值的属性字符串。其他客户行为也是可能的
答案 1 :(得分:1)
正如artlung指出的那样,散列永远不会发送到服务器。还有其他几种方法可以实现,查询字符串可能是您实现的最简单的方法。您可以添加/#/sp/
(完整网址:http://example.com/?lang=sp)的查询参数,而不是/?lang=sp
。
然后在PHP脚本中,您可以使用以下代码进行检查:
if ( isset($_GET['lang']) && $_GET['lang'] == 'sp' )