Php 处理长URL
我有一个Php 处理长URL,php,html,http,Php,Html,Http,我有一个php脚本生成链接,其中URL非常长(对于IE来说太长了),比如www.somesite.co.uk/here/query?foo=bar&bar=foo&…其中somesite.co.uk获取值(我无法更改为post) 因此,在我的index.php中: echo "<a href='$url'>".$link."</a>"; 我需要帮助把这一切放在一起,比如: index.php: echo "<a href='long_url_test.php'&g
php
脚本生成链接,其中URL
非常长(对于IE来说太长了),比如www.somesite.co.uk/here/query?foo=bar&bar=foo&…
其中somesite.co.uk
获取值(我无法更改为post
)
因此,在我的index.php
中:
echo "<a href='$url'>".$link."</a>";
我需要帮助把这一切放在一起,比如:
index.php:
echo "<a href='long_url_test.php'>".$link."</a>"; # and POST $url to script
echo”“#并将$url发布到脚本
long_url_test.php:
<?php
$url=$_POST['url']
header('Location: $url');
?>
如果
index.php
上显示的链接将的url发布到long\u url\u test.php
,该url将获取实际需要的页面,或者确实有更好/更简单的方法可以做到这一点 为什么要生成这么长的URL?在这一点上,您显然错过了一个更好的解决方案,如会话
如果我们只想在溶液上贴上绷带:
在页面上写一个表单,其中有一个隐藏的字段,其中包含您的数据,然后让链接发布表单
与#1相同,但使用javascript
稍微好一点:获取您想要传递的任何数据,并通过base64_encode(序列化($your_data))
运行它,看看您是否可以在不超出长度限制的情况下将其嵌入URL。如果已经安装/启用了Zlib,也可以在其中抛出一个gzcompress()
尽管如此,我还是很难想象没有一个更简单/更好的解决方案可以让数据留在服务器端。为什么要生成如此长的URL?在这一点上,您显然错过了一个更好的解决方案,如会话
如果我们只想在溶液上贴上绷带:
在页面上写一个表单,其中有一个隐藏的字段,其中包含您的数据,然后让链接发布表单
与#1相同,但使用javascript
稍微好一点:获取您想要传递的任何数据,并通过base64_encode(序列化($your_data))
运行它,看看您是否可以在不超出长度限制的情况下将其嵌入URL。如果已经安装/启用了Zlib,也可以在其中抛出一个gzcompress()
尽管如此,我还是很难想象没有一个更简单/更好的解决方案可以让您的数据留在服务器端。您可以发布链接而不是提交
<a href="#" onclick="document.myform.submit()">Click me</a>
<form name="myform" action="/here/query">
<input type="hidden" name="foo" value="bar">
<input type="hidden" name="bar" value="foo">
</form>
或者,如果你需要它成为一个得到。不过,不确定这是否适用于长URL
<a href="#" onclick="location.href='/here/query&foo=bar&bar=foo'">Click me</a>
或者您可以尝试jQuery和。我不确定这是否会起作用
<a href="#" id="mylink">Click me</a>
<script>
$(document).ready(function() {
$("#mylink").click(function() {
$.ajax('/here/query&foo=bar&bar=foo').done(function(result) {
//do something
});
});
});
</script>
$(文档).ready(函数(){
$(“#mylink”)。单击(函数(){
$.ajax('/here/query&foo=bar&bar=foo').done(函数(结果){
//做点什么
});
});
});
顺便说一下,有些浏览器,包括IE版本,有2000个URL长度限制。您可以发布链接而不是提交
<a href="#" onclick="document.myform.submit()">Click me</a>
<form name="myform" action="/here/query">
<input type="hidden" name="foo" value="bar">
<input type="hidden" name="bar" value="foo">
</form>
或者,如果你需要它成为一个得到。不过,不确定这是否适用于长URL
<a href="#" onclick="location.href='/here/query&foo=bar&bar=foo'">Click me</a>
或者您可以尝试jQuery和。我不确定这是否会起作用
<a href="#" id="mylink">Click me</a>
<script>
$(document).ready(function() {
$("#mylink").click(function() {
$.ajax('/here/query&foo=bar&bar=foo').done(function(result) {
//do something
});
});
});
</script>
$(文档).ready(函数(){
$(“#mylink”)。单击(函数(){
$.ajax('/here/query&foo=bar&bar=foo').done(函数(结果){
//做点什么
});
});
});
顺便说一句,一些浏览器,包括IE版本,有2000个URL长度限制。不清楚标题('Location:')
如何处理长URL(可能-IE未测试通过位置标题接收的URL的长度?),但一旦你真的需要这些带有所有参数的URL(以便人们可以共享)恐怕您需要使用某种URL缩短。例如,为每组参数创建唯一的ID,并将实际参数保存到数据库中。收到get请求后,从数据库获取唯一ID和请求参数。否则,可能会有人复制URL(由于位置标题的原因,该URL工作正常)并与其他人共享long\u url\u test.php
将不会执行,IE将无法打开此类url
一旦您真的不需要该url可供共享,请使用表单替换它:
echo "<form action=\"url without params\" method=\"POST\"><a href='#' onclick=\"this.parentNode.submit(); return false;\">".$link."</a>
<input type=\"hidden\" name=\"param1\" value=\"".$val1."\" />
</form>";
echo”
";
不清楚标题('Location:')
如何处理长URL(可能-即未测试通过位置标题接收的URL的长度?),但一旦您确实需要具有所有参数的URL(以便人们共享),恐怕您需要使用某种URL缩短。例如,为每组参数创建唯一的ID,并将实际参数保存到数据库中。收到get请求后,从数据库获取唯一ID和请求参数。否则,可能会有人复制URL(由于位置标题的原因,该URL工作正常)并与其他人共享long\u url\u test.php
将不会执行,IE将无法打开此类url
一旦您真的不需要该url可供共享,请使用表单替换它:
echo "<form action=\"url without params\" method=\"POST\"><a href='#' onclick=\"this.parentNode.submit(); return false;\">".$link."</a>
<input type=\"hidden\" name=\"param1\" value=\"".$val1."\" />
</form>";
echo”
";
一旦可以将URL发布到脚本,为什么不能简单地发布该长URL的参数而不是使用GET?一旦可以将URL发布到脚本,为什么不能简单地发布该长URL的参数而不是使用GET?