Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Mensajes - flavioSalas

Páginas: [1] 2 3
1
Discusión General / Re:como usar validar expresion regular
« : 22 de diciembre de 2013, 07:53:48 pm »
solucion final:
he indagado por alli, en el manual oficial solo aparencen tipos de errores referente siempre a cuando se supone que hay una expresion regular bien formulada.

supongamos que tengo dos expresiones  sencillas regulares para validar enteros mayores a cero:
la primera es correcta :
$a =' <^([1-9]){1}(\d){0,}$>';

la segunda es incorrecta pues no tiene los delimitadores
$b =' ^([1-9]){1}(\d){0,}$';


cuando ejecuto la funcion preg_match en ambas me dispara un error en la segunda (es obvio)
pero si se silencia la salida de preg_match:

$test = @preg_match($b,'12345');

esta siempre da falso aunque el segundo argumento sea un entero mayor a cero.
si luego ejecuto la funcion preg_last_error

echo preg_last_error(); (el resultado es 0 ) wdf!!!!!

la solucion es tan simple, tenemos que ejecutar el preg_match de manera que siempre el segundo parametro pasado sea true lurgo que sepamos que el pcre es valido, ejecutamos como de costumbre (preg_match($a,'12345'))

ejemplo:

$statusMatch = (@preg_match($a,null) !== FALSE); // es true mi expresion regular es valida
$expreionValida = preg_match($a,'12345'); // es true mi segundo parametro
$expreionValida = preg_match($a,'dy463634')  // es false mi segundo parametro

----------ejemplo2

$statusMatch = (@preg_match($b,null) !== FALSE); // es false mi expresion regular es invalida
exit('Animal Tu expresion regular es invalida');



Esto era lo que necesitaba, ahora para ahorar codigo tendria que crear un try catch dentro del metodo para validar mi expresion regular, untando mi valor  $statusMatch, el valor de mi segundo parametro en el preg_match y el valor del retorno de la funcion preg_last_error() para no dejar clavos sueltos.
(HOMEWORK!)












2
Discusión General / Re:como usar validar expresion regular
« : 22 de diciembre de 2013, 03:16:37 am »
function is_preg_error()
{
    $errors = array(
        PREG_NO_ERROR               => 'Code 0 : No errors',
        PREG_INTERNAL_ERROR         => 'Code 1 : There was an internal PCRE error',
        PREG_BACKTRACK_LIMIT_ERROR  => 'Code 2 : Backtrack limit was exhausted',
        PREG_RECURSION_LIMIT_ERROR  => 'Code 3 : Recursion limit was exhausted',
        PREG_BAD_UTF8_ERROR         => 'Code 4 : The offset didn\'t correspond to the begin of a valid UTF-8 code point',
        PREG_BAD_UTF8_OFFSET_ERROR  => 'Code 5 : Malformed UTF-8 data',
    );

    return $errors[preg_last_error()];
}

http://stackoverflow.com/questions/4440626/how-can-i-validate-regex
aqui sale un ejemplo!

3
Discusión General / como usar validar expresion regular
« : 22 de diciembre de 2013, 12:48:12 am »

como puedo validar que el primer parametro que le pase a la funcion preg_match sea una expresion regular valida?
tengo un metodo de X clase que va tomando de un array X+1 expresionse regulares
 todo funciona 100 % pero necesito que cuando algun animal haga una instancia de mi clase y coloque una expresion regular invalida el metodo le diga "no seas tan animal y antes de evaluar la expresion regular recuerda ingresar una que sea valida! burro!"

como hago para validar que el primer parametro pasado a  la funcion preg_match sea una expresion regular valida? he buscado en el manual y nada alguno tiene una idea?

4
Scripts / Re:actualizar registros en mysql
« : 09 de noviembre de 2013, 04:18:33 am »
intenta mostrar la extructura de tu base de datos, es impsible ayudarte si no se sabe como esta creada la base de dato

