php - sirve - mysql_real_escape_string pdo
$_POST y $_GET convertir comillas('') a barras invertidas+comillas(/') (5)
Deberías llamar a esta función al principio.
Ya no tiene que preocuparse por las barras diagonales inversas, independientemente de la configuración de 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);
});
}
}
Tengo este código:
<?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>
cuando escribo ''
en el cuadro de texto, imprime /'
lugar de ''
.
por ejemplo, si ''hello''
, imprimo /'hello/'
.
Entonces, ¿cómo puedo arreglar eso?
Las barras se agregaron porque tiene magic_quotes_gpc=On
en su php.ini
. Tenga en cuenta que esta característica se ha eliminado y debe desactivarla en su php.ini
. Era una antigua característica de seguridad, pero no debería confiar en ella. En su lugar, escriba un código para usted que valide todas las entradas y use declaraciones preparadas cuando pase entradas a consultas SQL o use escapeshellarg()
si pasa entradas a scripts de shell.
Sin embargo, use stripslashes()
para eliminar las barras inclinadas:
echo stripslashes($_GET[''user'']);
Parece que tienes citas mágicas establecidas en tu intérprete de PHP. Se pueden desactivar a través de la configuración ini.
Use este código para que funcione independientemente de si la función está activada o desactivada:
function remove_magic_quotes($input) {
if(get_magic_quotes_gpc()) $input= stripslashes($input);
return $input;
}
echo stripslashes($_GET[''user'']);