使用表单'get'方法删除添加到url的问号

时间:2013-05-10 15:57:26

标签: php forms .htaccess url get

我正在使用表单和“获取”方法为用户提供返回选项,以获取他们来自我网站的未知网址,如下面的代码所示。我更喜欢这个只是浏览器后退按钮,它没有javascript工作。

我遇到的问题是某些浏览器(chrome,safari,可能还有其他浏览器)正在向它们返回的网址末尾添加一个问号。我不希望出于这个原因。

我的问题是:

1)我可以以某种方式阻止我的PHP代码中的问号;或

2)请有人告诉我如何使用htaccess重定向网址,我可能有可能结束的网址: -

.html?

.htm?

.php?

/?

提前致谢。

<?php
if (isset ($_SERVER['HTTP_REFERER']) ) {
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo '<br /><form action="' . $url . '" method="get">
<div id="submit"><input type="submit"  value="Return to previous page" /></div>
</form>';
}
?>

5 个答案:

答案 0 :(得分:6)

?可能会被添加,因为您正在从表单中执行GET请求。

为什么不这样做:

<input type="button" onclick='document.location.href=<?php echo json_encode($url);?>'>;

答案 1 :(得分:1)

使用POST方法代替GET

答案 2 :(得分:0)

您使用表格是否恰当?为什么不使用超链接并使用CSS来设置它的样式呢?

您可以使用按钮尝试,而不是创建将传递的输入值。

<form action="url" method="get">
    <button type="submit">Return to previous page</button>
</form>

答案 3 :(得分:0)

考虑使用重定向

,而不是发布到随机网址(这不是一个好主意)

解决方案是

<?php
if (isset ($_SERVER['HTTP_REFERER']) ) {
$url = htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_QUOTES,'UTF-8');
echo '<br /><form action="redirect.php" method="get">
<input type="hidden" name="return" value="'.$url.'">
<div id="submit"><input type="submit"  value="Return to previous page" /></div>
</form>';
}
?>

然后在redirect.php

<?php
if (isset ($_GET['return'] ) {
    $url = $_GET['return'];
    header('Location: '.$url, true, 303); // or 302 for compatibility reasons
    echo '<a href="'.htmlspecialchars($url,ENT_QUOTES,'UTF-8').'">Continue</a>';
    exit;
}else{
    echo 'Error, no redirect specified';
}

您可以将action="GET"$_GET替换为action="POST"$_POST,它们的工作原理相同。

或只是

if (isset ($_SERVER['HTTP_REFERER']) ) {
    $url = htmlspecialchars($_SERVER['HTTP_REFERER'],ENT_QUOTES,'UTF-8');
    echo '<a href="'.$url.'">Return to previous page</a>';
}

两者仍将在浏览器中创建新的历史记录条目。

答案 4 :(得分:-1)

在htaccess中你应该有这样的东西:

RewriteEngine on
RewriteRule ^myPage-([a-zA-Z0-9_]*).html myPHPfile.php?var=$1

通过添加到您的htaccess的上述内容,当调用myPage-whatever.html之类的网址时,就像调用myPHPfile.php?var=whatever

一样