PHP:无法转义输入中的字符

时间:2015-07-06 18:45:52

标签: php forms

我是这个PHP的新手。试图逃避表单中的一些PHP脚本,无法弄清楚如何做到这一点。

我尝试了所有不同的“和”组合,但我被卡住了。请相关的脚本部分并告知我做错了什么。

这是输入的例子:

<label for="fullName">Full Name : </label>
<input type="text" name="fullName" id="fullName" value=\' "<?php  echo $C_fullName ?>" \' />

这是脚本的显示/重新显示部分的其余部分,因此您可以在上下文中看到它...

            //Redisplay/Display form
            $self = htmlentities($_SERVER['PHP_SELF']);
            $displayOutput .= '

            <form action="' . $self . '" method="post">

                <fieldset>

                    <div>
                        <label for="fullName">Full Name : </label>
                        <input type="text" name="fullName" id="fullName" value=\' "<?php  echo $C_fullName ?>" \' />
                    </div>

                    <div>
                        <label for="email"> Email :</label>
                        <input type="email" name="email" id="email" />
                    </div>
                    <div>
                        <label for="mailFormat">Mail Format</label>
                        <select name="mailFormat" id="mailFormat">
                            <option value="plain">Plain text</option>
                            <option value="html">HTML</option>
                        </select>
                    </div>
                    <div>
                        <input type="checkbox" name="terms" id="terms" value="yes" />
                        <label for="terms">Tick this box to confirm you have read our <a href="#">terms and conditions</a></label>
                    </div>
                    <div>
                        <input type="submit" name="submit" value="submit" />
                    </div>

                </fieldset>

            </form>';//close form

3 个答案:

答案 0 :(得分:1)

尝试更改此行代码

<input type="text" name="fullName" id="fullName" value=\' "<?php  echo $C_fullName ?>" \' />

<input type="text" name="fullName" id="fullName" value="'.$C_fullName.'" />

并在其他地方应用此更改

答案 1 :(得分:1)

问题是你正试图从PHP内部进入PHP评估。这没有意义。

解析文档时,它会被解释为正常的逐字文本,直到解释器遇到<?php之类的转义序列。直到结束?>(或直到文件结尾)的所有内容都被解释为PHP。这就是为什么在代码中放入另一个<?php开头序列是荒谬的。

上面代码中的表单标记构建为PHP string。您要做的是创建一个字符串并将变量连接到其中。 PHP提供了多种方法来实现此目的。在您的情况下,最简单的方法是使用连接运算符.。关闭字符串,连接变量,并连接字符串的其余部分。

… value="' . $C_fullName . '" …

与第一行中的action定义没什么不同。

您可能还想查看heredoc syntax,这对于像您这样的情况非常有用。

答案 2 :(得分:0)

您可以尝试使用以下代码:

$displayOutput .= '

        <form action="' . $self . '" method="post">

            <fieldset>

                <div>
                    <label for="fullName">Full Name : </label>
                    <input type="text" name="fullName" id="fullName" value='; echo $C_fullName; $displayOutput .=' />
                </div>

                <div>
                    <label for="email"> Email :</label>
                    <input type="email" name="email" id="email" />
                </div>
                <div>
                    <label for="mailFormat">Mail Format</label>
                    <select name="mailFormat" id="mailFormat">
                        <option value="plain">Plain text</option>
                        <option value="html">HTML</option>
                    </select>
                </div>
                <div>
                    <input type="checkbox" name="terms" id="terms" value="yes" />
                    <label for="terms">Tick this box to confirm you have read our <a href="#">terms and conditions</a></label>
                </div>
                <div>
                    <input type="submit" name="submit" value="submit" />
                </div>

            </fieldset>

        </form>';