Featured Posts

erufenix .::. blog Rss

Copiar archivos entre carpetas con PHP

Posted on : 13-08-2009 | By : erufenix | In : PHP, Programación

0

Digamos que queremos hacer un respaldo de archivos del servidor o copiar archivos de una ubicación a otra. Para esto este código nos puede servir.

En primera tenemos $dir y $dir2 que corresponden a la ruta origen y la ruta destino respectivamente, luego hacemos cambios a un script que ya había publicado antes, donde:

  • $dp=opendir($dir); abre el directorio para su lectura.
  • while($file=readdir($dp)) ciclo que lee el directorio mientras existan archivos en él.
  • Con $extension=getExtension($file); aplicamos un filtro para solo copiar archivos con ciertas extensiones
  • En la variable $cmd guardamos una cadena con el comando cp con sus parametros y con la función exec() ejecutamos el comando en el sistema.
function getExtension($archivo)
        {
      	 $a=explode(".",$archivo);
      	 return $a[count($a)-1];
        }
 
$dir  = getRuta($CveCom);
$dir2 = getRuta($comn);
 
if(!file_exists($dir)) //verificamos que existe el directorio
   {
    echo "<br/>Error... El directorio no existe. Configura bien tu variable \"dir\" ...";
   }
else
   {
    $i=0;
    //echo $dir;
    $dp=opendir($dir);
	while($file=readdir($dp)) //hacemos un ciclo para guardar los nombres de los directorios y archivos que se tienen en el directorio actual
          {
           $extension=getExtension($file);
	       if($extension=="php" || $extension=="html" || $extension=="htm")
	          {
                    $srcfile=$dir."/".$file;
		    $dstfile=$dir2."/";
		    echo "Copiar '$srcfile' a '$dstfile'... <br>";
	            $cmd = "cp $srcfile $dstfile";
		    $eje1=exec($cmd, $output, $return_var);
                 }
         }
   }

Otra opción para copiar los archivos sería la función copy(), pero al ejecutar el script marcaba error al ejecutarse, así que decidi usar la alternativa del exec().

Limpiar la consola de MySQL

Posted on : 11-08-2009 | By : erufenix | In : Programación, mysql

0

hace mucho que no posteo trucos y códigos de programación, pero creo que ya va siendo hora :lol: .

Bueno al grano, para los que manejamos mysql en alguna ocasión nos hemos preguntado ¿Cómo limpio la consola de mysql?. Un caute dice dale muchos enters. Pero investigando en los foros de mysql me encontré 2 formas de hacerlo:

1. Con el comando

\! clear;

2. Con el atajo de teclado

ctrl + l

ebooks de autómatas

Posted on : 02-02-2009 | By : erufenix | In : Programación, ebook y book

4

Este 4trimestre de la maestría estoy tomando una clase en la que se ven autómatas, dando un googlaso por la red me encontré estos 2 ebooks.

ebooksaotomatas

El primer libro Autómatas y Lenguajes: Un enfoque de diseño fue diseñado por Ramon F. Brena Pinero, profesor en el Tecnológico de Monterrey, Campus Monterrey quein impartió clases relacionadas con Autómatas y lenguajes por mas de 10 años

El segundo es un clásico sobre los lenguajes formales, la teoría de autómatas y la complejidad computacional. Con más énfasis en las aplicaciones prácticas actuales, con un estilo más conciso y directo y numerosos ejercicios y ejemplos que le ayudan a confirmar la comprensión de los conceptos teóricos presentados.

  automatas_ebooks.rar (22.5 MiB, 1,645 hits)

Problema con swfobject y update de flash en ie7

Posted on : 05-03-2008 | By : erufenix | In : Flash, Programación

0

Para los que no saben existe algo llamado swfobject que es un script que sirve para añadir de forma fácil y segura animaciones flash en una pagina y este script es el que uso yo.

Vamos al grano resulta que hoy abrí mi blog con el chafasplorer 7 y como no tenia el plugin de flash pues entonces lo instale pero al reiniciar, sopas ninguna animación flash se visualizaba.

El problema se presenta al actualizar el plugin de flash para chafasplorer 7 el swfobject ya no funciona bien. Gogleando por la red encontré la solución:

