PHP – MySQL

PHP Framework

Posted on Actualizado enn

Hace unos días me topé con este Framework, como todos los programadores de PHP sabrán que symfony, zend, cake, kumbia, entre otros son los más conocidos al respecto. No realizando una propaganda, vi la simplicidad de utilizar los widgets presentados en el PHPWORK, otra manera de utilizar el PHP. Queda a criterio de uds. utilizar este framework, generalmente soy de las personas que buscan los menos conocidos para tener un criterio, cuando se nos preguntan que limitaciones se tienen.

Por otro lado, El framework, por supuesto, esta en continúo desarrollo y libre de uso (también de modificación como debe ser) y la programación simple y exacta.

Puedo también comentar que, la forma como expone el site oficial acerca de estos componentes se parece mucho a la presentación del Zapatec (si alguien de los internautas no lo conoce se trata de varios widgets pero requieren licencia – comercial; ahora pertenece a Funambol).

La página de este interesante framework es: http://phpwork.org/.

Seguramente, algunos ya lo conocen, pero como no lo vi dentro de las estadísticas (ranking) de uso de los otros frameworks (los primeros mencionados), quiero presentarles otra opción a la lista. Chequéenlo y vean su uso y  conveniencia.

Aptana y el soporte PHP

Posted on

Desde que Aptana salió por primera vez hace unos años, ha propuesto a la par con Eclipse el soporte necesario para el desarrollo Web. Ahora en su versión 2.0.3, no escapa las novedades que trae consigo. Pero vamos a ver en este post lo concerniente al manejo del PHP en Aptana.

Como todos sabrán, es necesario para el soporte tanto en eclipse como en Aptana la instalación del PDT (soporte de desarrollo para PHP). En Aptana cuenta con un administrador de plugins la cual deduciblemente podemos instalar el componente necesario. Lo cual debe quedar como la figura que presento.

Luego de la instalación, habrá notado que cuando programa en PHP no se muestra la típica ayuda como en otros IDE desarrollo como netbeans o eclipse. Bueno indagación en una interfaz que está en Inglés dió una solución que en la página oficial de Aptana no lo menciona con claridad. Para empezar debemos tener en cuenta que al agregar el componente PDT se agregan opciones nuevas, (estar atento a ese cambio con respecto a la interfaz clásica); puede ayudar para identificar la solución. A continuación los pasos que tomé (con las imágenes), ordenadas de manera secuencial.

La sección CodeAssitant es la sección donde se establece la Auto Activation. Para algunos les parecerá repetitivo, pero les servirá de ayuda para quienes usan este IDE que ahora soporta Ruby&Rails.

El primer post del año – CMS menos conocidos.

Posted on Actualizado enn

Por motivos laborales, no he posteado. Ahora presente el siguiente post. De lo visto, en especial por los cibernautas y programadores, que saben acerca de Joomla que es el CMS más conocido; entonces, me vi en la curiosa idea de buscar a los CMS menos conocidos, descartando a los que le siguen a joomla como (mambo, drupal, etc etc…)

Y encontré a Jaws y e107. Algunos no lo conocerán, ya un poco desactualizados, pero para quienes empiezan en los CMS ahi les muestro. Los he instalado y van bien. Codificación más simple que los CMS más conocidos.

Joomla tiene una estructura más elaborada con respecto a los mencionados, pero para los iniciantes ver otras alternativas no estaría mal. Además queda en Uds. darle algunos retoques.

JAWS: http://www.jaws-project.com/

E107: http://e107.org/news.php

Ambos tienen sus propios instaladores inc. (usan php – mysql)  y como adicional, les diré que se pueden ofuscar con las herramientas mostradas en este Blog, sin problemas hasta el momento en cuanto al funcionamiento aposteriori.

PHP – StoreProcedure – Functions de MySQL

Posted on Actualizado enn

Es un clásico el llamado de los storeprocedure y functions en PHP. Si lo llevamos al nivel más básico (programación clásica) es como jugando con MySQLi y si tienes ADODB esto se simplifica.  Para algunos esto es repetitivo de muchos blogs, pero mostraré para aquellos que se han cansado de buscar la información y no les funciona nada, derepente con estos ejemplos les funcione voy a poner el script primero como llamar un storeprocedure de MySQL en PHP y luego con funciones almacenadas.

PHP – Procedure

$resultado=mysqli_query($conexion,»call sp_ejemplo(‘ «.$a.» ‘,’ «.$b.» ‘); «);

donde sp_ejemplo es el storeprocedure.

PHP – Functions

$resultado=mysql_query(«select sf_ejemplo();»,$conexion);
$id=mysql_result($resultado,0,0);

donde sf_ejemplo es la function.

La diferencia se encuentra en que el store procedure me retorna uno o varios resultados como si estuvieras haciendo un select por decirlo así. En cambio las functions solamente te retornan un sólo resultado y para capturar se usa el mysql_result.

