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?