6

私はこのコードを持っています:

<?php  
echo $_GET['user'];
?>

<html >
<head>


</head>
<body>
<form method = "GET"  action="file.php">
    <input type = "text" name = "user"><br> 
    <input type = "submit" value ="submit"><br>
</form>
</body>
</html>  

テキストボックスに入力すると、代わりに'出力されます。 たとえば、入力すると出力されます。 では、どうすれば修正できますか??\''
'hello'\'hello\'

4

5 に答える 5

13

にあるため、スラッシュが追加されましmagic_quotes_gpc=Onphp.ini。この機能は推奨されていないため、 でオフにする必要があることに注意してくださいphp.ini。これは以前のセキュリティ機能でしたが、これに頼るべきではありません。代わりに、すべての入力を検証するコードを自分で作成し、入力を SQL クエリに渡すときに準備済みステートメントを使用するescapeshellarg()か、入力をシェル スクリプトに渡すときに使用します。

ただし、stripslashes()スラッシュを削除するために使用します。

echo stripslashes($_GET['user']);
于 2013-05-14T15:26:47.377 に答える
5

PHP インタープリターにマジック クォートが設定されているようです。これらは ini 設定でオフにすることができます。

于 2013-05-14T15:27:08.050 に答える
3

最初にこの関数を呼び出す必要があります。
設定に関係なく、バックスラッシュを気にする必要はもうありませんphp.ini

function gpc_clean() {

    if (get_magic_quotes_gpc()) {

        $arr = array();
        if (isset($_GET))    $arr[] =& $_GET;
        if (isset($_POST))   $arr[] =& $_POST;
        if (isset($_COOKIE)) $arr[] =& $_COOKIE;
        array_walk_recursive($arr, function (&$v) {
            $v = stripslashes($v);
        });

    }

}
于 2013-05-14T15:37:04.270 に答える
2
echo stripslashes($_GET['user']);
于 2013-05-14T15:27:51.050 に答える