Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过$\u GET变量发送HTML(<;table>;)代码_Php_Html_Variables_Get - Fatal编程技术网

Php 如何通过$\u GET变量发送HTML(<;table>;)代码

Php 如何通过$\u GET变量发送HTML(<;table>;)代码,php,html,variables,get,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

编辑:我以完全不同的方式解决了我的问题,感谢那些以任何方式回应我的人!帮了很多忙! 我需要通过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>
如果我将URL中的$html替换为文本,它可以正常工作,但添加表结构不会发送任何信息(没有错误),只发送空白。
有什么想法吗?

第一个问题是,您要发送的HTML中有一个双引号,这会关闭a href的双引号

其次,您可能会遇到GET请求的限制,理论上它们只能有256个字符长

最后,我建议您对试图通过url发送的数据进行url编码/解码:

编码:

echo '<a href="archive.php?itine='.urlencode($html).'">LINK ME</a>';
echo';
解码:

<?php
    $variable = urldecode($_GET['itine']);
?>


,不需要对它们进行解码,因为当它们被分配到$\u GET或$\u POST时,它们应该已经被解码了。

既然您对$\u GET上的字符串长度有一些限制,最好不要这样做。如果您能更好地解释您需要什么,也许我们可以为您提供另一种解决方案。

您将无法通过GET发送如此复杂的HTML,尤其是unescaped

如果必须将HTML从一页传递到另一页,则可以
base64\u encode()
HTML,也可以
gzcompress()
HTML。这将有助于防止达到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>';

这是我在这里的第一篇实际文章,所以我希望它能提供一些帮助

您需要对html进行URL编码:
URLencode()
,但为什么要这样做?这听起来可能有更好的方法,你真的需要通过
$\u GET
发送吗?你就不能发送
CELL1;第2单元
至$\u获取。同意@Pekka웃 -- 为什么要发送整个表?这是一种不常见的方法,不推荐使用,但您可以使用:htmlentities()来完成;然后在第二页把它转换回来这里它说极限是个神话:但是是的,我的字符串很长,它不能通过,所以我必须找到另一种方法!谢谢确实不需要解码。谢谢我必须找到另一个解决我问题的方法,因为绳子很长,GET不能支持它。是的,但是你为什么要这么做?您可以在表单中创建输入数组。如果这是某种网站的爬行或加载,您可以使用cURL-then-DOMDocument将其组织起来。如果您真的想这样发送,您可以一次发送一点,如果需要任何gui,可以编写一些JavaScript。有很多解决方案,但是,是的,有点想知道你为什么要这样做,以便更容易帮助你。事实上,GET-won支持我的原始字符串,所以我会寻找其他解决方案。顺便说一句,我只是查了一下,这里它说极限本身就是一个神话:我不知道哪一个是极限本身,但有一件事我可以说,它是存在的。而且它很容易测试,只需发送一个包含大量文本的GET,您就可以将其剪切。
$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']);