var so = new SWFObject("animacion.swf", "sotester", "743", "133", "8", "#0000FF");

Cambiar por:

var so = new SWFObject("animacion.swf", "sotester", "743", "133", "false", "#0000FF");

Como ven solo se cambia el parámetro de la vercion de flash por false.

Por favor ya dejen de usar chafasplorer para navegar, ya dejen eso navegador lento e inseguro y que además no cumple con los estandares web, mejor… get firefox

Has una página de rolas

Posted on : 18-12-2007 | By : erufenix | In : PHP, Programación

0

Hace unos post publique post de como organizar y visualizar los vídeos FLV almacenados en nuestro server; en esta ocasión veremos como organizar mp3.

Básicamente el código es el mismo, pero con unas modificaciones.

$contenido = '<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
	<trackList>';
while($file=readdir($dp))
       {
        $extension=getExtension($file);
	      if($extension=="mp3")
	         {
                  $filenames[]=$file;
                }
       }
sort($filenames);
for($i=0;$i<count($filenames);$i++)
    {
     $ruta=$referer."/".$filenames[$i];
     $rolaname=substr($filenames[$i],0,-4);
     $se=sepcade($rolaname);
		 $contenido.='
<track>
<title>'.$se.'</title>
<creator></creator>
<location>'.$ruta.'</location>
</track>';
}

Otro cambio que hice fue en la parte en que se escribe el archivo el XML, ya que aun cambiando los permisos del archivo (mod 777) no se escribía el valor de contenido en el archivo, pero con el sig. código se soluciono.

if (is_writable($archivo))
   {
    // En nuestro ejemplo estamos abriendo $nombre_archivo en modo de adición.
    // El apuntador de archivo se encuentra al final del archivo, asi que
    // alli es donde ira $contenido cuando llamemos fwrite().
    if (!$gestor = fopen($archivo, 'wb'))
		     {
          echo "No se puede abrir el archivo ($archivo)";
          exit;
         }
    // Escribir $contenido a nuestro arcivo abierto.
    if (fwrite($gestor, $contenido) === FALSE)
		    {
         echo "No se puede escribir al archivo ($archivo)";
         exit;
        }
		 fclose($gestor);
    }

El resultado lo puedes ver en esta página y el código completo aquí

Flash + php + mysql

Posted on : 04-11-2007 | By : erufenix | In : Flash, Programación

2

Hace unos post publique como utilizar flash + php, esta ocasión veremos como hacer conexión con una BD de mysql.

Empecemos por hacer una página php que contenga las instrucciones para hacer la conexión con la BD y funciones básicas como altas, bajas, búsqueda y modificaciones.

  • Base usada en el ejemplo
