如何通过$ _GET变量<table> </table>发送HTML()代码

时间:2013-10-24 13:24:19

标签: php html variables get

编辑:我完全以不同的方式解决了我的问题,感谢那些回应的人!帮了很多忙! 我需要通过get变量发送一个关于HTML的表。

代码是:

<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它工作正常但添加表结构什么都不发送(没有错误),只有空白。 有什么想法吗?

4 个答案:

答案 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上的字符串长度有一些限制,所以最好不要这样做。如果您更好地解释您的需求,也许我们可以为您提供另一种解决方案。