FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
como es la consulta parametrizada php?
hola a todos
he realizado una consulta en php pero solo me devuelve los titulos que corresponde a los campos, y no me valida la entrada; este es el codigo que use: Código PHP:
|
#2
|
|||
|
|||
Hola
No termino de entender lo de "validar la entrada", pero yo cambiaría lo siguiente de tu código: Código PHP:
Código PHP:
Por último, tienes que tener en cuenta que MYSQL diferencia entre mayusculas y minúsculas, lo digo por el nombre de los campos y las tablas. Última edición por kayetano fecha: 19-07-2006 a las 10:07:50. |
#3
|
|||
|
|||
validar me refiero a que si esta en blanco el text del form que viene del html me de un mensaje diciendo algo que no se puede hacer la busqueda o algo por el estilo, este es el codigo que habia usado pero lo cambio suponiendo que no me dejara pasar comprobando que el cuadro de text estuviera en blanco:
Código PHP:
gracias |
#4
|
||||
|
||||
Prueba con esto...
Código PHP:
__________________
Saludos Emilio |
#5
|
||||
|
||||
Hola,
Código PHP:
|
#6
|
|||
|
|||
Hola
Esa comprobación también la puedes hacer en javascript: Código PHP:
|
#7
|
|||
|
|||
Hola de nuevo
Cita:
De todas formas, y por rizar el rizo, a mi no me gustan las comparaciones con comillas vacias, yo suelo usar: Código PHP:
Última edición por kayetano fecha: 24-07-2006 a las 18:35:17. |
#8
|
||||
|
||||
Todas las comentadas me parecen válidas, eso demuestra que hay mil formas de hacer una misma cosa. ¿diversidad?
De todas formas me llama la atención lo que comenta Kayetano Cita:
__________________
Saludos Emilio |
#9
|
|||
|
|||
Hola
Cita:
|
#10
|
|||
|
|||
Solo comentar que se deberia procesar la variable $buscar con alguna
funcion como mysql_real_escape_string antes de pasarsela al query. El codigo que muestras permite ataques por injeccion de sql, simplemente poniendo el comando adecuado en el campo de busqueda de esa pagina web cualquiera te podria borrar la base de datos entera. Saludos |
#11
|
||||
|
||||
Pero si la consulta es un SELECT, ¿cómo podría inyectarle algo que borre?
// Saludos |
#12
|
||||
|
||||
Cita:
__________________
Saludos Emilio |
#13
|
|||
|
|||
Hola
Como poderse se pueden hacer muchas cosas, por ejemplo: Tenemos el siguiente select: Código PHP:
Código PHP:
De esta misma forma se podría obtener información de las bases de datos y tablas con SHOW DATABASES, pero igualmente debemos conocer la estructura de la consulta y que el código permita desarrollar la consulta modificada.. El mayor problema que podemos tener es que se incluya una comilla simple en nuestra búsqueda con lo que probocaremos un error en la consulta. Existen muchas funciones para filtrar los parametros mandados por formularios como pueden ser "AddSlashes" y "strip_tags" para evitar algún tipo de código HTML o PHP. |
#14
|
||||
|
||||
Hola,
Cita:
|
#15
|
||||
|
||||
¿Que no es lo mismo que dice kayetano? Él usa isset() igual que tú para asegurarse que exista la entrada 'buscar' en el arreglo asociativo $_POST. La otra parte de tu condición es la que él omite pues <<si el usuario busca un espacio en blanco ... pues que lo busque>>.
// Saludos |
#16
|
||||
|
||||
Hola,
Pues así debe ser Román. No debí leer bien. De hecho así fue, y, bueno, me confundí a lo que se ve. Última edición por dec fecha: 29-07-2006 a las 04:17:19. |
#17
|
|||
|
|||
Con respeto a lo de borrar datos, segun la version de mysql, segun como este configurada, y segun el usuario de conexion tenga mas o menos privilegios, se podria injectar junto con el sql normal un segundo sql que haga un:
delete from la_Tabla_que_sea o peor todavia un: drop database nombre_de_la_Base_de_datos Efectivamente hay que saber el nombre de una tabla o el nombre de la base de datos, pero si el php muestra los errores, podemos averiguar el nombre de la base de datos o de distintas tablas, simplemente injectando previamente cualquier texto que fuerce un error de sintaxis en la sentencia sql para que la pagina web muestre los errores en pantalla que suelen dar pistas o incluso mostrar los selects. Es comun en la configuracion de muchos servidores que no esten anulados los mensajes de error (cosa bastante mala para la seguridad), a todo el mundo le habra pasado de ir a alguna pagina web, estar el servidor de mysql caido o algun otro error y que nos salga un mensaje del tipo, "cannot connect to database la_que_Sea" o "Sintax error in Sql etc,etc". Estos errores pueden dar demasiada informacion sobre nombre de la base de datos, nombres de tablas, etc, por eso deberian estar anulados en servidores publicos. Saludos |
#18
|
||||
|
||||
¡Ah! Ok, ya entiendo. Lo que pasa es que no sabía que podían mandarse múltiples sentencias en una sola llamada. Y tienes toda la razón, conviene siempre apagar el despliegue de errores en el servidor de producción.
// Saludos |
#19
|
||||
|
||||
Hola, No me regañen, ya se que se debe abrir un hilo para cada pregunta, pero es que estoy comenzando en esto del php y he visto algo aquí que me ha llamado la atención.
Cita:
Es esto posible?? De hecho este mismo foro lo hace cuanto te registras, pero, qué código se usa para este fín? Pido disculpas si mi pregunta está fuera de lugar, y agradesco cualquier aclaración. Saludos Yusnerqui.
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo Última edición por dec fecha: 16-08-2006 a las 14:52:41. |
#20
|
||||
|
||||
Hola,
Efectivamente, no puede enviarse nada al cliente/navegador, antes de haber enviado las correspondientes cabeceras HTTP en la respuesta. Dicho de otro modo, no pueden enviarse cabeceras HTTP una vez se enviara algo al cliente/navegador. Por nada y por algo entendamos texto o cualquier otra cosa que tenga su destino en la salida estándar en estos casos: el cliente o navegador Web. Para redireccionar con PHP podemos valernos de cabeceras HTTP (como para no pocas cosas, en realidad el protocolo HTTP, las cabeceras disponibles, sobrepasa a PHP y convendría que le echáramos un vistazo porque nos servirá para no pocos asuntos más además) y podría hacerse más o menos así: Código PHP:
Código PHP:
Código PHP:
Pero, como hemos dicho, las cabeceras HTTP no sólo sirven para redireccionar, sino que, pueden servir y lo hacen para muchas otras cosas. En el siguiente ejemplo se envía una cabecera HTTP que indica que la salida ha de tratarse (por el cliente) como un archivo XML y además con cierta codificación de caracteres, lo que se diría indicar al cliente el "Content/Type" de la salida/respuesta que le pensamos hacer llegar, y a continuación de la correspondiente cabecera se imprimiría el contenido, la salida: Código PHP:
Última edición por dec fecha: 16-08-2006 a las 15:06:57. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como Creo una Consulta SQL | esimon | SQL | 4 | 08-02-2006 17:33:52 |
vista parametrizada | tgsistemas | SQL | 4 | 30-11-2005 18:06:57 |
¿Como realizo una consulta? | majosf | Conexión con bases de datos | 4 | 17-06-2005 20:55:41 |
como consulta a 3 tablas? | Ryu | SQL | 4 | 26-04-2005 15:15:14 |
consulta parametrizada | rebollo75 | SQL | 2 | 18-11-2004 17:53:52 |
|