CREATE TABLE `agenda` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` char(30) collate latin1_general_ci NOT NULL,
  `fon` char(10) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  • Conexión
$DBhost = "localhost";
$DBuser = "usuario_de_la_base";
$DBpass = "password_de_la_base";
$DBName = "nombre_de_la_base";
// conectando al servidor MySQL
$DBConn = mysql_connect($DBhost,$DBuser,$DBpass) or die("error en conexión: " . mysql_error());
// selección de la base
mysql_select_db($DBName, $DBConn) or die("error al seleccionar la base: " . mysql_error());
  • altas, bajas, etc.
switch($accion){
  case 'regi':
	  echo $nombre."  ".$fon;
		$consulta="INSERT INTO `agenda` (`nombre`, `fon`) VALUES('$nombre','$fon');";
		$resultado=mysql_query($consulta)or die ("error en la consulta". mysql_error());
	break;
	case 'leer':
	    $consulta="SELECT * FROM `agenda`;";
	    $resultado=mysql_query($consulta)or die ("error en la consulta". mysql_error());
	    $nfilas=mysql_num_rows($resultado);
	    echo "filas=".$nfilas;
	    echo "&registros=";
	    while($fila=mysql_fetch_row($resultado))
		    {
		     echo "<b>Nombre:</b> ".$fila[1].'<br />'."<b>Teléfono:</b> ".$fila[2].'<br<br /><br /><br />';
		    }
	break;
	case 'busca':
	     if($crite=="byname")
	        {
                   $consulta="SELECT * FROM `agenda` WHERE `nombre`='$valor';";
                }
	    if($crite=="byfon")
	        {
                  $consulta="SELECT * FROM `agenda` WHERE `fon`=$valor ;";
                }
	    $resultado=mysql_query($consulta)or die ("error en la consulta". mysql_error());
	    echo "&buscar=";
	    while($fila=mysql_fetch_row($resultado))
	            {
		      echo "<b>Nombre:</b> ".$fila[1].'<br />'."<b>Teléfono:</b> ".$fila[2].'<br<br />'
                    }
        break;
}

En esta código usaremos la sentencia switch para realizar las diferentes operaciones de la BD, los valores de la variable $accion se mandaran desde flash

En flash creamos un campo de texto dinámico en el cual cargaremos los registros de la base, para esto utilizaremos la instrucciones loadvars, load y onload para poner el valor de $accion=leer y así llamar a dicha función en la pagina php.

function leer()
       {
	  regis=new LoadVars;
          regis.load(_global.server+"phpf/agenda.php?accion=leer");
          regis.onLoad=function ()
		 {
                   registro.htmlText=this.registros;
                 }
      }

Donde regis es la variable que guarda el resultado de la acción leer de la pagina php, registro es el campo dinamico que mostrara los resultados y _global.server tiene el valor del host donde se ejecuta el script php.

Para insertar registros, creamos 2 campos tipo input, usamos la sentencia sendAndLoad la cual carga los valores contenidos en un objeto LoadVars (datos para este ejemplo) y los envía mediante la URl al servidor.

datos = new LoadVars();
datos.nombre = nom;
datos.fon = fo;
function registra()
       {
        datos.sendAndLoad(_global.server + "phpf/agenda.php?accion=regi", datos, "POST");
        datos.onLoad = function(success){
			if(success){
				nombre.text="";
				fon.text="";
				msg.text="Datos registrados";
				}
		      }
     }

Donde datos.nombre = nom contiene el valor del primer campo tipo input, y datos.fon = fo el valor del segundo campo.

Teniendo estas dos funciones (leer e insertar) y con un poco de más de programación e imaginación podemos implementar las opciones de eliminación y búsqueda.

archivos del ejemplo

22

Ecriptar password

Posted on : 23-09-2007 | By : erufenix | In : Programación

3

Existen varias maneras de ecriptar password en un formulario, las más fácil es usar códigos de ecriptación ya definidos como : SHA-1, MD4 o MD5

En php existe una función md5() que cumple con esta tarea, pero el inconveniente es que lo hace en el lado del servidor, lo que significa que del cliente al servidor la clave viaja en forma plana.

Para solucionar esto esta su equivalente en java script con el cual podemos los valores de los campos de un formulario y mandarlo directamente en md5 del cliente al servidor.

ejemplo:


Valor en MD5

codigo:

<label for="pass">Texto aquí:</label><input name="cmd5" type="text" size="20" id="cmd5"/>
<a href="#" onclick="javascript:(alert(hex_md5(document.getElementById('cmd5').value)));">Valor en MD5</a>
Para usar la ecriptación en los formularios podemos hacerlo de dos formas, la primera como lo mencionan en la pagina del autor y la segunda es crear un campo oculto y usar el método onSubmit().

Donde el campo falso contiene el valor que se cifrara en md5 y el campo oculto es el valor que enviara como password

Html

<form action='una_page.php' method="post" onSubmit="return checkData()" name="forc">
<p>
   <label for="user">Usuario:</label><input name="user" type="text" size="20" />
</p>
<!--Campo falso-->
<p>
   <label for="pass">Password</label><input name="passwordmd5" type="password" size="20" />
</p>
<!--Campo oculto-->
<p>
   <input name="password" type="hidden"    size="40" />
</p>
<p align="center">
    <input type="submit" value="Entrar" class="enviar"/>
</p>
</form>

Javascript

function checkData()
  {
    document.forc.password.value=hex_md5(document.forc.passwordmd5.value);
  }

Páginas seguras con PHPsp

Posted on : 06-09-2007 | By : erufenix | In : PHP, Programación

1

Si tu eres desarrollador de aplicaciones en php y se te complica hacer la sección de identificación y logeo, phpsp es tu solución

Phpsp es una serie de scripts escritas en php que de manera fácil y sencilla crean un sistema de logeo e identificación para una aplicación php. Características

  • Seguridad fácil para las páginas
  • Crear diferentes grupos de usuarios cada con sus propios permisos
  • Puede usarse con o sin base de datos
  • Manejo de sesiones
  • Soporte multilenguaje
  • Interfaz personalizable
  • Trabaja con php3, php4, php5

· Instalación

  • 1. Descomprimir phpSecurePages en la aplicación o en servidor
  • 2. Configurar el archivo secure.php

Ejecutar el sig. script si vas a usar BD

CREATE TABLE phpSP_users (
primary_key MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
user VARCHAR(50) NOT NULL,
password VARCHAR(32) NOT NULL,
userlevel TINYINT(3),
PRIMARY KEY (primary_key),
KEY (user)
);

· Configuración

Editar el archivo secure.php y modificar los siguientes parámetros

  • $cfgIndexpag: página inicial del sitio
  • $languageFile: lenguaje de phpsp
  • $useDatabase: en true, para usar BD

Más info de la configuración aqui

· Uso

Poner el siguiente código al inicio de tus páginas

<?PHP
$cfgProgDir = 'phpSecurePages/';
include($cfgProgDir . "secure.php");
?>

Ejemplo de phpsp

show/hide en los post

Posted on : 19-08-2007 | By : erufenix | In : PHP, Programación

0

Cuando escribo post muy largos en mi blog, no me gusta que estos ocupen una gran parte del blog; así que decidí investigar la manera de ocultar o mostrar parte del contenido.

Para word press hay muchos plugins que hacen esto, pero al probarlos no me gustaron ya que muchos de ellos recargan la pagina para mostrar el contenido restante de un post. Así que mejor decidí implementar algo por mi cuenta.

1. Empecemos por el css incluyendo el siguiente código.

.show
  {
   position:relative;
   display:none;
  }
 
.hide
  {
   position:relative;
   display:block;
  }

2. Con javascript usaremos el siguiente script y el código.

function oculta3(id)
   {
   var elemento = document.getElementById(id);
   var state1="status1-"+id;
   var state2="status2-"+id;
   if (elemento.className == "show")
     {
      elemento.className = "hide";
      xDisplay(state1,'none')
      xDisplay(state2,'block')
     }
  else
    {
      elemento.className = "show";
      xDisplay(state1,'block')
      xDisplay(state2,'none')
   }
 }

3. En el html lo siguiente

<div id="status1-nombre">
<a href="javascript:oculta3('nombre');">mostrar</a>
</div>
<div id="status2-nombre" class="show" >
<a href="javascript:oculta3('nombre');">ocultar</a>
</div>
<div id="nombre" class="show">Contenido oculto</div>

El primer div indica el mensaje que se mostrara cuando el contenido este oculto, el segundo div muestra lo contrario y el tercer div es donde estará el contenido a ocultar. Donde ‘nombre’ lo cambiaremos por el identificador del div que vayamos a usar.

Generar un XML con php

Posted on : 26-07-2007 | By : erufenix | In : PHP, Programación

2

Para este ejemplo vamos a crear un XML de la forma

<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<title></title>
<creator></creator>
<location></location>
</track>
</trackList>
  • 1.Creamos una variable que contenga las primeras tres líneas del XML
$contenido='<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>';
  • 2.Mediante un for llenamos los datos del xml: tile, creator y location.
for($i=0;$i<count($filenames);$i++){
$contenido.='
   <track>
   <title>'.$se.'</title>
   <creator></creator>
   <location>'.$ruta.'</location>
   </track>';
}
  • 3.Agregar a la variable las ultimas líneas después del for
$contenido.='
</trackList>
</playlist>';
  • 4.Por último para guardar el el valor de $contenido, lo hacemos con las siguientes funciones de archivo.
$file3=$dir."/archivo.xml";
$archivo=fopen($file,"w");
fwrite($archivo,utf8_encode($contenido));
fclose($archivo);

Para ver con más detalle el código aquí y el xml generado aquí