Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - X-ISM

Páginas: [1]
1
PHP / Re:[AYUDA] Problema con include()
« en: 19 de Septiembre de 2009, 04:49:43 am »
entonces es simple, tienes incluido el archivo link.php y la variable esta en ejemplo.php

2
PHP / Re:[AYUDA] Problema con include()
« en: 19 de Septiembre de 2009, 02:40:37 am »
en ejmplo.php tbn te falto el ;

$message='EJEMPLO';

3
PHP / Re:[AYUDA] Problema con include()
« en: 19 de Septiembre de 2009, 02:22:08 am »
quitale las comillas al echo y cierralo con el ;


4
PHP / Re:clase de bd con MDB2
« en: 19 de Septiembre de 2009, 02:18:44 am »
Lo que sucede es que estás llamando una función que no se encuentra en la clase conexionDB. Intenta solo poniendo $mdb2->disconnect() y quitale el el $this->

5
PHP / Seguridad PHP - Querys con sprintf
« en: 18 de Septiembre de 2009, 01:45:16 am »
Hay que destacar que sprintf no elimina todos los problemas de seguridad, pero si lo hace bastante más confiable. También que este es uno de lo tantos metodos que existen para brindar mayor seguridad, pero siempre hay que  tenerlo en cuenta mientras se programa.

Consulta Vulnerable

Imaginemos que la consulta está esperando un entero, que en este caso seria 6.

Citar
$ID "6 OR id != 0" ;
$Query =  "DELETE FROM Tabla WHERE id = " $ID

Como se permitió especificar más de la cuenta, estaríamos eliminando todo lo que tenga ID = 6 o distinto a 0. Esto significa que el usuario fue capaz de eliminar todo los registros de la tabla.

Solución

Si se hubiese utilizado sprintf, este desagradable hecho se podría haber evitado. Ahora vamos a utilizar el mismo ejemplo anterior, pero utilizando sprintf

Citar
$ID "6 OR id != 0" ;
$Query sprintf ("DELETE FROM Tabla WHERE id = %d" $ID);

¿Qué ocurrirá? Eliminara solo lo que tenga ID 6. Esto es porque se ha utilizado un tipo de especificación (lo veremos más adelanta), el cual el argumento debe ser un entero y nada más. Entonces la consulta que se realizaría seria.

Citar
DELETE FROM Tabla WHERE id = 6

Como trabaja sprintf

Se me olvidaba algo bastante importante, que es cómo funciona sprintf.

  • Hay que especificar el primer argumento que es la cadena que deseas utilizar
  • Se utiliza %d, %s, etc... Según el tipo de valor que se quiere utilizar
  • Después de declarar el primer argumento de sprintf, se indica las variables según el orden que se quieran mostrar.

Para entender el último punto mejor, daré un ejemplo. Si  tuviera.

Citar
$VarA "Hola"
$VarB "Mundo"
printf("%s  %s",$VarA,$VarB);

Esto imprimiría.

Citar
Hola Mundo

Pero si se invierten  $VarA por $VarB y viceversa

Citar
$VarA "Hola"
$VarB "Mundo"
printf("%s  %s",$VarB,$VarA);
Imprimiría.

Citar
Mundo Hola

*En este caso he utilizado printf ya que cumpliría una función similar a echo() o print()
*En los ejemplos use el espeficador %s el cual interpreta como una cadena


Tipos de especificación

También se les puede llamar especificadores y se utilizan dependiendo del tipo de datos que se utilizara.

  • %d - El argumento es tratado como un entero y presentado con notación decimal
  • %c  - El argumento es interpretado como un entero, y presentado como el caracter ASCII con dicho valor.
  • %e  - El argumento es tratado como un entero y presentado con notación exponencial.
  • %f - El argumento es tratado como un double y presentado como un número de coma flotante.
  • %o - El argumento es tratado como un entero, y presentado como un número octal.
  • %x - El argumento es tratado como un entero y presentado como un número hexadecimal (con minúsculas).
  • %X - El argumento es tratado como un entero y presentado como un número hexadecimal (con mayúsculas).
  • % b - El argumento es interpretado como un número entero, y presentado como un número binario.
  • %%  - Devuelve un signo de porcentaje
  • % s - El argumento es tratado como una cadena y es presentado como tal.

Rendimiento

sprintf y printf deben usarse solo cuando tengamos que dar formato especial al texto, no con caracteres generales, ya que es más lento que echo o print.
Por último, sprintf y printf es compatible con las funciones dentro de funciones, por lo que el query se puede hacer mucho mas seguro

Citar
$Query sprintf ("DELETE FROM Tabla WHERE id = %d" mysql_real_escape_string($ID));

Nota: La diferencia entre una y otra es que con sprintf() volcamos la cadena a una variable, para poder trabajar con ella, mientras que con printf() nos limitamos a mostrar una cadena con formato.

Citar
Artículo realizado por X-ISM para PHPeros.net
Se permite la reproducción total o parcial del contenido del artículo siempre que se mantenga el autor y una referencia a la fuente original.

6
PHP / Re:[AYUDA]¡Sistema de pass/email olvidado!
« en: 17 de Septiembre de 2009, 21:29:00 pm »
Lo que tienes que hacer es, en un formulario que pida e-mail y/o nombre de usuario, si todo es true le envia un correo con una nueva contraseña.

7
PHP / Re:Secure Sessions
« en: 17 de Septiembre de 2009, 18:43:03 pm »
Es mejor utilizar cookies de una manera segura, que andar guardando sessiones en la base de datos. Igual buen aporte

8
Información / Re:Web PHPeros
« en: 17 de Septiembre de 2009, 05:26:00 am »
Hay novedades  :o ?

9
PHP / Re:[Ayuda] Problema con header()
« en: 17 de Septiembre de 2009, 05:18:57 am »
Por lo que tengo entendido ese error es el 500, como solución intenta borrar el archivo .htacces de la carpeta (obviamente si es que existe) o comunícate con tu proveedor.

+Acá te dejo un link que una info que te puede ser útil
 http://www.forosdelweb.com/1350983-post227.html

Páginas: [1]