5
Discusión General / Re:[Consulta]
« : 09 de noviembre de 2013, 04:07:01 am »
   recuerda investigar PDO!

6
Discusión General / Re:[Consulta]
« : 09 de noviembre de 2013, 04:05:35 am »
Que tal amigo! viendo tu codigo me doy cuenta que eres nuevo en php y que te has apoyado en manuales, libros o profesores que estan desactualizados
no te preocupes! todos alguna vez comenzamos a darnos golpes desde el comienzo

no se en verdad que tan certera sera la respuesta que voy a darte, hay parte en el codio (sobre todo en la estructura de la base de datos) que desconozco
y que hacen imposble una mejor respuesta.
 pero aqui te va una interpretacion personal de tu script, tal vez te ayude a mejorar lo que has hecho o... tal vez te sirva de un carajo!
 solo tengo que hablarte un poco de inyeccion sql, cuando tu usas las funciones de mysql con datos de formularios tu debes intentar hacer muda cualquier
comilla simple, porque el interprete de mysql puede creer que se concatena una instruccion con otra cuando ve la posibilidad de abrir o cerrar parantesis en
el query, en el manual oficial de php se habla de eso, busca ayuda alli, te implemente una simple (y tonta expresion regular que intenta silenciar comillas simples dentro del query) pero esa solucion es mediocre, lo mejor es aprender a usar la PDO y usar el metodo blind.

esperos que esas de esos carajos que intenta hacerlo y aprender mas... y no solo copiar y pegar cualquier disparate aqui te va una interpretacion y mejora de tu codigo

Código: [Seleccionar]
<?php

