Archivos de Categoría: Desarrollos

Premios en PHP CLASSES a los mejores scripts php

 

Un año más este fantástico sitio web, referencia para cualquier programador php, publica los resultados de la encuesta que decide cuales han sido los mejores scripts php, dentro de los resultados encontraremos los resultados ordenados por países y acumulados.

logo de php classes

El ganador de este año ha sido el estadounidense Nathan Bruer con un script dedicado a la conectividad con el servidor a través de sockets.

Web Socket Service
Handle Web socket accesses using child processes

Problema al enviar correo en prestashop

Tras hacer una migración de un prestashop (Versión 1.2.5.0 ) de un cliente  a un nuevo entorno de producción el sistema de alertas por correo de prestashop dejo de funcionar. Dicha tienda cuenta con un servidor de correo externo (smtp propio de la empresa), tras comprobar varios puntos básicos  tales como conectividad, probar con servidores de terceros (gmail) vimos que el sistema había dejado de funcionar  en el nuevo entorno.

Algunas de las incidencias/anomalías que produce además de no mandar el correo son:

  • Cuando intentamos mandar un correo al cliente a través de la ficha del pedido, Prestashop nos redirige la página inicial.
  • Los pedidos no aparecen en el listado de pedidos del backend, únicamente se registran en la ficha de cada cliente.

Dicho entorno tenia deshabilitado el safemode de php.


 En las líneas 160 en adelante del fichero  tools\swift\Swift\Plugin\MailSend.php detectamos que se comprobaba si tenemos habilitado el safe modo en php, dicha comprobación no funciona, por lo que deberemos elegir entre habilitar el safe mode o quitar la comprobación.

public function doMail($to, $subject, $message, $headers, $params)
 154    {
 155      $original_from = @ini_get("sendmail_from");
 156      @ini_set("sendmail_from", $this->returnPath);
 157
 158      $headers = $headers->build();
 159
 160      if (!ini_get("safe_mode")) $success = mail($to, $subject, $message, $headers, $params);
 161      else $success = mail($to, $subject, $message, $headers);
 162
 163      if (!$success)
 164      {
 165        @ini_set("sendmail_from", $original_from);
 166        throw new Swift_ConnectionException("Sending failed using mail() as PHP's default mail() function returned boolean FALSE.");
 167      }
 168      @ini_set("sendmail_from", $original_from);
 169    }
 170  }

 

Como conectar con IBM AS400 desde php, .net, etc…

Los sistemas IBM Iseries AS400 y System/38 o sistemas 38 son todavía muy utilizados por grandes organizaciones que siguen corriendo su ERP en estas poderosas y estables máquinas.

Muchas veces los desarrolladores de software nos encontramos conla necesidad de trabajar con todo tipo de bases de datos en este caso estudiaremos como conectar con una BBDD de IBM DB2 (original de los sistemas anteriormente mencionados)

para este ejemplo veremos como hacer una conexión y un ejecutar una consulta en php, pero esto sería extensible a cualquier otro lenguaje que sea capaz de conectar a través una ODBC.

En primer lugar tendremos que descargar iSeries Navigator desde la página de IBM o nos lo proporcionara el encargado de la administración/mantenimiento de el Iseries

ejecutaremos el instalador e instalaremos todos los componentes que nos permitan instalar (con ello conseguiremos los drivers odbc)

una vez instalador abriremos Navigator y crearemos una nueva conexión, especificando una ip o host y descripción. Al finalizar este proceso el asistente nos solicitará un usuario y contraseña de AS400 para poder hacer una comprobación.

cuando tengamos instalado y probado el conector, llegaremos hasta origienes de datos odbc y crearemos una nueva conexion de sistema o de usuario seleccionando el driver de ibm y configurandolo de manera que en la conexión indicaremos la que hemos creado en el proceso anterior, entre otras opciones podemos especificar unas bibliotecas por defecto y si necesitamos conversión de caracteres.

aquí pongo un ejemplo de conexión ODBC

$usuario = "usuarios";
$contrasena = "pass";
$dbconect = odbc_connect("BBDD", $usuario, $contrasena);
if ($dbconect == 0) {
echo("Ha fallado la conexión a la base de datos.");
$sqlerror = odbc_errormsg($dbconect);
echo($sqlerror);}

Ejemplo Ajax fácil y sencillo

En esta ocasión vamos a ver algo que a los desarrolladores amateur u ocasionales les trae de cabeza, el uso de ajax:

En primer lugar creamos una página que la llamaremos como nos de la gana php o html  que contendrá el siguiente código:

Prueba de Ajax
Aquí mostramos el resultado

Luego añadiremos al head el código en cuestión javascript

Y en último lugar crearemos un nuevo fichero esta vez php (para que haga algo) que llamaremos resultadoajax.php con el siguiente código:



Mostrar productos de tienda prestashop en otras webs internas o externas

Hemos creado en vidadel un script pequeñito en php para mostar aleatoriamente (imágenes, precio y enlace al producto dentro de la tienda) elementos de la tienda en cualquier otra página que no sea del propio PrestaShop,se puede configurar:

  • Número de productos a mostrar.
  • Número de elementos por fila.
  • Dirección de instalación de nuestro PrestaShop.
  • id_image-medium se puede cambiar por el tamaño de imagen que deseemos.

Estaría bien que cada modificación la publiquéis así ganamos todos.

Un saludo y ahí va el código.

Leer más »