SQL
Respuesta a un comentario sobre PHP: hablemos de seguridad
Un usuario acaba de enviarnos un comentario, preguntando porque falla lo siguiente (he eliminado las líneas con comentarios del comentario original)
- include('conexion.php');
- //Ejecucion de la sentencia SQL
- mysql_query("INSERT INTO medicamento (grupo, nombre,clave,formula,prioridad , presentacion, contenido,unidad_medida,existencia,nivel ) VALUES ($_POST[clave],$_POST[nombre],$_POST[grupo], $_POST[prioridad], $_POST[formula], $_POST[presentacion], $_POST[unidad_medida], $_POST[nivel], $_POST[existencia], $_POST[contenido])");
Más allá del problema obvio de la falla de comillas en los valores de la query, alrededor de los $_POST, lo más grave es la posibilidad de hacer una inyección SQL feroz.
- 3 comentarios
- Leer más
- 3349 lecturas
Insertando datos en la base de datos usando campos de texto y checkbox
A petición de algunos interesados, pongo a disposición un pequeño ejemplo de como ingresar datos a una base de datos con PHP, utilizando campos de texto y checkbox.
Para usar los cuadros de verificación, no hay mayor secreto. Lo que se debe hacer es crear una secuencia como la que sigue
- $aDatos=array(1=>"Primero",2=>"Segundo",3=>"Tercero");
- foreach($aDatos as $id=>$nombre) {
- echo "<input type='checkbox' name='seleccion[]' value='$id' />$nombre <br />";
- }
Como se darán cuenta, la idea es crear un array (en este caso llamado seleccion), que tendrá en su interior los valores de los casilleros seleccionados.
Si envíamos el formulario por POST, recibiriamos los valores de la selección en $_POST['seleccion']. Para navegar los valores, bastaría hacer un ciclo por cada uno de ellos y realizar la inserción correspondiente
- $id_persona=1; // para este ejemplo, la persona a la cual le serán asignados los valores de "seleccion"
- foreach($_POST['seleccion'] as $seleccion) {
- $db->execute("INSERT INTO persona_seleccion (id_persona,id_item) VALUES (?,?)",array($id_persona,$seleccion));
- }
Eso sería todo. El ejemplo que presento es un tanto distinto a este, pero tiene la misma lógica. Cualquier duda, en los comentarios.
- 16 comentarios
- 25156 lecturas
Nicechat v0.1.1
Nueva versión!
- Agregado soporte Jisp desde el cliente. Esto significa que desde Javascript se carga la definición del archivo icondef.xml y las transformaciones del texto se hacen todas desde el cliente. Así, mi pobre servidor no tiene que trabajar tanto :)
- Corrección de no aparición de mensaje /me para el cliente que lo emite.
- Agregado archivo de CAMBIOS.txt
Demo: http://php.apsique.com/nicechat/
Descarga: http://php.apsique.com/files/proyectos/nicechat-0.1.1.tar.gz
- Añadir nuevo comentario
- 2400 lecturas
Nicechat v0.1.0
La tasa de actualización es buena, ¿no?
Cambie el número de versión, ya que hay un gran cambio en la forma de manejar la identificación del usuario. En las versiones 0.0.x, está se realizaba por una sesiones de PHP, lo que hacía que se compartiera la sesión de trabajo(valga la redundancia) entre todas las ventanas (o pestañas) de un mismo navegador.
Ahora, cada ventana tiene su propia sesión de trabajo, así que se pueden crear tantas identidades y entrar a todos los canales que se quieran. Esto implica usar un poco más la base de datos, por lo que los ping están un poco más largos que antes; tengo que ajustar la base de datos para que funcione mejor.
Además, se incorporaron tres nuevas características:
- Soporte para smileys: Sí, no lo pude resistir. Aparte, que son no más de 5 líneas de código. Por ahora, sólo tengo :), :( y :P, pero no cuesta nada agregar las otras. Los íconos son los de Gaim, por si acaso
- Aparición inmediata de mensaje del propio usuario: esto fue sugerencia de Ignacio. Los mensajes del propio usuario son enviados de inmediato a la consola, y no son considerados al enviar los nuevos mensajes al cliente
- Indicador con la tasa de refresco. ?til para saber que valores son los más adecuados para la configuración de su servidor
Descarga: http://php.apsique.com/files/proyectos/nicechat-0.1.0.tar.gz
Demo: http://php.apsique.com/nicechat
- 5 comentarios
- Leer más
- 2873 lecturas
Nicechat v0.0.2
Después de algunos errores y tirones de pelo, actualicé el pequeño bicho a su versión 0.0.2.
Cambios:
- Indicador de ping y de acciones en curso
- Resolución de vulnerabilidad (no se dieron cuenta? era feroz!)
- Ajustes en los valores por defecto para actualización y timeout.
Nos vemos!
http://php.apsique.com/files/proyectos/nicechat-0.0.2.tar.gz
- Añadir nuevo comentario
- 2310 lecturas
Nicechat: Un agradable chat en Php, Mysql y XmlHttpRequest
Se lo mostré a Christian, y le gustó. Lo pusé en una aplicación del lugar donde trabajo y las chicas se pusieron a chatear como locas.
Así que, nada que hacer. Presentamos en sociedad a nicechat, el chat en php que puede (o no) hacerles la vida más fácil.
Entre sus características se encuentran:
- Pequeño: No más de 20kb de código
- Rápido: En una intranet, fácil hace ping de 60ms, sin ningún tipo de optimización. En internet, los ping pueden llegar a 300ms
- Fácil de instalar: Es cosa de meter el sql en la base de datos, configurar un archivo y comienza a funcionar!
- Fácil de adaptar: El sistema está hecho para que se integre del modo menos instrusivo posible en cualquier tipo de aplicación ya hecha. Hasta creo que sería fácil con smarty :P
- 21 comentarios
- Leer más
- 12850 lecturas
Como borrar múltiples registros con checkbox
Este último tiempo, un simpático chico argentino se ha vuelto cliente habitual de mi MSN. Me acaba de codeguntar como eliminar múltiples campos de una base de datos vía checkbox. Es una interesante consulta, así que les daré una breve explicación de las diversas formas de hacerlo.
- 110 comentarios
- Leer más
- 87448 lecturas
Array bidimensional en base de datos
En la lista de correos de php, ante la pregunta
Estimados listeros, ¿Cómo podría guardar un array bidimensional en un mysql?
Se me ocurrió algo como:
Primero, crear una tabla con campos ARRAY_ID,FILA_ID,COL_ID,VALOR, con las tres primeras col como clave primaria
Entonces, guardas con
- foreach($aBi as $sRow=>$aCols) {
- foreach($aCols as $sCol=>$sValor) {
- $query="insert into arrays (array_id,fila_id,col_id,valor) VALUES ('$sIdArray','$sRow','$sCol','$sValor')";
- }
- }
para recuperar, nada más fácil que
- // supongo uso de AdoDb
- $rs=$db->getArray("SELECT * from arrays where array_id='$sId'");
- while($aTupla=$rs->fetchRow()) {
- $aBi[$aTupla['fila_id']][$aTupla['col_id']]=$aTupla['valor'];
- }
- 3 comentarios
- 16190 lecturas
Bases de datos de código abierto
Hace un tiempo si uno tenía que escoger entre sistemas gestores de base de datos de código abierto las únicas opciones eran MySQL y PostgreSQL. Hoy en día, ya no tenemos que conformarnos con estos dos. En OSBD hay una lista completa de todos los sistemas de base de datos de código abierto que uno puede encontrarse. Más exactamente, la lista está aquí. El sitio web aún está un poco verde, pero la iniciativa es muy interesante: ser el punto de referencia de toda la información sobre los SGBD de código abierto.
"Show me your flowchart and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowchart; it'll be obvious."
? Fred Brooks / The Mythical Man Month, 1975
- Añadir nuevo comentario
- 2836 lecturas

Comentarios recientes
hace 1 día 4 horas
hace 1 día 5 horas
hace 1 semana 17 horas
hace 1 semana 4 días
hace 2 semanas 3 días
hace 2 semanas 3 días
hace 2 semanas 6 días
hace 3 semanas 5 días
hace 4 semanas 1 día
hace 4 semanas 3 días