Href中的PHP Echo切断变量

时间:2014-04-18 04:01:55

标签: php href

在我的表单中:

    <form class="login" style=" ;"method="post" action=<?php echo "add_answer.php?id="; echo $id; echo "&z=$zipcode&d=$date&category=$category"; ?>">

$ category是一个2字变量“割草”。但是,它指示我链接:

add_answer.php ID = 1&安培; Z = 55901&安培; d = 04 /2014分之25&安培;类别=草坪

如果你发现结尾是“草坪”而不是“草坪割草”我确定$ category是“草坪割草”,因为它显示在页面的标题中。我如何解决这个问题,以便整个单词通过URL传递?

3 个答案:

答案 0 :(得分:3)

您需要urlencode()变量。

<form class="login" style=" ;"method="post" action=<?php echo "add_answer.php?id=".urlencode($id)."&z=".urlencode($zipcode)."&d=".urlencode($date)."&category=".urlencode($category); ?>">

为什么我必须urlencode()

  

URI始终处于“转义”形式,因为转义或取消转义   完成的URI可能会改变其语义。通常,唯一的时间   可以安全地创建转义编码,这是在创建URI时   从其组成部分;每个组件可能有自己的一组   保留的字符,所以只有负责的机制   生成或解释该组件可以确定是否   转义一个字符会改变它的语义。同样,URI必须   在转义字符之前被分隔成它的组件   这些组件可以安全地解码。

     

在某些情况下,可以由未预留的数据表示的数据   角色可能会出现逃脱;例如,一些未保留的   “mark”字符会被某些系统自动转义。如果   给定的URI方案定义了规范化算法,然后是未保留的   根据该算法,字符可能未被转义。例如,   有时在http URL路径中使用“%7e”而不是“〜”,但是   两个对于http URL是等效的。

     

因为百分比“%”字符始终具有保留的目的   作为逃生指标,它必须被转义为“%25”才能成为   用作URI中的数据。实施者应该小心不要   因为没有一次,所以不止一次地逃避或取消相同的字符串   已经未转义的字符串可能会导致错误解释百分比数据   字符作为另一个转义字符,反之亦然   逃避已经逃脱的字符串。

Source

答案 1 :(得分:0)

尝试这样:

<form class="login" style=" " method="post" action="<?php echo "add_answer.php?id=$id&z=$zipcode&d=$date&category=urlencode($category)"; ?>">

答案 2 :(得分:0)

使用此 -

form class="login" style=" ;"method="post" action=<?php echo "index2.php?id=".urlencode($id)."&z=".urlencode($zipcode)."&d=".urlencode($date)."&category=".urlencode($category); ?>>