从URL中删除参数并将完成的字符串粘贴到地址栏

时间:2013-05-29 19:43:54

标签: php

我是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>

3 个答案:

答案 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。