Php 有没有办法让页面根据url中提到的id做不同的事情?
如何使页面根据URL中提到的元素id做两件不同的事情?例如,如果URL是website.com/page#id1,那么页面将做一件事,如果它是website.com/page#id2,那么它将做另一件事?URL的哈希部分没有传递到服务器,您将需要使用例如JavaScript来做这件事 在JavaScript中,URL的“哈希”部分如下所示:Php 有没有办法让页面根据url中提到的id做不同的事情?,php,html,Php,Html,如何使页面根据URL中提到的元素id做两件不同的事情?例如,如果URL是website.com/page#id1,那么页面将做一件事,如果它是website.com/page#id2,那么它将做另一件事?URL的哈希部分没有传递到服务器,您将需要使用例如JavaScript来做这件事 在JavaScript中,URL的“哈希”部分如下所示: var hash_part = window.location.hash; window.location = '/check_hash.php?hash
var hash_part = window.location.hash;
window.location = '/check_hash.php?hash=' + hash_part.split('#')[1]
获得后,您可以执行以下操作,例如:
http://website.com/page?id=1
- 通过AJAX调用将其传递给服务器
- 重定向将哈希传递到服务器的页面,例如:
var hash_part = window.location.hash;
window.location = '/check_hash.php?hash=' + hash_part.split('#')[1]
- 或者在不需要调用服务器的情况下执行以下操作:
alert('My hash is "' + hash_part + '", no need to call the server!');
它有用吗?如果您想使用PHP,可以在URL中提供参数,例如:
website.com/page.php?do=something
或
因此,您应该使用问号将参数传递给PHP,而不是使用您在问题中使用的hashtag
在PHP代码中,您可以获取此参数并根据其值执行操作:
<?php
$param = $_GET['do'];
if ($param == "something") {
//Do something...
}
else if ($param == "somethingelse") {
//Do something else...
}
?>
服务器端:
客户端您必须使用
location.hash
或location.href
来确定哪些id
已发送到您的页面。服务器端和客户端,答案都是肯定的
在服务器端,您的URL的结构需要与您的不同,例如:
http://website.com/page?id=1
…或使用RESTful路由
http://website.com/page/1
后者可以通过类似Apache的mod_rewrite
来实现
要访问PHP代码中的id
值,您需要$\u获取['id']
,并对其进行适当的处理
客户端,您需要使用JavaScript使用
location.hash
或location.href
来完成此操作。GitHub通过可导航散列来实现这一点,效果非常好。如果您想根据url参数更改页面加载内容,可以这样读取
if($_GET["id"] == "test"){
do your stuff
}
这里的示例如果是客户端,则需要使用javascript。比如说
<script>
if (location.hash == 'id1') {
alert('page1!');
}
else if (location.hash == 'id2') {
alert('page2!');
}
</script>
if(location.hash==“id1”){
警报('page1!');
}
else if(location.hash==“id2”){
警报('page2!');
}
您想在服务器端还是客户端执行此操作?两者都可以,但我想最好是客户端。