rulu ruru

postExpresiones Regulares

September 28th, 2008

Filed under: PHP — admin @ 8:48 pm

¿Qué son?
Son expresiones que describen un conjunto de candenas Sin enumerar sus elementos.
O sea que nos permiten realizar busquedas en Strings, encontrando los patrones buscados en ellos.

¿Para qué sirven en PHP?
Nos permiten encontrar patrones especiales en cadenas, así como también afianzar la seguridad de nuestro sistema.
Generalmente se utilizan para realizar modificaciones, comparaciones e identificaciones de patrones.

¿Cómo se usan?
En PHP las utilizamos con EREG (Y sus variaciones como ereg_replace, eregi, etc).
Por ejemplo para saber si una cadena contiene sólo caracteres númericos, lo hacemos de la siguiente manera:

$string = 123456;
$string2 = "abcdef";
if (ereg("^[0-9]+$",$string)) { echo "Contiene sólo números"; }
if (ereg("^[0-9]+$",$string2)) { echo "No contiene sólo números"; }

¿Ayudan a crear un sistema seguro?
Absolutamente, recordemos que todos los campos que un usuario pueda ingresar en nuestro sistema, deben contener pura y exclusivamente lo que NOSOTROS como programadores queremos. En ese caso como anteriormente dije, si tenemos que pasar un ID mediante URL, el mismo debe ser númerico y una comprobación con expresiones regulares, hará que mediante la variable, no pase nada que no sea númerico, aumentando la seguridad ante SQL inyects.
También nos permiten saber si un usuario ingresó su nombre de manera correcta, sabemos que nadie se llama “123456″ la expresión regular bien utilizada nos permite lograr que los usuarios ingresen los campos tales y como son requeridos, quizás mienta, pero nuestros campos en la base de datos están preparados para cada tipo de datos (Si es númerico, usamos un campo númerico, si es texto, usamos text, si es un nombre usamos varchar..)

Les dejo una guia con los patrones y definiciones, así como también las fuentes consultadas.

Patrón Significado
. cualquier carácter
^c empezar por el carácter c
c$ terminar por el carácter c
c+ 1 o más caracteres c
c* 0 o más caracteres c
c? 0 o 1 caracteres c
\n nueva línea
\t tabulador
\ escape, para escribir delante de caracteres especiales: ^ . [ ] % ( ) | * ? { } \
(cd) caracteres c y d agrupados
c|d carácter c o d
c{n} n veces el carácter c
c{n,} n o más caracteres c
c{n,m} desde n hasta m caracteres c
[a-z] cualquier letra minúscula
[A-Z] cualquier letra mayúscula
[0-9] cualquier dígito
[cde] cualquiera de los caracteres c, d o e
[c-f] cualquier letra entre c y f (es decir, c, d, e o f)
[^c] que no esté el carácter c
[[:alnum:]] cualquier letra o dígito (pero no vocales acentuadas, ñ, ç, etc.)
[[:alpha:]] cualquier letra (pero no vocales acentuadas, ñ, ç, etc.)
[[:digit:]] cualquier dígito
[[:lower:]] cualquier letra minúscula (pero no vocales acentuadas, ñ, ç, etc.)
[[:punct:]] cualquier marca de puntuación
[[:space:]] cualquier espacio en blanco
[[:upper:]] cualquier letra mayúscula (pero no vocales acentuadas, ñ, ç, etc.)

http://www.mclibre.org/consultar/php/lecciones/php_expresiones_regulares.html

http://es.wikipedia.org/wiki/Expresión_Regular

postEsportación de cobros en CuentaDigital

September 28th, 2008

Filed under: Pagos online — admin @ 8:07 pm

El siguiente es un código PHP (En php 5 principalmente) que permite la exportación de cobros directamente desde cuentadigital para su implementación en diferentes Ecommerce A diferencia de “Callback CuentaDigital“, éste script se encuentra en funcionamiento y sólo es necesaria su aplicación una vez al día.
Recordemos que es mejor importar los datos del día anterior para mantener nuestro sistema completamente actualizado, ya que hay pagos que pueden acreditarse a cualquier hora. (Los cupones de pagofacil se pueden abonar mediante cuentadigital con saldo en cuenta, con lo cual estos mismos pueden ser abonados a las 10 PM.) Así que ya saben la ejecución debería ser a las 8 AM todos los días exportando los datos del día anterior.

<? 
/*
INVISIONARG PROHIBE LA VENTA DEL SCRIPT, 
Y DEJA ABIERTO EL CÓDIGO PARA DIFERENTES 
MODIFICACIONES QUE PUDIESEN HACERLES.
 
 
REQUERIMIENTOS:
PHP 5 o superior.
CURL instalado.
*/
 
 
define("URL","https://www.cuentadigital.com/exportacion.php?"); 
// url que entrega cuentadigital - 
//https://www.cuentadigital.com/area.php?name=Exportacion
define("SEPARADOR",";"); //Separador de datos CSV
/*
En el siguiente campo, deberás identificar la posición 
del Codigo opcional, lo cual es importante para saber 
si el pago se acreditó o no en el momento de ejecución del script.
Ejemplo:
30122008;1000.50;cliente9879;1 || Fecha del cobro;Monto recibido;Codigo opcional suyo;Cobro numero 1 del archivo
El codigo opcional contando desde el número 0 es el : 2 
 
EXPLICACIÓN
Fecha del cobro: posición 0
Monto recibido: posición 1
Codigo opcional: posición 2
Cobro número 1 del archivo: posición 3 
*/
$opcional = 2;
 
 
 
class cuentadigital  {
/*
El constructor funciona en PHP 5 o versiones superiores
Ejecuta la llamada a cuentadigital una vez instanciada la clase, 
permite que no se descargue el archivo cada vez 
que realizamos una comprobación dentro del script
*/
 
	function __construct() { 
	$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, URL);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$this->archivo = curl_exec($ch);
	}
/*
Funcion DATOS, requiere de dos parametros, 
la posición del codigo opcional y el codigo opcional a comprobar.
Devuelve TRUE en caso de que el cupón 
de pago haya sido abonado o FALSE en caso de que no.
*/
 
	function datos($opcional,$codigo) { 
	$a = explode("\n",$this->archivo);
		foreach ($a as $value) { 
		$r=explode(SEPARADOR,$value);
			if ($r[$opcional] == $codigo) { 
			return true; 
			}	
		}
		return false;
	}
 
}
 
/*
Si tuvieramos una lista de codigos a chequear 
no ejecutaríamos curl cada vez que necesitamos 
comprobar sino que a diferencia de otros 
scripts el archivo CSV ya fue guardado en memoria.
por ejemplo:
*/
$codigos = array("74965116","74965117","74965118","74965119");
echo "<b>Varios codigos opcionales en ejecucion</b><br>";
	foreach($codigos as $value) { 
		if ($cd->datos($opcional,$value)) { 
		echo "Codigo ".$value." abonado <br>"; 
		}
		else {  
		echo "Codigo ".$value." No abonado <br>";   
		}
	}
 
?>
ruldrurd
Entries (RSS) and Comments (RSS)