我一直在想像http://example.com/filename.php?dosomething 这样的链接是什么?和 http://somesite.net?logoff做。
由于我对 PHP 了解不多,而且英语不是我的母语,所以我一直无法找到像这样的好资料。
我知道http://mysite.com/edit.php?editpassword和 http://mysite.com/edit.php?editname可以提供完全不同的内容,但我该如何实现?
假设我想将这些代码行实现到 ?editpassword
Password
<input type="password" name="password">
<input type="submit">
这些行到 ?editname
Type your name
<input type="text" name="name">
<input type="submit">
我怎么能在一个可能包含的文件中做到这一点
<?php
require "includes/head.php";
require "includes/nav.php";
if(!isset($_SESSION['login'])){
header("Location: index.php");
}
?>
<div class="row-fluid">
<div class="span3">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">New</li>
<li><a href="#">sss</a></li>
</ul>
</div><!--/.well -->
</div><!--/span-->
<div class="span9">
<div class="row-fluid">
<div class="span9">
<h2>Some header</h2>
<p>Some text</p>
</div><!--/span-->
</div><!--/row-->
<div class="row-fluid">
?editname & ?editpassword should appear here.
</div><!--/row-->
<?php require "includes/footer.php"; ?>
类似的东西?
最佳答案
如果只有 ?foo
$_SERVER['QUERY_STRING']
中可用的整个查询字符串是"foo"
.
使用带有 method="GET"
的 HTML 表单时你得到键值对,然后可以通过 $_GET['key']
获得.实际上,您在使用 POST 时也会收到这些对,但它们在 URL 中不可见,您可以通过 $_POST['key']
访问它们.
假设您希望它完全简单并且不使用一些高级路由框架,那么您的代码看起来像这样:
switch($_SERVER['QUERY_STRING']) {
case 'editname':
// do stuff
break;
case 'editpassword':
// do stuff
break;
default:
// do stuff if none of the cases matched
}
但我真的建议您使用适当的 GET 变量,而不仅仅是普通的查询字符串。只需将第一行代码替换为:
$action = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
switch($action) {
关于PHP - 地址后的问号如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424162/