Buen día compañeros.
Expongo mi caso:
Hace como una semana, buscando respuesta a un problemilla que traía con el código que pondré al final de estas líneas; problema que consistía en la funcionalidad correcta de una paginación y que me ha resuelto mi amigo y compañero nuestro: dongo a quien doy todo el crédito del buen desempeño en gran parte de mi proyecto (saludos amigo dongo), "dejo el link del tema que abrí respecto a este tema de la paginación, por si acaso a alguien le pueda servir:
https://www.aprenderaprogramar.com/foros/index.php?topic=1291.0"
como decía buscando una respuesta, alguien que vio mi código me comentó lo siguiente, cito textualmente:
"viendo tu codigo muy por arriba encontre esto. No va a solucionar tu problema actual pero si los futuros:
$_pagi_sql .= " AND propiedades.colonia LIKE '%" . $_POST['txtBusqueda'] . "%' ";
El problema es: ¿que pasa si envio un POST con código sql en la variable txtBusqueda? podria jugar con tu base de datos, leer, escribir, borrar, etc.
Tenes que sanitizar todas las entradas de datos siempre, ya que pueden escribir codigo por error o a proposito."
Ahora bien, yo he sustituido esa parte específica del $_POST por $_GET, no por este tema, sino por el tema de la paginación y mi código ha quedado así, al final haré mis preguntas:
<section id="contenedor_buscador">
<aside id="izquierda">
<h4>Buscar Propiedades de Nuevo León</h4><br>
<form id="form_buscar" name="form1" method="GET" action="busca_grand_nl.php">
<label>Búsqueda por Colonia:</label>
<input type="text" name="txtBusqueda" id="txtBusqueda"><br>
<label>Elija Municipio*:</label>
<select name="selCiudad" id="selCiudad">
<option value="-1" selected>Ver todas las Propiedades</option>
<?php
$tablaciudades = mysql_query("SELECT * FROM municipios_nuevo_leon ORDER BY nombre_mun ASC"); // Seleccionamos las ciudades de la tabla ciudades
while ($registrociudad = mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>
<option value="<?php echo $registrociudad['id_mun']; ?>"><?php echo $registrociudad['nombre_mun']; ?></option>
<?php
} // termina la zona de repeticion
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
</select><br>
<input type="submit" name="cmdBuscar" id="cmdBuscar" value=" Buscar ">
</form>
<label id="asterisco">Los campos marcados con (*) son obligatorios</label>
</aside>
<article id="derecha">
<h2>Resultados de su búsqueda</h2>
<?php
$_pagi_sql = "SELECT propiedades.*, municipios_nuevo_leon.* FROM propiedades, municipios_nuevo_leon WHERE propiedades.id_mun = municipios_nuevo_leon.id_mun ";
if (isset($_GET['txtBusqueda'])) {
$_pagi_sql .= " AND propiedades.colonia LIKE '%" . $_GET['txtBusqueda'] . "%' ";
if (intval($_GET['selCiudad']) > 0) {
$_pagi_sql .= " AND propiedades.id_mun = '" . intval($_GET['selCiudad']) . "'";
}
}
$_pagi_sql .= " ORDER BY municipios_nuevo_leon.nombre_mun ASC";
//inicio de código para paginacion
$_pagi_conteo_alternativo=true;
$_pagi_cuantos = 6;
include("paginator.inc.php");
//fin de código para paginacion
$tabla = mysql_query($_pagi_sql);
/*de aqui hasta el "else{" es el codigo para poner el mensaje de "no se encontraron resultados y el "}" que cierra esta al final, despues de "mysql_close($conexion);".*/
$num_filas=mysql_num_rows($tabla);
if($num_filas==0){
echo "<center>No se encontraron resultados para su búsqueda</center>";
}
else{ //inicio de código para paginacion aqui se cambio ($tabla)) por ($_pagi_result))
while ($registro = mysql_fetch_array($_pagi_result))
{
?>
<?php $id = $registro['id_dir'];?><!--En esta línea del código va entre corchetes el id de la tabla propiedades-->
<div class="propiedades">
<img id="img_array"src="<?php echo $registro['imagen'];?>"/><br><br>
<label>Direccion:<?php echo $registro['direccion']; ?></label><br>
<label>Colonia:<?php echo $registro['colonia']; ?></label><br>
<label>Municipio:<?php echo $registro['municipio']; ?></label><br>
<label>Estado:<?php echo $registro['estado']; ?></label><br>
<label>Estatus:<?php echo $registro['estatus']; ?></label><br>
<img id="img_precio" src="../img/etiqueta_precio.png"/><label id="precio"><?php echo $registro['precio'];?></label><br>
<a href="detalles_nl.php?id_dir=<?php echo $id?>"><img id="img_llave" class="fade" src="../img/llave_detalle.png"/></a><label id="llave">Ver Detalles</label>
</div>
<?php
}
?>
<!--inicio de código para paginacion-->
<?php echo"<br><div class='barra-navegacion'><p>".$_pagi_navegacion."</p></div>"; ?>
<!--fin de código para paginacion-->
<?php
mysql_free_result($tabla);
mysql_close($conexion);
}
?>
</article>
</section>
Mis preguntas son:
Cómo sanitizar las entradas de datos en mi código?
Cómo puedo prevenir ataques de inyeccion SQL en mi DB?
Dónde aprender lo necesario para evitar estos ataques?
Buen día a todos compañeros y amigos. Dios les Bendiga y Conserve la Salud.