Ahora en ADODB, que es OOP, esto se simplifica en terminos de ejecución pero el aspecto de captura de resultado, siempre tener en cuenta que la función(es) solamente me devuelve un solo valor.

MySQL – StoreProcedure

Posted on Actualizado enn

Hace unos días un amigo desde MSN me consultó acerca de los storeprocedure en MySQL la pregunta era si se podían crear bucles repeat anidados. Para mi entender se trataba de hacer la siguiente secuencia (esquematizando como para entenderlo):

REPEAT

REPEAT

UNTIL a<1 END REPEAT;

UNTIL a<1 END REPEAT;

La respuesta para algunos entendidos de nivel avanzado, es que si se puede y total es correcta la respuesta. Pero al parecer, la idea de la consulta planteada iba dirigida hacia los CURSORES. Como se sabe los cursores ayudan a que un grupo de datos de una consulta SQL se envíen a cierto bucle como un repeat o while para procesar, es lo más común que he visto. Bueno para mi experiencia no tan grande en MySQL si realicé ese procedimiento de cursores pero no anidados como se piensa. Me explico usando REPEAT:

open cursor1;

open cursor2;

REPEAT

FETCH cursor1 into a, b  …. etc etc;

FETCH cursor2 into x, y …. etc etc;

//Procesar

UNTIL a<1 END REPEAT;

close cursor1;

close cursor2;

Como verás no existe otro repeat x cursor. Recuerdo en una oportunidad que quise realizar un repeat x cursor pero MySQL lo rechazó era la versión 5.0.

Al parecer en la versión 5.0 no se puede realizar la apertura de un cursor dentro de un bucle que esta con fetch activo, es decir realizar lo siguiente:

open cursor1;

REPEAT

FETCH cursor1 into a, b  …. etc etc;

open cursor2;

REPEAT

FETCH cursor2 into x, y …. etc etc;

//Procesar

UNTIL b<1 END REPEAT;

CLOSE cursor2;

//Procesar

UNTIL a<1 END REPEAT;

CLOSE cursor1;

Si alguien le ha salido este último esquema puede contestarlo, en todo caso, el primer esquema si funciona y se puede comprobar en el manual de MySQL.

Problemas en el Upgrading XAMPP 1.6.8 a XAMPP 1.7.2

Posted on Actualizado enn

Hace unos días realicé el proceso del paso de una versión a otra XAMPP, porque mis proyectos que realizaba estaba en mysql 5.0 y ahora necesitaba el uso de los task que trae 5.1, bueno algunas mejoras adicionales que requería también en cuanto a seguridad.

Procedí a descargar el XAMPP for Windows 1.7.2 he instalar. El detalle de ahora es que después de la todo el proceso de instalación no corría el servicio de Apache y solamente MySQL estaba ok.

El problema está que por default todas las configuraciones de apache usan este seteo «/xampp» a pesar que en el transcurso de la instalación relocalicé la ruta (relocate).

Bueno hay 2 y hasta 4 archivos que tuve que modificar uno es el startup.pl ubicado en el directorio por defecto: «c:/xampp/apache/conf/extra» => lo que cambié las rutas «/xampp» por «c:/xampp» porque lo instalé por defecto.

El segundo archivo a modificar es bastante extenso y es el httpd.conf y que se tuvo nuevamente modificar las mismas tareas.

El tercer y cuarto archivo a modificar fue httpd-xampp.conf, httpd-vhosts.conf y httpd-dav.conf; estos 2 últimos según como estén trabajando con apache.

Cabe señalar que también se puede realizar el upgrading instalando por separado el mysql en la carpeta /mysql del directorio de xampp y también reemplazar el php instalador binario sobre la carpeta /php del directorio de xampp; éste último caso implica llevar los archivos de término «_2» al directorio /apache/bin y reemplazar por los existentes (previa copia de los originales por si realizan mal la operación). El httpd.conf también se debe obtener una copia previa antes de modificar.

Lo bueno de este xampp es que el panel de control tiene más opciones de control y ahora se puede ejecutar entre comillas «por el simulador de DOS».

En fin y para terminar, xampp en su página oficial nos dice que en windows vista, instalar fuera de «archivos de programa» o «program files» por aspecto de restricciones en el acceso (bueno los usuarios de vista sabrán lo que les digo). También siempre revisen los logs de apache (/xampp/logs), para cualquier problema con los servicios.

Hasta el siguiente post.

Pruebas de Ofuscamiento de Código Fuente (Obfuscator)

Posted on Actualizado enn

Siempre escuché y leí acerca de la ofuscar código, es decir la manera de mostrar el código fuente de un programa en código «encriptado», con el fin de que no lleguen a copiarlo. Bien busqué 2 programas cualquiera para encriptar y ver en qué grado encriptan el código de un proyecto web hecho en PHP y observar los resultados si funcionan o no:  PHP Obfuscator & Encoder y el   Zend Guard

