将变量从一种形式传递给另一种形式时,如何制作此网址
localhost/haha/index.php/somethingupdate?id=mstr01
对此
localhost/haha/index.php/somethingupdate
我仍然可以使用传递的变量吗?任何人都可以帮我解决这个问题,我非常感谢任何帮助。
我认为您可以使用隐藏字段来传递变量
<input type="hidden" name="id" value="mstr01" />
将您的表单方法更改为 POST 并使用 $_POST 变量而不是 $_GET 变量,您将看不到 URL 末尾的变量
您可以使用 .htaccess 文件将所有请求重定向到 index.php,并且在 index.php 文件中,您将拥有一个控制器来处理所有请求。
例子:
routing.php
用于 PHP 开发服务器
<?php
if (file_exists(__DIR__ . '/' . $_SERVER['REQUEST_URI'])) {
return false; // serve the requested resource as-is.
} else {
include_once 'index.php';
}
?>
.htaccess
Apache Web 服务器的文件
# Turn rewriting on
Options +FollowSymLinks
RewriteEngine On
# Redirect requests to index.php
RewriteCond %{REQUEST_URI} !=/web/index.php
RewriteCond %{REQUEST_URI} !.*\.png$ [NC]
RewriteCond %{REQUEST_URI} !.*\.jpg$ [NC]
RewriteCond %{REQUEST_URI} !.*\.css$ [NC]
RewriteCond %{REQUEST_URI} !.*\.gif$ [NC]
RewriteCond %{REQUEST_URI} !.*\.js$ [NC]
RewriteRule .* /web/index.php
controller.php
: 一个查询字符串控制器
<?php
/*
* Page Controller
* Decodes query string and loads page
*/
$qs=array_reverse(explode('/',parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
foreach ($qs as $key=>$value) $qs[$key] = urldecode(htmlspecialchars($value));
$this->controller = $qs[0];
switch ($this->controller) {
case "somethingupdate":
#$this->area = $qs[1];
#if ($this->area=="home") {
# include("pages/home.php");
#} else {
# include("pages/{$this->area}/home.php");
#}
break;
case "somethingelse":
#$this->cat = $qs[1];
#$this->area = $qs[2];
#if ($this->cat=="static") {
# include("pages/{$this->area}/home.php");
#} else {
#echo "Err.404 - Page not found (area:{$this->area}; cat:{$this->cat}.";
#}
break;
default:
$this->area = "home";
include("pages/{$this->area}/home.php");
break;
}?>
然后在您的index.php
文件中包含controller.php
要显示页面内容的位置。
您可以使用客户端解决方案
window.history.pushState("object or string", "Title", window.location);
但你应该删除之后的所有字符?通过替换 window.location 中的空格
例如 x.com?id=10 应该是 x.com