【问题标题】:Is it possible to shorten text in javascript to a php get request?是否可以将 javascript 中的文本缩短为 php get 请求?
【发布时间】:2010-11-01 20:11:42
【问题描述】:

我有一个非常特殊的情况,其中 javascript 页面创建了一个新窗口,其中包含元刷新,该窗口转到一个 php 页面,该页面有 1 个变量,其中包含 javascript 页面放入的所有内容。像这样:

form.write('<meta http-equiv="refresh" content="0;URL=contentreq/index.php?data=');
Very long text with a lot of data (over 3000 characters)
form.write('" />');

php页面是这样得到的:

$data=$_GET['data'];
$order=htmlentities(stripslashes(strip_tags($order)));

问题是现有应用程序存在此问题,我无法正确解决此问题,因此我想知道是否有某种方法可以加密/编码数据变量,以使其更短。 (我的 apache 服务器不喜欢 82512 字符长的 url...) 就像 tinyurl 一样,但 PHP 必须能够将其解码回来。我不知道它的正确术语,所以我的谷歌搜索没有给我很多结果。

【问题讨论】:

    标签: javascript php text encode


    【解决方案1】:

    正确的说法是压缩,但在这种情况下它也不起作用 - 一般的 URL 长度限制是 2000 个字符,因为 IE 将它设置得那么低,如果你的数据是难以压缩,您无法将 3kb 可靠地放入 2kb。

    如果您无法在 PHP 会话中存储数据,那么想到的唯一想法是使用 Ajax POST 请求“提前发送数据”。这可以携带超过 3 kb。发送请求后,重定向到下一页,并让 PHP 从会话或其他东西中获取传输的数据。

    这不是很漂亮,但对于这个非常具体的场景,我想到的唯一想法。

    另一个想法,虽然这纯粹是客户端,所以你不能传递 URL,将数据存储在浏览器端 local storage.

    参考:

    【讨论】:

      【解决方案2】:

      URL 缩短服务保存哈希 URL 对,并从短 URL 重定向到长 URL。这不适用于您的情况,因为您的数据 URL 部分是动态的。

      您可以采取的一种方法是将所有数据放入 cookie 中,然后让 PHP 脚本从该 cookie 中读取数据。另一种选择是将您的请求发布到 PHP 脚本,但这可能不适用。

      另请注意,加密、编码和压缩之间存在差异。您不是要求加密或编码,而是要求压缩。

      问候, 阿林

      【讨论】:

        【解决方案3】:

        压缩是我一直在寻找的术语。我已经重建了 javascript 函数来发布带有 Pekka 发送的链接的帖子。这个东西现在适用于奇怪的长查询。

        谢谢!

        这是我使用的代码:

        document.body.innerHTML += '<form id="dynForm" action="http://example.com/" method="post"><input type="hidden" name="q" value="a"></form>';
        document.getElementById("dynForm").submit();

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-29
          • 1970-01-01
          • 2011-03-10
          • 2023-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多