我一直在想像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">
Run Code Online (Sandbox Code Playgroud)
这些行到?editname
Type your name
<input type="text" name="name">
<input type="submit">
Run Code Online (Sandbox Code Playgroud)
我怎么能在一个可能包含的文件中执行此操作
<?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"; ?>
Run Code Online (Sandbox Code Playgroud)
这样的事情?
如果只是?foo整个查询字符串是提供$_SERVER['QUERY_STRING']的"foo".
当您使用HTML表单时,method="GET"您将获得键值对,然后通过它们获得$_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
}
Run Code Online (Sandbox Code Playgroud)
但我真的建议你使用正确的GET变量而不是简单的查询字符串.只需用以下内容替换剪切的第一行:
$action = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
switch($action) {
Run Code Online (Sandbox Code Playgroud)