Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法让页面根据url中提到的id做不同的事情?_Php_Html - Fatal编程技术网

Php 有没有办法让页面根据url中提到的id做不同的事情?

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

如何使页面根据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=' + 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!');
}

您想在服务器端还是客户端执行此操作?两者都可以,但我想最好是客户端。