我试图通过超链接和GET方法将已经包含引号的字符串从一个php文件传递到另一个php文件.
我正在检索数千行在while循环中包含引号并将输出保存到变量,如下所示:
while ($trouble_row = mysql_fetch_array($trouble_result)) {
  $ticketid = $trouble_row['ticketid'];
  $ticketno = $trouble_row['ticket_no'];                        
  $created = $trouble_row['createdtime'];
  $modified = $trouble_row['modifiedtime'];
  $title = $trouble_row['title'];
  $solution = $trouble_row['solution'];
  $hoursattended = $trouble_row['cf_629'];
  $hoursbilled = $trouble_row['cf_628'];
  $csv .= "$firstname $lastname,$ticketno,$created,$modified,$hoursattended,$hoursbilled,$title,$solution\n";
  }
变量$ title有时包含一个如下所示的条目:
用户"tom"遇到了问题.
变量$ csv正在收集每次传递的所有结果,并创建一个CSV格式的字符串,然后我需要传递给一个新的PHP脚本,我试图使用超链接:
a href="export_csv.php?csv=$csv">Export to CSV</a>
不幸的是,嵌入的引号被超链接识别并切断了大部分输出.有关如何以不同方式收集数据,以不同方式存储或以不同方式传递数据的任何建议将非常感谢!
对于链接中的参数,您需要使用urlencode():
echo '<a href="export_csv.php?csv='.urlencode($csv).'">Export to CSV</a>';
但请注意,GET请求的长度限制从1-2k区域开始(取决于浏览器和服务器).
替代方法:
形式
一种不受长度限制影响的方法是<form>为每个链接创建一个元素,method="post"并在<input type='hidden'>输入中添加值.然后,您可以将表单的提交按钮设置为链接样式.
<form action="export_csv.php" method="post">
 <input type="hidden" name="csv" value=".......">
 <button type="submit">Click here </button> <!-- Use CSS to style -->
</form>
会议
传递数据的另一种非常优雅的方式是
$_SESSION使用随机密钥将CSV数据保存在变量中您只需要经常处理删除未使用的随机密钥(及其数据).
当然,这些类型的链接无法加入书签.
| 归档时间: | 
 | 
| 查看次数: | 4448 次 | 
| 最近记录: |