Telepieza es un mezcla de ayuda, información, opinión, ocio, negocio y diversión, esperamos que todos vosotros os sintaís en vuestra casa.

En el apartado (buscar de Forma automática el cambio de Divisa (I) , nos quedamos en la instrucción fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets()fgetss(),fputs()fclose()feof()).

En el apartado (Buscar de Forma automática el cambio de Divisa (II), vimos un programa en PHP que realizaba un búsqueda en Google,  recuperaba una página con la divisa y se extraía el valor de la divisa.

Mi experiencia en buscar el valor de la divisa en google, es buena pero mejor localizar el cambio de la divisa en sitios donde nos den más garantías, por ejemplo en Europen Center Bank.

En la página web del banco, podemos recuperar un fichero en formato xml y después tratarlo con un programa PHP.

La forma de recuperar el fichero es por mediación de la instrucción fsockopen() igual que en el post de la segunda parte, pero la diferencia de éste es que nos traemos un fichero xml y en el post anterior una página html.

El programa lo he realizado mediante una librería Open Source llamada DOMIT, el motivo es porque tengo un montón de programas integrados con dicha librería y de paso también veis la conexión con dicho software.

Voy a colgar el programa en PHP que está funcionando desde hace muchos meses sin dar ningún tipo de error para localizar el cambio de divisa desde un Hosting con la instrucción fsockopen()

El programa php currency_class.php es una clase y la he llamado currency_class.php, ire comentando casi todas las instrucciones para su mejor comprensión.

PROGRAMA REALIZADO PARA PHP LLAMADO CURRENCY_CLASS.PHP SIENDO LA CLASE Currency.

class Currency {
public $decimal  = 5;
function __construct($p_decimal) {
if($p_decimal != 0)    $this->decimal = $p_decimal;
}

function getCurrencyXMLECB() {

$host     = ‘www.ecb.europa.eu’;                                        // Host
$page     = ‘/stats/eurofxref/eurofxref-daily.xml’;   // Pagina y fichero xml
$type     = ‘text/xml’;                                                             // Tipo fichero
$supplier = ‘European Central Bank’;                             // Nombre de la compañia
$t_time   = ”;                                   // Fecha del cambio divisa
$t_data   = array();                     // Matriz de todas las divisas y valor (Datos)
# Open Socker (ECB);
$file_info = ”;                                                                         // Fichero xml
$get_info = false;                                                                 // Variable primera lectura
# Open Socker (ECB)
if ($fsock = @fsockopen($host, $port=80, $errno, $errstr, $timeout=15)) {
# Pagina y valores a buscar en el servidor
$out = “GET $page HTTP/1.1\r\n”;
# DNS o IP del Host
$out .= “HOST: $host\r\n”;
# Tipo de Conexion y cierre
$out .= “Connection: close\r\n\r\n”;
@fputs($fsock, $out);
while (!@feof($fsock)) {
# A partir de la Segunda Lectura grabamos la informacion en $file_info para su posterior tratamiento
if ($get_info) $file_info .= @fread($fsock, 1024);
else {
# Por primera vez eliminamos la cabecera y controlamos errores de conexion
$line = @fgets($fsock, 1024);
if ($line == “\r\n”) $get_info = true;
else if (stripos($line, ’404 not found’) !== false)
{
$errstr = ‘FILE_NOT_FOUND’ . ‘: ‘ . $host . $page;
echo(‘ Currency 01-Error : ‘ . $errstr );
return false;
}
}
}
@fclose($fsock);
}
}
# Si es todo OK en la variable $file_info tenemos el fichero eurofxref-daily.xml
# Libreria Domit (leer de forma muy rapida el fichero xml)
# en la Constante MPATH_LIBRARIES Colocamos la ruta de la libraria y Clase DOMIT
# Realizamos un requiere_once del xml_domit_lite_include.php
require_once( MPATH_LIBRARIES.’domit/xml_domit_lite_include.php’ );
# Creamos la clase y parse del fichero $file_info
$xmlDoc =& new DOMIT_Lite_Document();
if( !$xmlDoc->parseXML( $file_info, false, true ) ) return false;
# Extraemos la etiqueta Cube
$currency_list = $xmlDoc->getElementsByTagName( “Cube” );
// Leemos todas las etiquetas Cube para localizar la fecha, divisa y valor de la divisa
for ($i = 0; $i < $currency_list->getLength(); $i++) {
$currNode =& $currency_list->item($i);
// Preguntamos si el atributo es time = fecha Cambio divisa
if ($currNode->getAttribute(“time”) ) $t_time = $currNode->getAttribute(“time”);
// Preguntamos si el atributo es una divisa
elseif ($currNode->getAttribute(“currency”)) {
// Pasamos la divisa a $currency
$currency = $currNode->getAttribute(“currency”);
// Pasamos el Valor a $rate
$rate = $currNode->getAttribute(“rate”);
// Grabamos en una matriz $t_data con indice $currency y valor $rate
if ( $rate > 0 ) { $t_data[$currency]=round($rate,$this->decimal);
}
unset( $currNode );
} // end function convertecb
return $t_data;
}
}

// ———————————————————————–

Creamos el objeto $change indicando los decimales a extraer de la moneda del fichero xml, una vez creado el objeto llamamos a getCurrencyXMLECB y nos devuelve false (Si no ha recuperado las divisas) o una matriz con todas las divisas con sus valores.

$change  = new Currency($decimal=4);
$conver    = $change-> getCurrencyXMLECB(); 

Share

En el apartado (buscar de Forma automática el cambio de Divisa (I) , nos quedamos en la instrucción fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets(), fgetss(), fputs(), fclose(), feof()).

Voy a colgar el programa en PHP que está funcionando desde hace muchos meses sin dar ningún tipo de error para localizar el cambio de divisa desde un Hosting con la instrucción fsockopen()

El programa php currency_class.php es una clase y la he llamado currency_class.php, ire comentando casi todas las instrucciones para su mejor comprensión.

PROGRAMA REALIZADO PARA PHP LLAMADO CURRENCY_CLASS.PHP SIENDO LA CLASE Currency.

<?php
/**
* @version  $Id: currency_class.php
* @package  mvmphp
* @copyright Copyright (C) 2009
* @comment      Clase Currency (Buscar Valor de la Divisa)
*/

class Currency {
// Por defecto para toCurr es USD = Dólares y fromCurr es EUR = Euros 

 public $toCurr   = ‘USD’; 
 public $fromCurr = ‘EUR’;
 // Constructor de la Clase, si los parametros a pasar son diferentes de null, pasamos los valores a las variables de la clase
 function __construct($p_curr=null, $p_from=null) {
  if ($p_curr != null ) $this->toCurr   = $p_curr;
  if ($p_from != null) $this->fromCurr = $p_from; 
  $this->toAmount = 1;  // Valor es siempre 1
 }  
 
/**
* Busca mediante la tecnica del Socker del puerto 80 en google el valor de la divisa
* Si es correcto devuelve una página para después localizar el cambio de la divisa
*/
 function getCurrencyGoogle() {

 $host = ‘www.google.com’;
 $page = ‘/search?&q=’.$this->toAmount.’+’.$this->toCurr.’+in+’.$this->fromCurr;
 $file_info = ”;   $get_info = false;  $returnHtml = array();  $t_d=”; 

# Open Socker (Google) y search con las dos divisas con valor 1
 if ($fsock = @fsockopen($host, $port=80, $errno, $errstr, $timeout=15))
 {
# Pagina y valores a buscar en el servidor
  @fputs($fsock, “GET $page HTTP/1.1\r\n”);
# DNS o IP del Host
  @fputs($fsock, “HOST: $host\r\n”);
# Tipo de Conexion y cierre
  @fputs($fsock, “Connection: close\r\n\r\n”);
  while (!@feof($fsock))
  {  
# A partir de la Segunda Lectura grabamos la informacion en $file_info para su posterior tratamiento
   if ($get_info) $file_info .= @fread($fsock, 1024);
   else
   {
# Por primera vez eliminamos la cabecera y controlamos errores de conexion
    $line = @fgets($fsock, 1024);
    if ($line == “\r\n”) $get_info = true;
    else if (stripos($line, ’404 not found’) !== false)
    {
     $errstr = ‘FILE_NOT_FOUND’ . ‘: ‘ . $host . $page;
     error_log_event(‘ Currency 01-Error : ‘,$errstr ); 
     return false;
    }
   }
  }
  @fclose($fsock);
 }
 else
 {
  if ($errstr) { $errstr = utf8_convert_message($errstr);
                 error_log_event(‘ Currency 02-Error : ‘,$errstr );
                       return false;  }
  else     { $errstr = ‘FSOCK_DISABLED’;  
                 error_log_event(‘ Currency 03-Error : ‘,$errstr );
        return false; }
 }

Lee el resto de esta entrada »

Share

Dentro de muy pocos días ponemos en marcha una nueva tienda virtual realizada en JOOMLA con VIRTUEMART. Nuestro cliente ha quedado muy satisfecho del resultado y nosotros viendo la satisfacción de él aún más.

masquepelotas02
……………………………………………………….
masquepelotas01
……………………………………………………

Dicho trabajo lo ha desarrollado y supervisado TELEPIEZA quedando sorprendido del potencial de Joomla + virtuemart para desarrollar y arrancar en pocos días una tienda Virtual Nacional.

Si queréis ver el trabajo y por supuesto comprar raquetas, zapatillas o padel la direccción es: http://www.masquepelotas.com/tienda/index.php

Si tienes en mente crear un sitio WEB o modificar tú página WEB y quieres ser un Cliente SATISFECHO como todos nuestros Clientes, envía un e-mail a : telepieza@telepieza.com .

Saludos.

Share

Llevo algunos días pensando en realizar algo nuevo en el mundo de los catálogos electrónicos por Internet con adaptación a la tienda Virtual.

He visto programas muy bien desarrollados como el virtuemart de Joomla o el OsCommerce, dichos programas están pensados para entornos de tiendas virtuales, pero no así,  para empresa de importación o exportación de mercancía.

Los términos FOB, CIF y DDP, son fundamentales cuando queremos adquirir productos fuera de nuestras fronteras y venderlo a nuestros clientes.

FOB: El proveedor paga el transporte desde la fábrica hasta el puerto origen (Chino). El cliente paga el transporte marítimo desde China hasta España, el arancel de aduanas y el transporte desde el puerto a su Fábrica. Ejemplo FOB : Puerto Shanghai.

CIF: El proveedor paga la totalidad del transporte de su empresa hasta el puerto de destino, y el cliente mediante el Bill of Lading (Documentos de embarque) realiza la importación pagando el arancel de aduanas y el transporte desde el puerto a su almacén. Ejemplo CIF : Puerto Barcelona.

DDP: La mercancí­a se entrega en el almacén del cliente junto con una factura nacional que incluye el % habitual de IVA (excepto Canarias) y el proveedor se hace cargo de todos los gastos.

He terminado el proyecto del catálogo electrónico asociado a la tienda virtual y los primeros datos con tan sólo el 10% de los artículos publicados en Internet (Unos 30), son espectaculares ,  los accesos al mismo rondan los 1.000 diarios.

No existen muchos catálogos y tiendas virtuales pensadas para comprar en grandes cantidades y a un buen precio eligiendo la empresa o el usuario el tipo de transporte y pago a realizar.

Si quereís ver el catálogo ir a: http://www.bud-get.com/b2b/catalog_page.php

budgetcat01
Share

Cuando realizas una página web pensando en todas las culturas e idiomas , tienes que tener en cuanta estos consejos :

1.- Google no está en todos los continentes, por ejemplo en Asia domina Baidu.

2.- El famoso YouTube está prohibido en China, alli el que funciona se llama Youku.

3.- En programación, existen funciones automáticas que cambian las palabras de minúsculas a mayúsculas, recuerda que muchos idiomas no existe las mayúsculas y el efecto es que no salen las letras.

4.- Cuando diseñas una página web necesitas comprender el significado de los colores en cada cultura. El significado del color es fundamental para un pueblo, por ejemplo el blanco en china significa muerte, sus colores preferidos son el dorado y el rojo, aquí en nuestra cultura el significado de los colores son diferentes.

5.- El mundo está lleno de ordenadores conectados a Internet. El navegador más utilizado es el Explorer 6 y muchos de ellos tienen una antigüedad superior a 5 años con tarjetas de vídeo no superior a 512 Kb y resolución de 800×600.

6.- Si tú sitio web está pensado para ordenadores de 1024×768,  millones de ordenadores no podrán ver tú página web, por lo explicado en el punto 5.

7.- En la escuela , en el trabajo, en las noticias te explican que los navegadores más utilizados en el mundo son IE, mozilla, chrome …, pero se olviden de que un pueblo como los chinos utilizan uno llamado 360 IE en chino ……..

8.- Nuestra cultura  se expresa y escribe con caracteres y en otras culturas en símbolos. Lo explico porque un carácter se puede leer con font 10, pero cuando estamos visualizando sí­mbolos es a font 12 o superior.

9.- Si quieres armonizar una página web en varios idiomas, recuerda que la lengua expresada con sí­mbolos es más ancha que la expresada en caracteres.

10.- Si pides opinión a personas de otras culturas, puede que nunca te digan que no, pero si no les gusta la página no entrarán nunca a tu web.

11.- Si realizas una web y tu vecino o amigo la ve lenta, en otros continentes como el Asiatico o el Africano ni la verán, sus líneas de comunicaciones son más penosas que las nuestras.

12.- Una página web multi-idioma que se aprecie tiene que enseñar la página principal en el idioma que el usuario tiene en su ordenador o navegador.

Share

 Existen muchas técnicas diferentes para buscar el cambio de una divisa en lenguaje PHP en otro servidor que no sea el tuyo (Por ejemplo : European Center Bank). Generalmente el cambio de las divisas del día lo dan servidores de Bancos, Instituciones Económicas, Prensa especializada en economía, Las Bolsas de todo el Mundo ,  los buscadores como yahoo, google y demás organizaciones que están especializados en Importación/Exportación de Divisas.

 Para poder leer un fichero HTML en otro ordernador en PHP podemos utilizar la funcion :  file_get_contents()  y para poder leer un fichero en otro servidor en XML la funcion : simplexml_load_file()

Dichas funciones funcionan perfectamente si las utilizamos en programa PHP que sus máquinas son controladas por nuestro Dpto. Informático o en ordenadores locales con conexión a Internet.

 Las técnicas que estamos utilizando para buscar el valor de divisa en los formatos ya explicados anteriormente, son muy factibles porque dichas organizaciones nos dejan dichos ficheros en sitios públicos, para que otras compañías puedan acceder a leer libremente dichos ficheros.

 Pero la sorpresa es cuando una aplicación realizada en PHP  la ejecutamos en un HOSTING,  y vemos con sorpresa que dichas funciones nos dan error,  porque el Servidor del Hosting no permite acceder a otros Ordenadores con dichas funciones para leer los ficheros que nosotros necesitamos en nuestra aplicación.

Para solucionar el problema existe una función : fsockopen() que nos puede ayudar a leer ficheros HTML y TXT, para poder leer ficheros de otros servidores sin que el HOSTING nos corte el acceso a las máquinas remotas que deseamos acceder.

La funcion fsockopen()  abre una conexión de dominio Internet o Unix via sockets. su descripción es : 

   int fsockopen( string hostname, int port [, int errno [, string errstr [, double timeout]]])

 fsockopen() : Inicia una conexión de dominio Internet  o Unix.

 Para el domino Internet, abrirá una conexión TCP hacia el ordenador hostname en el puerto port.

 Para el dominio Unix, hostname se usará como ruta al socket, port debe ser 0 para este caso, el parámetro opcional timeoutse puede usar para especificar un timeout en segundos para establecer la conexión.

fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets(), fgetss(), fputs(), fclose(), feof()).

En el siguiente post realizaremos un programa con fsockopen() para extraer el cambio de la divisa desde un servidor.

Share

 Si desea contactar con telepieza, puede enviar un e-mail a: telepieza@telepieza.com.
Normas de uso y Politica de privacidad .Telepieza empezó el 20/12/2007 a las 18h (Hora Española).
 Ayude a financiar Telepieza en Internet, picando un anuncio de su interes en nuestro Weblog.