【问题标题】:PHP Echo in Href Cutting off VariableHref中的PHP Echo切断变量
【发布时间】:2014-06-02 13:16:05
【问题描述】:

在我的表单操作中:

    <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/25/2014&category=Lawn

如果您注意到结尾是“草坪”而不是“草坪修剪”,我确保 $category 是“草坪修剪”,因为它显示在页面的标题中。我该如何解决这个问题,以便整个单词通过 URL 传递?

【问题讨论】:

  • 为什么你不能用 $id 做同样的事情?

标签: php href


【解决方案1】:

你需要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 必须 在转义字符之前被分成其组件 这些组件可以安全解码。

在某些情况下,可以用无保留表示的数据 字符可能会出现转义;例如,一些毫无保留的 某些系统会自动转义“标记”字符。如果 给定的 URI 方案定义了一个规范化算法,然后是无保留的 根据该算法,字符可能不会转义。例如, 在 http URL 路径中,有时使用“%7e”代替“~”,但 两个等价于 http URL。

因为百分号“%”字符总是有保留的目的 作为转义指示符,必须将其转义为“%25”才能被 用作 URI 中的数据。实施者应注意不要 多次转义或取消转义同一字符串,因为取消转义 已经未转义的字符串可能会导致对百分比数据的误解 字符作为另一个转义字符,反之亦然 转义已经转义的字符串。

Source

【讨论】:

    【解决方案2】:

    像这样尝试:

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

    【讨论】:

      【解决方案3】:

      使用这个-

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多