Escapar valor que não é enviado ao banco de dados

  • Autor Autor Xkeeper
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Xkeeper

Xkeeper

Gamma
Verificación en dos pasos activada
Disculpen el título, no sabía cómo describir bien esta duda...

Tengo algo así:

PHP:
$value1 = mysql_real_escape_string($_POST['input1']);
$value2 = mysql_real_escape_string($_POST['input2']);
$value3 = mysql_real_escape_string($_POST['input3']);
$value4 = mysql_real_escape_string($_POST['input4']);

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

Como verán, $value4 no es enviado a la base de datos, lo estoy usando para algo más, pero no guarda nada en la bd. ¿Es posible que me exponga a inyecciones sql si no uso mysql_real_escape_string en ese valor? Sustenten por favor.

Gracias.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Depende de como uses el valor, por ejemplo, si es solo para comparacion de datos, no tendras ningun problema.
 
Si no tiene relacion con la base de datos no tendriasbque tenrn problemas
 
El problema puede venir si alguno de esos campos puede ser NULL
 
Siempre es necesario hacer el "escape" a las cadenas que entran por formulario, recuerda que uno nunca sabe con qué tipo de usuario contará. 🙂
 
Hola podrias imprimir los valores para ver si se estan enviando bien todos los valores, y antes de hacer la consulta hacer un exit .

Por otro lado te recomiendo usar PDO y te olvidas de estar escapando valor x valor.
Si te interesa te dejo el enlace para que le des una leia
Sentencias preparadas Pdo.
 
Gracias a todos por responder.

El problema puede venir si alguno de esos campos puede ser NULL
¿Qué pasaría si alguno es null?

Siempre es necesario hacer el "escape" a las cadenas que entran por formulario, recuerda que uno nunca sabe con qué tipo de usuario contará. 🙂
Sucede que uso ese valor con imagettftext, y mysql_real_escape_string modifica el texto :s

Hola podrias imprimir los valores para ver si se estan enviando bien todos los valores, y antes de hacer la consulta hacer un exit .

Por otro lado te recomiendo usar PDO y te olvidas de estar escapando valor x valor.
Si te interesa te dejo el enlace para que le des una leia
Sentencias preparadas Pdo.
Es un tema nuevo para mí, le daré una leída, gracias.
 
¿Qué pasaría si alguno es null?

Si tu base de datos acepta NULL no podes hacerlo con el insert que nos mostraste xq seria asi

$value1 = "algo 1";
$value2 = "algo 2";
$value3 = "NULL";

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

la consulta quedaria

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('algo 1','algo 2','NULL')");

Estas mandando un string "NULL" no NULL
 
Si tu base de datos acepta NULL no podes hacerlo con el insert que nos mostraste xq seria asi

$value1 = "algo 1";
$value2 = "algo 2";
$value3 = "NULL";

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('$value1','$value2','$value3')");

la consulta quedaria

mysql_query("INSERT INTO `tabla` (`value1`,`value2`,`value3`) VALUES ('algo 1','algo 2','NULL')");

Estas mandando un string "NULL" no NULL
ah gracias, para que no queden campos vacíos uso "empty", por ejemplo:

Inserir CODE, HTML ou PHP:
if(!empty($_POST['value1'])) $value1 = $_POST['value1'];
else $value1= 'no hay value1';

¿Con eso estaría evitando los 'null'?
 
Voltar
Topo