El proyecto a ofuscar será el CMS Joomla, además de estar soportado con XAMPP, que incluye a Apache/PHP/MySQL.

Consideraciones iniciales: Se instaló y ejecutó correctamente el joomla para su funcionamiento normal.

previo1 previo2

1era Prueba: PHP Obfuscator &Encoder

Es una herramienta simple de instalar y ejecutar para eso tomé los valores por defecto que trae y seleccioné solamente los archivos de raíz de cada carpeta de Joomla y procedi a ejecutarlo el programa para ofuscar el codigo en un carpeta que la llamé joomla2.  El resultado joomla no pudo iniciar por un error en la interpretación del código. Aquí las imágenes:

soft1 soft2
soft3 resultado0
resultado1

2da Prueba: Zend Guard

La herramienta ZendGuard es más pesada que el anterior y se requiere la importación del proyecto joomla. Los resultados fueron los mismos. Al comprobar la ejecución del nuevo site encriptado no pudo ejecutarlo y resultó el mismo caso. Claro que tuve instalar otro componente más llamado Zend Optimizer y prácticamente me estaba llevando a que también instalara Zend Server, pero éste último no lo instalé.

Aquí realicé unas capturas de la ejecución:

soft11 soft22
soft33 soft44
resultado11
resultado1

Conclusión Final: Los 2 programas ejecutados sin hacer modificaciones alguna en su configuración, solamente ofuscan el código de manera perfecta para proyectos estructurados. Cabe resaltar que realicé este mismo procedimiento con el proyecto Galopin (hecho en PHP en forma estructurada) y se ejecutó normalmente en cambio con proyectos grandes y que además puedan incluir frameworks hay una limitante. Y la gran pregunta es: ¿por qué hice esta prueba con software libre? simplemente porque tanto ZendGuard, como PHP Obfuscator comercializan sus productos promoviendo seguridad en el código fuente de los proyectos en PHP.

Ecommerce – OpenSource

Posted on Actualizado enn

En el desarrollo de aplicaciones en software libre se topa con el tema de ecommerce, es entonces, que cuando buscamos las fuentes y encontramos una gama de software que podemos realizar modificaciones al respecto y adecuarlos con respecto a los requerimientos captados. He aquí una lista pequeña de algunos software libres para su testeo. Mis favoritos son el osCommerce y OpenCart. Aparte en el mundo del ecommerce, los CMS caso joomla o mambo se han desarrollado módulos con el fin de que se adicione esta característica, como se sabe están hechos en PHP – MySQL por default. A continuación algunas imágenes de ecommerce:

OsCommerce (Enlace)


VirtueMart (Enlace)


FatFreeCart (Enlace)


OpenCart (Enlace)


ZendCart (Enlace)

Adecuar XAMPP para WML

Posted on Actualizado enn

Una de las alternativas de tener un servidor web y BD bajo apache y mysql es xampp, pero con una simple búsqueda en San Google u otros buscadores encontrarán más alternativas. Este post se centra en XAMPP uno de mis favoritos, porque tiene soporte para windows y linux; además de contar varias librerías adjuntadas como el caso de PEAR.

Para darle soporte para interpretación de páginas WML, pues es necesario hacer unos retoques a la configuración:

Dentro de httpd.conf ubicado dentro del directorio de apache agregar las líneas en la sección de MIME Types:

AddType text/vnd.wap.wml .wml
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlc .wmlc
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp

Listo, ahora simplemente reiniciamos el servicio de Apache. Aquí el link de XAMPP.

Pero ahora como empezar a usar bueno nuestro soporte de WML para ello necesitaremos un emulador WML. Emuladores hay varios uno de mis preferidos es WAP Proof (es comercial), WinWAP, DeckIt Windows/Linux, etc. Aquí algunas presentaciones:

Buscando el Software Perdido

Posted on Actualizado enn

En el mundo de los productos de «Adobe» y centrándonos en el software dreamweaver CS3 existía una herramienta que ahorraba parte de la programación en PHP con MySQL para quienes desean realizar alguna web lo más rápido posible y conectándose a una base de datos. Esta herramienta se le conocia bajo el nombre de «Developer Toolbox 1.0». El detalle de esta herramienta era que generaba tanto código que el manejo para una edición fuera de lo estándar requería algunos artificios.

El año pasado (2008) se anunciaba que iba ha salir la versión 1.0.1 para el dreamweaver CS4, pero luego sucedió lo inevitable en abril del 2009, abandonaron el proyecto. Como todos involucrados en este mundo de la informática sabemos que todo software tiene versiones. Entonces donde esta la versión alpha o beta???. Y en búsqueda por internet lo encontré fácilmente en el mundo de los torrents.

He aquí el link donde Adobe expresa las razones del abandono y aquí el link que dirige para descargar (archivo torrent), el tan apreciado software de «Developer Toolbox 1.0.1 BETA» para quienes se acostumbraron en la versión 1.0 en CS3.