代码是:
<html>
<head>
<meta charset="utf-8" />
<title>Itinerario</title>
<link rel="stylesheet" type="text/css" href="itine.css"/>
</head>
<body bgcolor="#FFC334" link="black" vlink="black" alink="white">
<?php
$html='
<font face="arial">
<center>
<table bgcolor="#F3F3F3" style="border:2px solid black;" cellpadding="10" cellspacing="10">
<tr>
<td></td>
<td>CELL 1</td>
<td>CELL 2</td>
</tr>
</table>
</center>
</font>
';
echo $html;
echo '<a href="archive.php?itine='.$html.'">LINK ME</a>';
?>
</body>
</html>
另一部分只是$_get
:
<?php
$variable = $_GET['itine'];
?>
如果我替换文本URL中的$ html它工作正常但添加表结构什么都不发送(没有错误),只有空白。 有什么想法吗?
答案 0 :(得分:2)
您将无法通过GET发送此类复杂的HTML,尤其是未转义的。
如果您必须在页面之间传递HTML,则可以base64_encode()
HTML,也可以gzcompress()
。这有助于防止达到GET请求的字符限制,但不会消除非常大的表的问题。
我曾经做过类似的事情,这需要将大量数据传递给GET变量。我不得不创建一些函数来使它们GET友好:
function shrink($str) {
$str=strtr(base64_encode(addslashes(gzcompress($str,9))), '+/=', '-_,');
return $str;
}
function unshrink($str) {
$str = gzuncompress(stripslashes(base64_decode(strtr($str, '-_,', '+/='))));
return $str;
}
shrink()
函数在压缩级别9压缩字符串,并从编码输出中删除任何可能导致GET请求出现问题的字符。
unshrink()
则恰恰相反。
如果要包含这些功能,可以在示例中执行以下操作:
$html='
<font face="arial">
<center>
<table bgcolor="#F3F3F3" style="border:2px solid black;" cellpadding="10" cellspacing="10">
<tr>
<td></td>
<td>CELL 1</td>
<td>CELL 2</td>
</tr>
</table>
</center>
</font>
';
echo $html;
echo '<a href="archive.php?itine='.shrink($html).'">LINK ME</a>';
然后在另一端解压缩:
echo unshrink($_GET['itine']);
这是我在这里的第一篇实际帖子,所以我希望它能提供一些帮助!
答案 1 :(得分:1)
urlencode(),无需对它们进行解码,因为当它们被分配到$ _GET或$ _POST时,它们应该已被解码。
答案 2 :(得分:0)
第一个问题是您要发送的HTML中有双引号,这会关闭您的href的双引号。
其次,你可能会遇到GET请求的限制,理论上它们只能是256个字符。
最后,我建议您通过网址对您尝试发送的数据进行urlencode /解码:
编码:
echo '<a href="archive.php?itine='.urlencode($html).'">LINK ME</a>';
解码:
<?php
$variable = urldecode($_GET['itine']);
?>
答案 3 :(得分:0)
好吧,因为你对$ _GET上的字符串长度有一些限制,所以最好不要这样做。如果您更好地解释您的需求,也许我们可以为您提供另一种解决方案。