Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Photoshop, Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky
Ver más- 13,065 Miembros
- 9,531 Temas
- 3,449 Seguidores
Ayúdenme a evitar SQL injection
lo que tengo es una pagina de noticias que cuando hago clic en una noticia me la abre conectándose a mysql y pidiendo los datos por id
Este es el codigo de la noticia cuando le doy clic
<a href="noticia_exp.php?id=<?php echo $ejec["id"]; ?>">Leer mas </a>
Mientras tanto el codigo en noticia_exp.php
<?php
// conexion a la base de datos
$selec = "SELECT * FROM tabla WHERE id = {$_GET['id']}";
$boton = mysql_query($selec,$conexion);
$ejec = mysql_fetch_array($boton);
?>
los que quiero es alguna funcion para evitar numeron float ya que cuando pongo en la barra de navegacion
noticia_exp.php?id=1,2
automativamente me tira el error de la base de datos.. quiero evitar esto
ayudenme porfavor
gracias
- 1Calificación
- 2Seguidores
- 174Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
10 respuestas
Filtra si es numérico y después setealo como integer
Yo no se mucho sobre SQL injection, pero lo que se me ocurre es que podes sacar la coma con str_replace?
$id = str_replace('','', $ejec['id']);Entonces ahi usas:
<a href="noticia_exp.php?id=<?php $id = str_replace(',','', $ejec['id']); echo $id; ?>">Leer mas </a>Simplemente hace:
$id = (int) $_GET['id'];str_replace no es recursivo, se puede saltear.
http://php.net/manual/es/function.preg-replace.php
function aNumero($str) {
$str = preg_replace(“/[^0-9]/”, ”", $str);
return $str;
}
$id = aNumero( $_GET['id'] );
por favor porque ahogarse en un vaso de agua?
uff gracias men ya lo solucione jeje tube que agregarle unas cositas mas pero ya esta... cuando intentan poner noticias_exp.php?id=1,2 ... la pagina se redirecciona para el inicio jejejeje.
aqui mi codigo:
<?php
$id = (int)$_GET['id'];
if(isset($id)){
$conexion = mysql_connect("localhost","root",""
mysql_select_db("db_name",$conexion);
$selec = "SELECT * FROM tabla WHERE id = {$_GET['id']}";
$boton = mysql_query($selec,$conexion);
$ejec = mysql_fetch_array($boton);
if(count($ejec) == ""
header ("Location: index.php"
}
}
else{
header ("Location: index.php"
$ejec["valor1"] = 0;
$ejec["valor2"] = 0;
$ejec["valor3"] = 0;
}
?>
hace esto, agregale mysql_real_escape_string, osea asi:
$selec = "SELECT * FROM tabla WHERE id=".mysql_real_escape_string($_GET["id"]);
$id = (int) $_GET['id'];
esto no es necesario en cadenas numéricas como dice @HosmelQ basta
<?php $id = (int) $_GET['id']; ?>