Php 从URL隐藏GET参数

Php 从URL隐藏GET参数,php,url-rewriting,yii,Php,Url Rewriting,Yii,如何隐藏URL获取参数()。我搜索了很多帖子。他们都在谈论重写和URL管理器,但我无法实现我想要的( 我的设想是 我只想隐藏URL获取参数 例如: 我想隐藏***?view=about*** 那么URL应该是这样的http://domain.com/MyFirstYii/page。其他类似的页面http://domain.com/MyFirstYii/post。简单地说,我的GET参数应该像POST参数一样工作 提前谢谢 编辑: 我想在URLManager中创建一些规则,但是什么样的规则会隐藏G

如何隐藏URL获取参数()。我搜索了很多帖子。他们都在谈论重写和URL管理器,但我无法实现我想要的(

我的设想是

我只想隐藏URL获取参数

例如:

我想隐藏
***?view=about***

那么URL应该是这样的
http://domain.com/MyFirstYii/page
。其他类似的页面
http://domain.com/MyFirstYii/post
。简单地说,我的GET参数应该像POST参数一样工作

提前谢谢

编辑:


我想在URLManager中创建一些规则,但是什么样的规则会隐藏GET参数。

从main.php中取消对这些行的注释

'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( 'MyFirstYii/post/<view>'=>'MyFirstYii/post', '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), “urlManager”=>数组( “urlFormat'=>“路径”, 'showScriptName'=>false, '规则'=>数组( 'MyFirstYii/post/'=>'MyFirstYii/post', “/”=>“/视图”, '//'=>'/', '/'=>'/', ), ), 并将.htaccess文件放在项目的根目录中,并编写以下代码

RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php 重新启动发动机 #如果存在目录或文件,请直接使用它 重写cond%{REQUEST_FILENAME}!-f 重写cond%{REQUEST_FILENAME}!-d #否则将其转发到index.php RewriteRule.index.php
如果您打算使用GET并需要这些参数,则不能将其隐藏,因为GET就是这样工作的。如果确实需要隐藏参数,则必须切换到POST,因为这样参数将在请求负载中而不是url中传递。

使用POST方法而不是GET…这是最佳且高效的解决方案

要跟进您的查询,请访问此网站:


[http://pure-essence.net/2007/06/29/simple-php-path-rewrite/]

将此url规则添加到url规则的顶部:

'page/<view:\w>' => 'user/page'
“页面/”=>“用户/页面”
我假设下一个:

  • 控制器名称:UserController
  • 动作名称:动作页面
如果我的假设是错误的,请提供正确的控制器名称和操作名称,以便我可以修正答案

更新: 修复了基于注释的控制器名称

更新2:

如果希望此操作适用于控制器中的所有操作,请使用:

'<action:\w>/<view:\w>' => 'user/<action>'
“/”=>“用户/”

\w在regexp中表示“word”字符和“my prety page”等url部分不匹配。 要隐藏GET参数,必须改进urlManager规则。可以使用SEF URL为页面编写此类规则:

'<controller:\w+>/<id:\d+>/<title:[^\/]*>/*' => '<controller>/view'
将调用页面控制器以执行以id和标题作为参数的查看操作。如果输入以下url,则情况相同:

http://example.com/page/view?id=12&title=my-prety-title
规则中的最后一部分
/*
允许保留其他参数。例如,如果您的地址是

http://example.com/user/55/john-doe-junior/foo/bar/
UserController
actionView
中,您可以编写

echo '<pre>' ;
print_r($_GET);
echo '</pre>' ;
die();


使用“<代码> POST <代码> >而不是<代码>获取<代码> >这是没有意义的。URL是URL;HTTP请求中没有其他用户控制的数据。考虑使用URL重写。我也想在“HREF”中使用。我不能在那里使用POST。您可以重写浏览器的工作方式,重新加载页面。在加载get参数并处理get参数或发布数据后,将其设置为get参数。根据定义,get数据是作为URL中请求的一部分传递的。正如其他用户所暗示的,get参数的全部要点是它们位于URL本身。您需要使用POST,或者告诉我们您试图通过attemp解决的问题ting隐藏GET参数。这些都是基本的重写选项,我已经取消了这些内容的注释。即使它显示“site/page”view=about“url这只会更改url格式并隐藏index.php参数是的,我也想隐藏“?view=about”。:(你不能从url隐藏所有参数,你可能会隐藏”?view=“从url。@abhi:如何隐藏“?视图=”?使用
GET
方法比
POST
更快。因此,
POST
不是一个有效的解决方案。
POST
的主要优点是,它可以在传输过程中隐藏敏感信息,可以帮助传输大量数据。伙计,请停止。这里没有什么可发布的…我不敢相信每个人都在谈论使用POST而不是GET。这没有任何意义!@MrSoundless OP的第一个问题(编辑前)是关于
隐藏URL
(参见编辑历史记录)。好吧,你现在应该明白了!@KevinPaladin即使在编辑之前,他想要的也很明显。我不是来这里开始争论的,但在这里,问题应该得到很好的解释和明确,而事实并非如此。建议不同解决方案的答案不值得否决票。这也可能会帮助其他人从操作中。我的控制器是“UserController”,操作名称是“page”,这也为您更改了:)还添加了第二条规则,您可以根据您的需要使用它来代替第一条规则。让我知道它是如何工作的,因为我无法在这里测试它。他说他正在将url动态放置在锚标记中。这里没有post方法和get方法可以工作
http://example.com/user/55/john-doe-junior/foo/bar/
echo '<pre>' ;
print_r($_GET);
echo '</pre>' ;
die();
Array
(
    [id] => 55
    [title] => john-doe-junior
    [foo] => bar
)