我是php的新手,我很感激您提供的任何帮助。我希望从URL中删除参数。我可以使用下面的代码删除它们,但我的问题是如何将结果解析到地址栏中。我不想通过header("Location: index.php")
重新加载页面,因为我失去了解析变量的使用。我已经查看了其他问题,但他们没有告诉你如何解析完成字符串到地址栏。这是我的代码如下。
<?php
if($_REQUEST["add"])
{
$message = "Item has been added";
$url = $_SERVER['REQUEST_URI'];
$url = strtok($url, '?');
}
?>
<head>
</head>
<body>
<?php
echo $message;
?>
<a href="?add=item">Click Add</a>
答案 0 :(得分:2)
如果我正确地阅读了您的问题,您只想在不执行参数的情况下加载没有参数的页面网址。
有两种方法可以做到。
- 使用方法帖子form
。
<form method='post'>
<input type='hidden' name='item' value='item' />
<input type='submit' name='add' value='Add Item' />
</form>
然后,在PHP中,您可以像这样
从POST变量中获取添加项的值if(isset($_POST['submit'])) {
//do something with $_POST['item']
}
- 将值发送到会话变量并重新加载页面
if(!isset($_SESSION['added']) && isset($_GET['add'])) {
$_SESSION['added'] = $_GET['add'];
header('location: '.strtok($_SERVER['REQUEST_URI'], '?'));
}
答案 1 :(得分:0)
如果要从中删除它们,则无法从URL中删除它们。如果你不想在URL中有这样的东西,那么尝试在POST中传递参数,或者最好在会话中存储当前的“动作”,以便将其完全隐藏在用户之外。
例如,您可以执行
,而不是将操作放在网址中$_SESSION['action'] = add-item
然后在同一页面上处理session参数。所以,如果
if(!isset($_SESSION['action'])){//do nothing}
否则以某种方式处理动作。
答案 2 :(得分:0)
您很可能正在寻找Post/Redirect/Get design pattern。
您无法“更改地址栏”*。地址栏显示浏览器当前所在的URL以及浏览器所处的URL会影响服务器执行/做出响应的操作。
*尽管有HTML5 Javascript历史记录API。