我正在使用表单和“获取”方法为用户提供返回选项,以获取他们来自我网站的未知网址,如下面的代码所示。我更喜欢这个只是浏览器后退按钮,它没有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>';
}
?>
答案 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