我有很多获取值来定义用户将要看到的页面,例如"profile"我将显示配置文件页面等等.
找出要显示的页面我尝试做类似的事情:
switch ($_GET) {
case 'profile':
require_once('function/profile.php');
break;
case 'team':
require_once('function/team.php');
break;
Run Code Online (Sandbox Code Playgroud)
但它没有显示结果..
我发送GET请求:index.php?profile,例如..
这里有什么问题,我怎么能设法做类似的工作呢.先感谢您!
为了使您的示例有效,您可以替换$_GET为key($_GET)
请注意,虽然这key()将返回数组的第一个键,因此如果您更改URL的变量顺序,此行将停止运行.
$ _GET是查询字符串中找到的键值对中的数组(脚本名称和问号后面的URL的一部分).
例如,查询字符串test=1&foo=bar将转换为:
Array(
test => 1
foo => 'bar'
)
Run Code Online (Sandbox Code Playgroud)
在OP示例中index.php?profile,您将得到一个$ _GET数组,如:
Array(
profile => null
)
Run Code Online (Sandbox Code Playgroud)
做这样的网址的问题在于它是非标准的.当您以非标准方式执行操作时,您必须提出非标准解决方案来解决问题.
以下是一些选项以及每个选项的问题:
你可以用$_SERVER['QUERY_STRING']它来获取你?在网址后面的所有内容.如果在url中传递的唯一内容只是profile(或其他一些单值),这很好.在那种情况下,$_SERVER['QUERY_STRING']除了profile它之外什么都没有.但是你也失去了在get字符串中传递其他参数的能力.
您可以使用@stewe描述的方法.php 键函数将从传入的数组中的当前位置返回键.如果尚未进行任何循环,则当前位置是第一个元素.这也适用于多个get参数.您的查询字符串将如下所示index.php?profile&test=1&foo=bar.问题是profile(或任何页面)必须是第一个,否则键将返回传递的第一个参数的键.
另一种选择是使用标准方法来使用键和值.无论页面如何,您都使用相同的密钥,只更改值.然后,您的网址看起来像index.php?page=profile,您可以随时访问该页面$_GET['page'].
你可以使用mod_rewrite.设置简单,大多数主机支持它(或其他类似的东西),并且有数百万个关于如何使其工作的教程和示例.您最终得到最干净的URL,它适用于查询字符串参数.例如,/profile/可以重写为指向/index.php?page=profile.用户看到/profile/和PHP看到标准.这允许您使用$_GET['page']获取所请求的页面而不必进行额外的解析以获取php中的其他值.
$_GET是基于URL的查询字符串填充的数组或变量.你需要做一些事情:
switch ($_GET['myVar']) { ... }
Run Code Online (Sandbox Code Playgroud)
您的网址如下所示:
http://www.domain.com/index.php?myVar=value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7253 次 |
| 最近记录: |