在PHP中规范化和携带字符串的最佳方法是什么?

在PHP中规范化和携带字符串的最佳方法是什么?,php,forms,encoding,Php,Forms,Encoding,我正在收集表单上的文本区域数据。在接收页面上,我需要将其存储在一个隐藏字段中,以便发布到第三个页面进行进一步处理(发送电子邮件、保存到文件等)。我意识到我的共享主机已打开了神奇的引号,并且无法更改--因此,我熟悉stripslash() 在用3段文字填充隐藏字段并混合“,”,$,以及任何来源(Word、RTF、InDesign,谁知道)的任何其他内容之前,它当然不准备成为html字段值,所以我想运行htmlentities()在它上面。似乎工作得很好。表单发布,在第三个处理页面上,我运行了一个清

我正在收集表单上的文本区域数据。在接收页面上,我需要将其存储在一个隐藏字段中,以便发布到第三个页面进行进一步处理(发送电子邮件、保存到文件等)。我意识到我的共享主机已打开了神奇的引号,并且无法更改--因此,我熟悉stripslash()

在用3段文字填充隐藏字段并混合“,”,$,以及任何来源(Word、RTF、InDesign,谁知道)的任何其他内容之前,它当然不准备成为html字段值,所以我想运行htmlentities()在它上面。似乎工作得很好。表单发布,在第三个处理页面上,我运行了一个清理例程(没有htmlentities()调用的精简时间),主要是清理任何MQ生成的转义。这是我的带有html encode的清理函数(在任务流结束时处理之前运行的另一个清理函数)

《悲惨的距离》是一本关于艺术家渴望家乡北卡罗来纳州的书。“注意不被注意的事物是我创作的一个永恒主题。我把平凡的事物浮出水面,因为我发现它是最诚实、最有活力、最美丽的。美对我来说很好。”

变成

《悲情的距离》是一本关于这位艺术家渴望家乡北卡罗来纳州的书。“注意不被注意的事物是我创作的一个永恒主题。我把平凡的事物浮出水面,因为我发现它是最诚实、最有活力、最美丽的。美对我来说很好。”

我不知道为什么“她被假定进入”没有被我的功能抓住

我真正的问题是。。。。处理这些类型的文本区域的防弹方法是什么?我不可能解释每个奇怪的角色,有人会尝试进入,那么什么是更好的方式

谢谢! 丰富的


[注意:我不是想重复发帖。相反,我是想看看我是否可以用更简洁的方式重申我的问题。到目前为止,它不起作用:)

我使用
base64\u encode
/
base64\u decode
。试试这个:

<?
$url = $_SERVER['SCRIPT_NAME'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['text']) {
        if (get_magic_quotes_gpc()) {
            $text = stripslashes($_POST['text']);
        } else {
            $text = $_POST['text'];
        }
        $escaped = base64_encode($text);
        ?>
        <form action="<?= $url ?>" method="post">
        <p>Hidden data: <i><?= $escaped ?></i></p>
        <input type="hidden" name="encoded" value="<?= $escaped ?>">
        <input type="submit" value="Send hidden data">
        </form>
        <?
    } else if ($_POST['encoded']) {
        $decoded = base64_decode($_POST['encoded']);
        ?>
        <p><?= htmlspecialchars($decoded) ?></p>
        <p><a href="<?= $url ?>">Try again</a></p>
        <?
    }
} else {
    ?>
    <form action="<?= $url ?>" method="post">
    <textarea name="text"></textarea>
    <input type="submit" value="Send source data">
    </form>
    <?
}
?>


是否曾考虑过将数据保存在服务器上以便进一步处理,而不是在服务器和浏览器之间来回移动文本?

是的,我考虑过。只是这个表单和其他一些表单的惯性原型是POST,我不想偏离这个先例。也许是时候重新考虑了。
<?
$url = $_SERVER['SCRIPT_NAME'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['text']) {
        if (get_magic_quotes_gpc()) {
            $text = stripslashes($_POST['text']);
        } else {
            $text = $_POST['text'];
        }
        $escaped = base64_encode($text);
        ?>
        <form action="<?= $url ?>" method="post">
        <p>Hidden data: <i><?= $escaped ?></i></p>
        <input type="hidden" name="encoded" value="<?= $escaped ?>">
        <input type="submit" value="Send hidden data">
        </form>
        <?
    } else if ($_POST['encoded']) {
        $decoded = base64_decode($_POST['encoded']);
        ?>
        <p><?= htmlspecialchars($decoded) ?></p>
        <p><a href="<?= $url ?>">Try again</a></p>
        <?
    }
} else {
    ?>
    <form action="<?= $url ?>" method="post">
    <textarea name="text"></textarea>
    <input type="submit" value="Send source data">
    </form>
    <?
}
?>