#encabezado para que no use la cache de archivos temporales de internet
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0"false); 
header("Pragma: no-cache"); 
#requires:
require_once('conexion.php');
require('funciones.php');
#creo la variable status
$status null;
# verificar que existen los datos del formulario:
# no usar request! request es ambiguo, puede ser post o get usar post si es un envio de de login
if(!isset($_POST['usuario']) or !isset($_POST['passwrd']) 
or !isset($_POST['userpre']) or !iset($_POST['intento'])){
exit("Formulario truncado!");
}
# aprende a filtrar los datos de formularios es muy facil inyectar sql si no estas preparado
#investiga como mejorar esto! cuando usas funciones de mysql_xxx es mas lavorioso la seguridad
$replace=array( "<'>","<\">");
$byText= array("''","\"\"");
$_POST['usuario']   =preg_replace($replace,$byText,$_POST['usuario']);
$_POST['password']=preg_replace($replace,$byText,$_POST['password']);
#aprende a usar el operador ternario
$status = (empty($_POST['usuario']) ?  "Ingrese usuario y contraseña" :status;
$status = (empty($_POST['passwrd'])) ? "No ingresó contraseña" status;
#pasando a minuscula el usuario
$usuario=strtolower($_POST['usuario']);
# es bueno que intentes codificar por md5 una contraseña, pero es un asco usar el md5 pelado
# la siguiente accion te crea un mejor cifrado: esta la invente yo! y es un colaito de varias :)
$password = (md5(md5($password)));
$password = crypt($password $md5);
$password hash("ripemd160",$md5);
#imagino que esto son input type hidden:
$userpre=$_POST['userpre'];
$intento=$_POST['intento'];
#busqueda? estas usando mysql_query , que verguenza! intenta actualizar hacia la PDO o mysqli!
# lo dejo tal cual para seguir el ritmo del trabajo: $busqueda = $sql , voy a usar esa variable por
# convension entre programers
$sql "SELECT * FROM usuarios WHERE  ";
$sql.= "pass='{$passwrd} AND login='{$usuario}' ";
$sql.= "AND STATUS_USUARIO='ACTIVO')"#precausion mysql si lo corres en linux puede dar error
# las columnas se diferencian mayusculas de minusculas, estas seguro que el campo STATUS_USUARIO
# esta creado en mayusculas?
#
# continuamos observa que puedes ahorra codigo si omites el  x==0 en la sentencias (mysql_num_rows);
# de igual mansera tu puedes ejecutar el query y el retorno hacer un condicional si es empty:
# casos posibles:
# 1 averiguando si hay registros:
if(!mysql_num_rows($sql)){
# ... codigo si no hay num_rows....
# }
#
# 2 ejecutando el query y viendo si hay un resultado;
# esta forma te la recomiendo y solo haces una consulta a la base de datos:
 $resource mysql_query($sql);
# ves como uso la misma variable $resource para el resultado final?  
$resource mysql_fetch_assoc($resource);
# aqui verificamos si existe algun registro
$resource = (!empty($resource)) ? false $resource;
# aqui tu condicional: si es valido o invalido:
if(!$resource){
# revisar que el usuario no tenga mas de tres intentos de logeo
$sql "SELECT * FROM usuarios WHERE LOGIN='$usuario'"
#otra vez! los campos no son indiferentes a mayusculas y minuscas en mysql (cuando corre en linux)
# no es lo mismo login que LOGIN, revisa esto amigo! lo dejo tal cual para seguir el ilo de tu codigo
$numErrorLogin mysql_query($sql);
$numErrorLogin =mysql_fetch_assoc($sql);
# aqui valido el numero de errores: para ello resumo el arreglo de respuesta
$numErrorLogin = (!$numErrorLogin[0]['TEMP_LOGIN'])? $numErrorLogin[0]['TEMP_LOGIN']++;
# si el numero de errores de loge es >=3
if($numErrorLogin >=3){
$status='<img src=atencion.gif align="absmiddle">';|
$status.=' <b style="color: #FF0000;">¡Usuario Bloqueado!</b> ';
}
# si el error de logeo es menor a tres entonces aumento uno al total de errores de logeo
else{
mysql_query("INSERT INTO temp (TEMP_LOGIN) VALUES ('$usuario')");
# no conosco tu base de datos pero deberia ser algo asi
$status "usuario invalido";
}
}
  
# si el login fue exitoso entonces comienza ha cagar el trabajo creando tus cookies
else{
# aqui crea variables de cookies... 
# amigo es mejor usar variables de session, es mas seguro y mas facil de implementar
# en vez de crear una cookie que puede ser manipulada del lado del cliente.

}
# bueno la variable  $status debe de servir de algo no?
if(is_null($status)){
header('location:dondeQuierasRedirigir.php');
}
else{
#imprimo si me da la gana el form...
echo $status;
}

Cualquier cosas me mandas un mensaje, para eso estamos no?
[/b]

7
Discusión General / Disseccion lib JQueryXMLStore
« : 03 de noviembre de 2013, 04:19:14 am »
Que tal gente, como anda todo por aqui?
 Hace un par de dias (mas o menos) tuve un problema con la manera de programar a martillazos codigo javascript  (JQuery),
 luego ashrey me hizo entrar en razon en que es hora de tomar en serio el uso efectivo javascript en las soluciones.

Pues bien! este sabado,  (en mi dia libre) me di a la tarea de analizar un poco el 'Como demonios' se utiliza Jquery adecuadamente.


Si alguno no conoce que es JQueryXMLStore, pueden ver un demo en mi pagina (donde guardo cosas para momentos como este)


He logrado aprender y analizar detenidamente este script, he creado una copia del archivo de la libreria comentada (en su totalida) para el que desee aprender a modificarla y ver como funciona.

(
no le preste mucha atencion a las funciones que se conectan con paipal pues en venezuela no hay paipal y no me sirve de nada, pero son unas pocas lineas donde se trabaja con paipal  lineas(477 -548)
)

Personalmente creo que trabajar  con javascript y dejar de imprimir echo dentro de bucles con php, es una maravilla, hace que el interprete php no pierda tiempo en pendejadas...

Se puede crear un array en php  (JSON) y dejar que javascript se ocupe del DOM. algo de memoria debe ahorrar hacerlo de esta manera.  hacer el anailisis de este tonto script me ha dado mayor conocimiento en como manejar los nodos adecuadamente ( XML y html  mas que todo  ) y  hasta donde esta el alcance de las variables,  esto ultimo  era lo que me estaba jodiendo en un metodo ajax la semana pasada.

aqui les va el enlace del script  (original y  una copia del mismo comentado)

http://mortemx.vacau.com/JQueryXMLStore/JQueryXMLStore.tar.bz2
 
cualquier cosa me mandan un mail y vemos que se hace!



8
Bases de Datos / Re:Buscar letras que coincidan en un campo
« : 29 de octubre de 2013, 11:11:06 pm »
Que tal como andan las cosas.
Te comento una vez me vi en la tarea de tener que hacer un buscador interno.
pues bien este metodo a continuacion lo copie y pege exacatmente igual. puedes guiarte para crear un sql por ajax usando esta funcion como respuesta. es viejo este script asi que revisalo y me avisas. tambie debes validar los datos antes de ejecutar (no coloque esa perta del codigo porque pertenece a otra clase abstracta)

Código: [Seleccionar]
<?php
function 
BuscarProductos ($words){
$FiltroSQL NULL;
$tablesRows = array('productos.keyword');
#una sola palabra:
if(!preg_match('<\s>',$words)){
for($i=0;$i<count($tablesRows);$i++){
$Union     = ($i==0)? NULL ' and ';
$FiltroSQL.= $Union $tablesRows[$i] .' like \'%'$words .'%\' ';
}
$FiltroSQL = (is_null($FiltroSQL)) ? $FiltroSQL ' and ('.$FiltroSQL.')';
}
#varias palabras:
else{
$words explode(" ",$words);
$Total count($tablesRows);
$i=0;
while($Total>$i){
for($k=0;$k<count($words);$k++){
$FiltroSQL.= ' and '$tablesRows[$i] .' like \'%'$words[$k] .'%\' ';
}
$i++;
}
}
# sql generado
  $sql' select productos.id from productos where 
(productos.status = 1) and 
(NOW() >=productos.fecha_in and NOW() < productos.fecha_out) and 
(productos.stock >0) and 
  (oferta >0) ' 
.$FiltroSQL;
# ejecuto el sql:
 
$query Mysql::MyQuery($sql);
$keysQuery NULL;
$Count   = 0;
while($key mysql_fetch_array($query)){
$keysQuery = (is_null($keysQuery)) ? $key[0] : $keysQuery ',' $key[0]; 
$Count++;
}
return array('idIn'=>$keysQuery,'totalRows'=>$Count);
}
Actualzado este script te devuelve un arreglo con dos registro

el primero  es un string con todos los id encontrados con la conicidencia de $word para que puedas filtrar luego
haciendo un where ... in($word['idIn'])
el segundo es el numero de registros encontrados, eso lo hice para para saber como calcular la paginacion

9
Discusión General / Re:El Futuro de la Comunidad PHP de Venezuela
« : 03 de octubre de 2013, 09:49:28 pm »
Sobre la hoja de ruta, he estado analizando en detalle la libreria estandar de php, de alli hay tema para cortar (gracias a dios y ya tengo un nuevo empleo, lo malo es que el tiempo se ha reducido drasticamente) para este fin voy a evaluar que puedo hacer, luego lanzo un esquema y vemos si les gusta o no. me alegra ver que lo de la traduccion de el standar va en progreso, lo que difiero es que se haga bajo otro dominio, personalmente creo que todo deberia ir dentro de php.org.ve o algun subdominio. bues bien muchachos , manos al teclado!

10
Proyectos / Re:Apoyo para App Web para Odontogramas.
« : 28 de septiembre de 2013, 05:24:49 pm »
Es mas facil si usas un cms, intenta ver drupal

11
Imagino que es para salvaguardar tu codigo no? si esasi te comento que:
php sepuede conectar con otro servidor por medio del ftp, pero full inseguro, mejor esusar curl y hacer un servidor espejo (donde la aplicacion funciones) y por curl referencias a otro servidor tuyo porpio donde guardas los archivos originales, curl es muy interesante... lee el manual

12
Discusión General / Re:formulario de login
« : 26 de septiembre de 2013, 10:52:33 pm »
es verdad en parte, pero man no filtrastes las variables te pueden injectar el sql. entre otras cosas.

13
Librerías y Funciones / Re:php help
« : 26 de septiembre de 2013, 10:46:11 pm »
la experiencia no se improvisa, si clavas la materia; has aprendido a como no pasar el semetre, tu (si fui yo el que te dio el -1) tu no estas buscando aprender, estas buscando quien te resulva el problema, no te voy adar el script solo quiero que analices por ti mismo:


Realizar un programa que calcule el importe a pagar por un vehículo al circular por una autopista.

importe = tipoVehiculo x unidadesImporte x km + (25 x toneladas) ; observaque el 25 es una constante
¿ahora como sacar un condicional para el importe?

podria anidar condicionales if else if .... pero eso haria mas engorroso el trabajo de lectura, entre otras cosas;  como que hay vehiculos que la variable tonelada debe ser igual a 0, porque el problema dice que si el vehiculo es del tipo camion pagaran 30 unidades por Km. más 25 unidades por toneladas.

ahora analizando todo eso tenemos la solucion (jajajaja) luego de que interpretes lo que dice el manual oficial http://www.php.net/manual/es/control-structures.switch.php

alli te va la primera "ayudaita"

posdata gracias al case tu puedes hacer que se ejecute una accion dependiendo de si se cumple un condicional

por ejemplo para bicicletas tu puedes terminar tu sentencia con interta del caso con un return 100;
y para el resto tu puedes crear las variables necesarias para que la formula se ejecute al final de todos los cases


case X:
 /*mis variables pre definada para cada tipo */
break;
..
..
..
 default  // es obvio que ste case es una bicicleta
 return 100;
break

//termino el case (no te voy a dar el script completo dije) pero ahora ejecuto mi formula

return (tipoVehiculo x unidadesImporte x km + (25 x toneladas) );


por el amor a dios http://es.wikipedia.org/wiki/RTFM




14
Discusión General / Re:Ayuda sobre clases en php [class]
« : 26 de septiembre de 2013, 10:17:17 pm »
Carlos eres un insensible lo vas a mandar al manual oficial sin pataleo? jajajajaj asi mesmo, tenemo s que trabajar con esos manuales esas preguntas ratifica que todo debe ser pro-oop. ya he dado este enlace varias veces amigo, primero que nada ve al enlace que te da carlos, lee y trata de digerir si no entiendes un carajo (por que es muy posible que a primera vista no lo entiendas) leete este pdf http://www.filtralub.com/admin/cursos/f94c96a6d573310f66e591ac5cb0757e.pdf y vuelve al manual de php , veras como las cosas van mejorando. tambien hay otro libro que recomendo y me ayudo un mundo
http://uap.unnes.ac.id/buku/Web/MySQL%20&%20PHP/FriendsofED.PHP.Object.Oriented.Solutions.Aug.2008.pdf

primero aprende a pensar en objetos luego aprende a decirle al interprete de php  que interprete tus objetos (ideas), algo mas debes aprender es sobre namespace que por la antiguedad de los libros no se habla de ello, pero un rollo a la vez  ;)

15
Discusión General / Re:Hangout de Hoy ¿por donde?
« : 26 de septiembre de 2013, 08:36:25 pm »
La red no me da!  :'(

Páginas: [1] 2 3