$ _POST字符串变量的某些字符被错误地显示

时间:2013-08-13 13:54:05

标签: php http-post

我有2个php页面。在第1页上提交表单后,它的发布数据将显示在第2页上。这样可以正常工作,但'"等字符会在它们之前自动获得\,并且空格也会消失。

例如,我在第1页上提供' "。这在第2页显示为\' \"。当你看到附加了\的字符时,空格也消失了。

我的代码:

page1.php中

<html>
<head>
<title>PAGE 1</title>
</head>
<body>

    <form enctype="multipart/form-data" action="page2.php" method="post">
       <input type="text" name="txtNaam" id="txtNaam" />
       <input type="submit" value="Submit">
    </form>

</body>
</html>

使page2.php

<?php
// TEST 1
echo $_POST['txtNaam'];               // <== \' \"

echo "<br/>";   

// TEST 2
echo rawurlencode($_POST['txtNaam']); // <== %5C%27%20%20%20%20%5C%22

echo "<br/>";   

// TEST 3
echo urlencode($_POST['txtNaam']);    // <== %5C%27++++%5C%22
?>

如何在发布这些特殊字符时正确显示这些特殊字符?

4 个答案:

答案 0 :(得分:1)

试试这个:

echo stripslashes($_POST['txtNaam']);

答案 1 :(得分:0)

如果启用了magic_quotes_gpc,PHP中的所有$_GET$_POST$_COOKIE变量(GPC)都会有"之类的特殊字符,{ {1}}和'已转义。

为防止这种情况发生,您可以将其停用。

像这样编辑\

php.ini

答案 2 :(得分:0)

你试过吗

echo htmlspecialchars($_POST['txtNaam'], ENT_QUOTES);

echo htmlentities(stripslashes($_POST['txtNaam']), ENT_QUOTES)

答案 3 :(得分:0)

您还可以使用base64_encode()&amp; base64_decode()

相关问题