miércoles, 5 de mayo de 2010

Un buscador para nuestra base de datos

Vamos a ver una aplicación, un ejemplo, de todo lo visto hasta ahora. Escribiremos un script que sirva para buscar una determinada cadena (que recibiremos de un formulario, y la almacenamos en la variable $buscar), dentro de nuestra base de datos, concretamente dentro del campo "nombre".

En primer lugar escribiremos el texto HTML de la página web que nos servirá como formulario de entrada, la llamaremos formulario.htm.

Formulario entrada


Palabra clave:





El siguiente script de busqueda lo llamaremos buscador.php3, y será el encargado de hacer la búsqueda en la BD, y devolver por pantalla los registros encontrados.

Script búsqueda


\n";
exit;
}
$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT * FROM agenda WHERE nombre LIKE '%$buscar%' ORDER BY nombre", $link);
if ($row = mysql_fetch_array($result)){
echo " \n";
//Mostramos los nombres de las tablas
echo " \n";
while ($field = mysql_fetch_field($result)){
echo " \n";
}
echo " \n";
do {
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
echo " \n";
} while ($row = mysql_fetch_array($result));
echo "
$field->name
".$row["id"]."".$row["nombre"]."


\n";
} else {
echo "¡ No se ha encontrado ningún registro !";
}
?>


Lo primero que comprobamos es que el contenido de la variable $buscar que recibimos del la página web formulario.htm no es una cadena vacia, y esto lo hacemos con la función isset() que devuelve 'falso' si la variable que recibe está vacia. A la función le anteponemos el signo admiración (!) que es equivalente a un NOT, para convertirlo en 'verdadero' en caso de que la variable esté vacia, y en es caso terminamos la ejecución del script con exit.

Lo más importante de este script, es sin duda la sentencia SQL que le enviamos al servidor MySQL, y más concretamente la condición que le imponemos, WHERE nombre LIKE '%$buscar%'. Con la sentencia LIKE buscamos cualquier ocurrencia de la cadena contenida en $buscar, mientras que con los signos de porcentaje (%) indicamos el lugar de la coincidencia, por ejemplo, si hubiesemos puesto nombre LIKE '%$buscar', buscariamos cualquier ocurrencia al final del campo"nombre", mientras que si hubiesemos puesto nombre LIKE '$buscar%', buscariamos cualquier ocurrencia al principio del campo "nombre".

La última novedad que hemos incorporado, es la función mysql_fetch_field, con el que obtenemos información acerca de las caracteríticas de cada campo, como su nombre,tipo,longitud,nombre de la tabla que los contiene,etc.

Mostrar los datos de una consulta

Ahora que ya sabemos conectar con el servidor de BD, veremos como mostrar los datos por pantalla.

Consulta de la BD




$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
echo " \n";
echo " \n";
while ($row = mysql_fetch_row($result)){
echo "" \n";
}
echo "
NombreE-Mail
$row[0]$row[1]
\n";
?>



En este script hemos introducido dos novedades, la más obvia es la sentencia de control while(), que tiene un funcionamiento similar al de otros lenguajes, ejecuta una cosa mientras la condición sea verdadera. En esta ocasión while() evalua la función mysql_fetch_row(), que devuelve un array con el contenido del registro actual (que se almacena en $row) y avanza una posición en la lista de registros devueltos en la consulta SQL.

La función mysql_fetch_row() tiene un pequeño problema, es que el array que devuelve sólo admite referencias numéricas a los campos obtenidos de la consulta. El primer campo referenciado es el 0, el segundo el 1 y así sucesivamente. En el siguiente script solucionaremos este pequeño inconveniente.

Consulta modificada de BD




$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT nombre, email FROM agenda", $link);
if ($row = mysql_fetch_array($result)){
echo " \n";
echo " \n";
do {
echo " \n";
} while ($row = mysql_fetch_array($result));
echo "
NombreE-Mail
".$row["nombre"]."".$row["email"]."
\n";
} else {
echo "¡ No se ha encontrado ningún registro !";
}
?>



Esencialmente, este script hace lo mismo que el anterior. Almacenamos en $row el registro actual con la función mysql_fetch_array() que hace exactamente lo mismo que mysql_fetch_row(), con la exepción que podemos referenciar a los campos por su nombre ($row["email"]), en vez de por un número.

Con la sentencia if/else, asignamos a $row el primer registro de la consulta, y en caso de no haber ninguno (else) mostramos un mensaje ("No se ha encontrado..."). Mientras que con la sentencia do/while, nos aseguramos que se nos muestren todos los registros devueltos por la consulta en caso de haber más de uno.

Hay que destacar la utilización del punto (.), como operador para concatenar cadenas.

Conectar a MySQL desde PHP

Ya tenemos datos en nuestra BD, así que con el siguiente script nos conectaremos a la BD del servidor MySQL para obtener los datos de un registro.

Conexión al MySQL




$link = mysql_connect("localhost", "nobody");
mysql_select_db("mydb", $link);
$result = mysql_query("SELECT * FROM agenda", $link);
echo "Nombre: ".mysql_result($result, 0, "nombre")."
";
echo "Dirección: ".mysql_result($result, 0, "direccion")."
";
echo "Teléfono :".mysql_result($result, 0, "telefono")."
";
echo "E-Mail :".mysql_result($result, 0, "email")."
";
?>



En la primera línea del script nos encontramos con la función mysql_connect(), que abre una conexión con el servidor MySQL en el Host especificado (en este caso la misma máquina en la que está alojada el servidor MySQL,localhost). También debemos especificar un usuario (nobody, root, etc. ), y si fuera necesario un password para el usuario indicado (mysql_connect("localhost", "root", "clave_del_root")). El resultado de la conexión es almacenado en la variable $link.

Con mysql_select_db() PHP le dice al servidor que en la conexión $link nos queremos conectar a la base de datos mydb. Podríamos establecer distintas conexiones a la BD en diferentes servidores, pero nos conformaremos con una.

La siguiente función mysql_query(), es la que hace el trabajo duro, usando el identificador de la conexión ($link), envía una instrucción SQL al servidor MySQL para que éste la procese. El resultado de ésta operación es almacenado en la variable $result.

Finalmente, mysql_result() es usado para mostrar los valores de los campos devueltos por la consulta ($result). En este ejemplo mostramos los valores del registro 0, que es el primer registro, y mostramos el valor de los campos especificados.

Importar bases de datos desde MS Access

Un caso muy común, como en mi caso, al comenzar a utilizar MySQL, necesitaba migrar mis bases de datos desde Access a MySQL. La solución a este problema, nos la aporta un módulo creado por Pedro Freire de CYNERGI.

Los pasos que debemos seguir para instalar este módulo, y su posterior uso son:

  1. Abre el archivo de Access .mdb que deseas exportar.
  2. En la ventana de objetos de la BD selecciona "Módulos", y después en "Nuevo".
  3. Entonces se te abrirá una ventana nueva, borra todo texto (código) que haya escrito.
  4. Copia todo el texto del archivo de Pedro Freire y pégalo en el nuevo módulo.
  5. Cierra la ventana de código del módulo, selecciona que "Sí" desea guardar los cambios y nombra el módulo (p.e. "MexportSQL"). El módulo es ahora parte de tu base de datos Access
  6. Vuelve a abrir el módulo, o pincha con el ratón en "Diseño" con nuestro nuevo módulo seleccionado. Mueve el cursor hasta donde aparezca la primera palabra "Function", y presiona F5 o selecciona "Ejecutar" en el menú.

La ejecución del módulo nos creará dos archivos (esql_add.txt y esql_del.txt) en el directorio C:/temp (el que trae por defecto, pero lo podemos cambiar). A nosotros el archivo que nos interesa es esql_add.txt, el cuál como mejor nos parezca deberemos llevarnoslo a nuestra máquina Linux.

Ahora solo tenemos que seguir los paso que explicamos en el capítulo anterior:

  1. Creamos la base de datos: mysqladmin create mybd
  2. Volamos los datos y la nueva base de datos: cat esql_add.txt | mysql mybd

Comenzando con MySQL

Antes de seguir con PHP, vamos a preparar la base de datos(BD) que vamos a utilizar como ejemplo. Como servidor de BD, usaremos MySQL un pequeño y compacto servidor de BD, ideal para pequeñas y medianas aplicaciones. MySQL soporta el estándar SQL (ANSI), y además está disponible para distintas plataformas, incluido las "windows".

Una vez instalado MySQL (dejemos esta explicación para más tarde), vamos a crear nuestra BD ejemplo. MySQL utiliza una tabla de permisos de usuarios, por defecto, en la instalación crea el usuario root sin password. Debes crear distintos usuarios con distintos permisos. Entre ellos, el usuario administrador de MySQL, con todos los permisos, y como recomendación de seguridad, el usuario nobody sólo con el permiso de ver (SELECT), que es el que utilizaremos para conectarnos al servidor de BD en nuestros script.

Para crear nuestra BD, debemos ser el administrador de MySQL o el root,para ello haremos lo siguiente:

mysqladmin create mybd

Ya hemos creado una BD, ahora le añadiremos una tabla y algunos registros, para lo cual copia el siguiente texto y sálvalo en un archivo, que podríamos llamar mybd.dump.

Crear tabla mybd
CREATE TABLE agenda (id INT NOT NULL AUTO_INCREMENT, nombre CHAR(50),
direccion CHAR(50), telefono CHAR(15), email CHAR(30), KEY (id) )\g

INSERT INTO agenda VALUES (0, 'Juan Pérez', 'C/ Laguna, 15. Sevilla',
'95.455.55.55', 'juan@agenda.com' )\g

INSERT INTO agenda VALUES (1, 'Luis García', 'C/ Betis, 22. Cádiz',
'95.655.66.33', 'luis@agenda.com' )\g

INSERT INTO agenda VALUES (2, 'Carlos Rodríguez', 'C/ Sevilla, 6. Huelva',
'95.113.22.77', 'carlos@agenda.com' )\g

Debemos tener en cuenta que los comandos de arriba debe escribirse cada uno en una sola línea. Se han separado para aumentar la legibilidad del código.

Ahora desde la línea de comandos ejecuta:

cat mybd.dump | mysql mybd

Cabe destacar el campo id, que no puede estar vacio, y además es autoincrementable, lo cuál deberemos tener en cuenta a la hora de actualizar y añadir registros. Si no hemos cometido ningún error, ya tenemos nuestra base de datos de ejemplo en el servidor MySQL.

Mi primer script

Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para usarlos, podemos comenzar a escribir nuestro primer Script en PHP.

Ejemplo script php



$myvar = "Hola Mundo. Este es mi primer script en PHP";
//Esto es un comentario
echo $myvar;
?>

Una vez escrito esto lo salvamos en un fichero con la extension php3, y lo colocamos en nuestro servidor, http://mi_servidor/php/test.php3. Ahora si ponemos esta URL en nuestro navegador veremos una linea con el texto "Hola Mundo. Este es mi primer script en PHP".

Lo primero que apreciamos en el script son sus delimitadores. En la primera línea del script vemos que nos indica que comienza un script en PHP, y en la última colocamos ?> para indicar el final del script. Hay que destacar que todas las líneas que se encuentre entre estos delimitadores deben acabar en punto y coma, excepto las sentencias de control (if, swich, while, etc.).

Como en toda programación, es importante poner muchos comentarios, para lo cual si queremos comentar una sola línea tenemos que poner al principio de la línea //, si lo que queremos es comentar varias utilizaremos los delimitadores /* - */.

Para que el servidor envie texto utilizaremos la instrucción echo, aunque también podemos utilizar printf de uso similar al del C oPerl.

Finalmente, vemos que la palabra myvar comienza con el signo dólar ($) . Este símbolo le indica a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable, pero también pueden contener números o arrays. Es importante recordar que todas las variables comienza con el signo dólar.

Crear Thumbnails de imágenes con PHP

Para los que no estan familiarizados con el termino esto se refiere a previsualizaciones de menor tamaño de una imagen original lo cual se utiliza mucho para galerias, mostrando una copia de la imagen original pero de menor tamaño tanto en pixeles co


Para el ejemplo utilizare una como formato de imagen

el GIF, primero presentare el código y luego la explicación línea

por línea al igual que como hacerlo con diferentes formatos de imagen.




Supongo que el nombre del archivo es imagen.php



<?php 

//Una Creacion De Jorge Luis Martinez M

//http://misCodigos.jlmnetwork.com/

/*Este Archivo Recibe Los Parametros $ruta, Que Es La Ruta Interna De La Imagen En El Servidor, Y Los Parametros $ancho y $alto Que Se Refiere Al Alto Y Ancho De La Previsualizacion.*/

$fuente = @imagecreatefromgif($ruta);
$imgAncho = imagesx ($fuente);
$imgAlto =imagesy($fuente);
$imagen = ImageCreate($ancho,$alto);

ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);

Header("Content-type: image/gif");
imageGif($imagen);

?>


Nota: La explicación la hago suponiendo

un conocimiento básico de php por parte del lector.


Lo primero


es recordar que este archivo recibe los parámetros $ruta

que es la ruta interna de la imagen en el servidor, entonces si el fichero

imagen.php se encuentra en:



http://www.servidor.com/cuenta/imagen.php



Y la imagen, en este caso supondremos el nombre “01.gif”,


se encuentra en:



http://www.servidor.com/cuenta/galeria/01.gif


A imagen.php sólo le pasaremos galeria/01.gif

como valor de ruta:



http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif



Pero esto no es todo, recordemos que recibe otros dos parámetros, los

cuales son alto y ancho,

estos no se refieren al alto y ancho de la imagen original, se refieren al alto

y ancho que queremos la previsualización (Thumbnail), entonces si queremos


que nos devuelva la imagen 01.gif, ubicada

en el directorio galeria y cuyo tamaño original

es de 400 píxeles de anchura y 300 píxeles de altura pero queremos

la previsualización de 200 píxeles de anchura y 150 píxeles


de altura tendriamos que llamarla de esta manera:


http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif&ancho=200&alto=150


Nota:

Obviamente si lo llamamos para presentarlo

como imagen dentro de un archivo al usuario(.html, .php, etc), lo llamamos mediante


el tag IMG:



<IMG SRC="http://www.servidor.com/cuenta/imagen.php?ruta=galeria/01.gif&ancho=200&alto=150">


Ahora que

ya sabemos como llamar a la imagen, vamos a ver como se hace la previsualización

(Thumbnail), como es que se crea desde una imagen más grande una imagen


más pequeña tanto en píxeles como en tamaño para su presentación

al usuario.



Primero creamos una copia de la imagen desde archivo, la igualamos a $fuente,

ya que allí quedará un identificador de tipo ENTERO

(INT) para dirigirnos a la imagen creada, esto es necesario ya que será

de esta imagen que haremos la previsualización (Thumbnail).




$fuente = @imagecreatefromgif($ruta);


Nota: Recuerde

que el @imagecreatefromgif() es para imagenes gif,

si quiere crear jpeg o png solamente cambie el gif:




@imagecreatefromjpeg($ruta) ó @imagecreatefrompng($ruta)



Ahora obtendremos la anchura y altura de la imagen original, esto es necesario

para poder hacer la copia de la imagen, para ello utilizamos las funciones

imageSX y imageSY,


que reciben como parametro un identificador de imagen (en este caso $fuente,

que es el identificador de la imagen original) y devuelven la anchura y altura

de la imagen respectivamente.



$imgAncho = imagesx ($fuente); 

$imgAlto =imagesy($fuente);


Ahora

creamos una imagen nueva en blanco con la anchura y altura que queremos para


la previsualización (Thumbnail) y que será la que se le devuelva al usuario

cuando se le llame, ya sea directamente en el browser o por medio de la etiqueta

IMG de html.



$imagen = ImageCreate($ancho,$alto);


Ahora

lo más importante, copiaremos la imagen original a la imagen nueva, lo


cual hará que al tener un menor tamaño (la imagen nueva), la copia de

que hacemos de la original se ajustara al tamaño de esta.



Utilizamos la funcion ImageCopyResized() la cual

sirve para copiar “partes” de una imagen a otra por medio de coordenadas, pero

en nuestro caso no necesitamos un pedazo, necesitamos copiar toda la imagen


en todo el espacio de la nueva imagen, por ello damos las coordenadas totales

de las imágenes.



Esto puede sonar un poco confuso, por eso es mejor que mires la documentacion

oficial en http://www.php.net/ para información sobre los parametros que recibe esta función.




ImageCopyResized($imagen,$fuente,0,0,0,0,$ancho,$alto,$imgAncho,$imgAlto);


Listo,

ya tenemos nuestra imagen, ahora debemos indicarle al navegador que vamos a

devolver una imagen de tipo gif, para ello enviamos la cabecera diciendo el

tipo de contenido que enviaremos al navegador.



Header("Content-type: image/gif");



Nota: Recuerde, si el formato es jpeg o png solamente cambie el gif:


image/jpeg ó image/png


Ahora

devolvemos la imagen directamente al browser(navegador) del usuario.



imageGif($imagen);



Nota: Recuerde, si el formato es jpeg o

png solamente cambie el gif: imageJpeg($imagen)

o imagePng($imagen)



Bien espero haya quedado claro,


pero vamos a ver otro aspecto, que tal si no queriamos devolver la imagen,

lo que queriamos era guardar la nueva imagen (Thumbnail) en el servidor, para

su uso posterior?…


Al ponerle

un segundo parametro al imageGif($imagen,”imagenPequena.gif”),


Lo lograremos, en este caso guardaria la imagen que acabamos de crear en el

servidor, especificamente en la misma carpeta con el nombre de “imagenPequena.gif”.


Esto puede

ser muy util, ya que si queremos crear thumbnails de todas las imagenes en

un directorio, podemos hacer un loop que lea los archivos del directorio,

y repita el proceso anterior(de crear imagen en blanco y copiar) y guarde


las nuevas imagenes para su uso posterior, realmente es una herramienta con

muchos usos.


Nota: Cabe recordar que su servidor tiene

que tener soporte para manipular imágenes, según el tipo que desee

utilizar, en caso de no tenerlo el servidor le dará un mensaje de error

como “Jpeg is no support…” dependiendo


del formato de imagen.


Suerte y hasta el próximo tutorial!

Registro y reconocimiento de usuarios con PHP

En esta oportunidad crearemos un sistema de registro de usuarios utilizando a PHP.


¿En que consiste? y ¿para que sirve? muy sencillo, en algunas webs como

por ejemplo esta, queremos interactuar con los usuarios, deseamos que estos

puedan enviar scripts al sistema para ayudar a crecer la coleccion de scripts


que disponemos, pero deseamos llevar un control sobre los autores de los scripts

asi que no cualquiera puede enviar scripts, para hacerlo tienes que registrarte

y hacer el respectivo "ingreso" para que el sistema te reconosca

y te deje enviar scripts, archivos y articulos como este, de otra manera no

puedes hacer ninguna de estas acciones.



¿Pero como se logra esto?, se hace teniendo en una base de datos una tabla de usuarios(Podria

hacerse con archivos, aunque seria un poco inseguro) y por medio de archivos

PHP y manejo de sesiones(session) o por "cukis"(cookies).


En este articulo explicare como crear un sistema de registro y reconocimiento de usuarios teniendo

una tabla en una base de datos MySql y por medio de "cukis"(COOKIES)


para nuestra web de una manera sencilla.


A la hora de crear un sistema de registro de usuarios siempre pensamos en lo mismo:


registro + login

+ reconocimiento


Queremos que los usuarios se registren dejando sus datos y puedan acceder a algunas zonas

de la pagina y sea reconocido por nuestra pagina(por ejemplo "bienvenido

jlmm" o "bienvenido visitante" en caso de no estar ingresado


(o registrado) en el sistema).


Muchos piensan en crear un sistema de usuarios por que les parece "bonito", pero hay

pocos que realmente lo necesitan(lo digo por experiencia con dichas personas),

y cuando les haces las dos preguntas:


1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?


2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?



La mayoria no es capaz de responder la primera pregunta, y es que antes de aventurarnos a crear

un sistema de usuarios para nuestra web debemos de pensar si realmente vale

la pena, ya que las tematicas de la web y sus contenidos no siempre son adecuados

para tener un sistema de registro de usuarios.


Para ello respondemos las 2 preguntas, en el caso de misCODIGOS.com serian:


1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?


R://Posibilidad de enviar scripts, articulos y archivos al sistema, al igual


que disponibilidad de un panel de control entre otros.


2- ¿que zonas de tu web quieres que sean de acceso restringido y PORQUE?


R://Quiero que solo los usuarios que esten registrados puedan enviar scripts/articulos/archivos,

ya que asi puedo llevar un mejor cotrol sobre los mismos y prevenir el envio

indiscriminado de scripts/articulos/archivos al sistema por parte de los usuarios.


Ya tenemos nuestras razones para crear nuestro sistema de registro de usuarios, claro que pueden

haber muchas razones dependiendo del tipo de web, podrian ser por ejemplo para


que solo usuarios registrados puedan bajar software/musica/videos/etc, para

restringir el acceso a ciertas zonas de la web "obligando" al usuario

a registrarse para poder "ver" dicha zona, etc…


Siempre teniendo en cuenta que las razones sean validas y que no molesten al usuario,


ya que en mi caso hace algunos meses me encontre con una web de "scripts"

la cual para poder ver los "scripts" tenias que registrarte, obviamente

lo que hice fue salir de esa web y olvidarla (por ello no les puedo dar la direccion),

tenemos que tener muy en cuenta que zonas restringir a usuarios registrados

ya que el usuario en general prefiere la comodidad y en este caso que les comento


de webs con recursos y scripts para webmasters hay muchas (pero ninguna como

esta :-P ) y hay que buscar siempre la comodidad de los usuarios.


Ahora a lo que vinimos, crearemos nuestro sistema de registro de usuario, lo primero que debemos pensar

es que datos debera introducir el usuario para registrarse, como siempre deberan

de haber aunque sea dos campos basicos:




  • nick

  • password


Lo mas común para identificar a los usuarios es por medio de nick/password,

aunque también podria ser email/password, para este articulo utilizare

el primero(nick/password).


Ya sabemos que nuestra tabla de "usuarios" tendra esos dos campos:




CREATE TABLE usuarios (
id bigint(7) NOT NULL auto_increment,
nick char(100) NOT NULL,
password char(100) NOT NULL,
KEY id (id))


¿Pero

son suficientes?, tambien seria bueno tener el email de los usuarios en caso

de querer enviar informacion a los usuarios registrados y tener el nombre de

dichos usuarios para personalizar dichos emails o mensajes que le demos al usuario

en la pagina(ejemplo "hola jorge luis"), entonces nuestra tabla creceria


un poco:



CREATE TABLE usuarios (
id bigint(7) NOT NULL auto_increment,
nick char(100) NOT NULL,
password char(100) NOT NULL,
nombre char(255) default NULL,
email char(100) default NULL,
KEY id (id))


Listo, ya tenemos la estructura de nuestra tabla de usuarios, es pequeña y sencilla

pero para efectos prácticos y de aprendizaje es perfecta (eso depende

de ti, según lo que desees saber de tus usuarios).


Ahora viene lo sencillo,


crear el sistema de registro de usuarios, un formulario y una aplicacion que

agregue al nuevo usuario a la base de datos, para ello crearemos un formulario

del tipo:



FORM ACTION="registrar.php" METHOD="post">
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>

<BR>
Email: <INPUT TYPE="text" NAME="email" SIZE=28 MAXLENGTH=100>
<BR>
Password: <INPUT TYPE="password" NAME="password"

SIZE=28 MAXLENGTH=20>
<BR>
Nombre: <INPUT TYPE="text" NAME="nombre" SIZE=28
MAXLENGTH=255>
<BR>

<INPUT TYPE="submit" CLASS="boton" VALUE="Registrar">
</FORM>


Y ahora necesitamos una aplicacion que lo procese (registrar.php), por motivos

practicos haremos algo sencillo sin demasiadas comprobaciones (dependera de


ti mejorarlo si quieres algo mas personalizado), primero el codigo luego la

explicacion:



<?php
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["email"]) != "")
{
$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"])."'";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
{
echo "Error, nick escogido por otro usuario";
}
else
{
$sql = "INSERT INTO usuarios (nick,password,nombre,email) VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "Registro exitoso!";
}
mysql_free_result($result);
}
else
{
echo "Debe llenar como minimo los campos de email y password";
}
mysql_close();
?>



Al principio no he echo conexion con la base de datos pero he puesto el comentario "//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.", ya que la conexion depende de ti, si no sabes como hacer una conexion te aconsejo

buscarte un manual antes de estar queriendo hacer un sistema como este.


Vemos que he declarado una funcion, llamada quitar($mensaje), la cual recibe el parametro "mensaje",

esta funcion se encargara de deshabilitar el codigo html("<" y


">") al reemplazarlos por su respectivo codigo("<"

y ">"), ademas de reemplazar el apostrofe(‘) y las comillas dobles(")

por sus respectivos codigos HTML, esto para no tener conflictos con la instruccion

sql, y al final retorna la cadena con las nuevas modificaciones en caso de haberlas:



function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}



Ahora

comprobaremos que los campos de nick y password que seran los "requeridos"

como minimo para completar el registro no esten vacios, para ello utilizamos

la funcion "trim()" la cual quita los espacios al comienzo y al final

de la cadena, por lo que en caso de ser una cadena vacia o con solo espacios


en blanco retornara "", en caso de ser valido continuamos con el registro,

de lo contrario retornamos un mensaje de error:



if(trim($HTTP_POST_VARS["nick"]) != ""
&& trim($HTTP_POST_VARS["password"]) != "")



Ahora suponiendo que las cadenas estaban correctas comprobaremos que el nick seleccionado

por el usuario no exista en la base de datos, para ello hacemos una instruccion

sql para pedirle a la base de datos que nos retorne la fila donde el nick sea

igual al nick introducido con el usuario(quitandole el apostrofe, html y demas

con la funcion quitar()):



$sql = "SELECT id FROM usuarios WHERE nick='".quitar($HTTP_POST_VARS["nick"]."'";
$result = mysql_query($sql);



En caso de existir dicho nick, osea que nos devuelve una fila:



if($row = mysql_fetch_array($result))


Mostraremos un mensaje de error al usuario informandole del "incidente", de lo

contrario continuaremos con el proceso de registro.


Ahora

lo que hacemos es simplemente una instruccion sql donde insertamos en la tabla


usuarios el nick, password, nombre y email introducidos por el usuario en el

formulario, a todos estos les quitamos el html, apostrofe y demas haciendo uso

de nuestra instruccion "quitar()", y mostramos un mensaje de "exito" al usuario:



$sql = "INSERT INTO usuarios (nick,password,nombre,email)
VALUES (";
$sql .= "'".quitar($HTTP_POST_VARS["nick"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["password"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["nombre"])."'";
$sql .= ",'".quitar($HTTP_POST_VARS["email"])."'";
$sql .= ")";
mysql_query($sql);
echo "Registro exitoso!";



Nota:Por efectos practicos hemos echo esto muy sencillo, podrian agregar más

comprobaciones como la del email o manejo de errores mysql.


Tambien podria hacerse más seguro mediante el uso de la funcion de encriptacion

md5() para el password, aunque se esta haciendo lo mas sencillo posible ya que

la finalidad de este articulo es la de enseñar como reconocer a los usuarios,

de ustedes dependen estos "detalles" a la hora de "depurar" este codigo.



Bien, listo ya tenemos la aplicacion de registro, ¿pero y ahora que?, que hago

con todos esos usuarios, ahora necesitamos que los usuarios ingresen y sean

"reconocidos" y como lo dije lo haremos por medio de cookies.


Crearemos un formulario HTML para que los usuarios introduscan su nick y password al igual que deberemos

de realizar una aplicacion ingresar.php que sera la encargada de procesar si

el usuario es valido y darle "ingreso" al sistema por medio de una


cookie.


Es recomendable tener este archivo en la carpeta raiz de nuestra web, el formulario html seria algo

asi:



<FORM ACTION="ingresar.php" METHOD="post">
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
<BR>
Password: <INPUT TYPE="password" NAME="password"
SIZE=28 MAXLENGTH=20>
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar">
</FORM>



Y

ahora el codigo de nuestra aplicacion ingresar.php, luego la explicacion:





<?php

//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.

function quitar($mensaje)
{
$mensaje = str_replace("<","<",$mensaje);
$mensaje = str_replace(">",">",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',""",$mensaje);
$mensaje = str_replace("\\\\","\",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$nickN = quitar($HTTP_POST_VARS["nick"]);
$passN = quitar($HTTP_POST_VARS["password"]);

$result = mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'");
if($row = mysql_fetch_array($result))
{
if($row["password"] == $passN)
{
//90 dias dura la cookie
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
?>
Ingreso exitoso, ahora sera dirigido a la pagina principal.

<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
<?
}
else
{
echo "Password incorrecto";
}
}
else
{
echo "Usuario no existente en la base de datos";
}
mysql_free_result($result);
}
else
{
echo "Debe especificar un nick y password";
}
mysql_close();
?>


Bien, arriba ya explique que debes de realizar la conexion y explique el funcionamiento

de la funcion quitar($mensaje), asi que saltemos hasta el primer "if".


Lo primero que hacemos es comprobar que los campos de "nick" y "password" para


que no esten vacios, ya sabemos para que sirve trim() asi que no lo repetire:



if(trim($HTTP_POST_VARS["nick"]) != ""
&& trim($HTTP_POST_VARS["password"]) != "")


Asi que continuamos suponiendo que todo este bien, ahora lo que hacemos es quitarle

el html, apostrofe comillas y demas al nick y password enviados por el usuario

para su comprobacion con la base de datos, para ello utilizamos la funcion quitar($mensaje)


que explicamos antes, y guardamos las nuevas cadenas en dos nuevas variables:



nickN = quitar($HTTP_POST_VARS["nick"]);
$passN = quitar($HTTP_POST_VARS["password"]);


Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de datos que

de la tabla usuarios nos devuelva la fila cuyo nick corresponda por el enviado

por el usuario:



$result = mysql_query("SELECT password FROM usuarios
WHERE nick='$nickN'");



Si devuelve una columna quiere decir que el nick SI existe en la base de datos,

de lo contrario devolvemos un mensaje de error:



if($row = mysql_fetch_array($result))
{
...
}
else
{
echo "Usuario no existente en la base de datos";
}


Ahora continuamos con el proceso suponiendo que el usuario exista en la base de datos

ahora debemos comprobar que el password sea correcto, para ello hacemos una

simple comparacion, si es correcto continuamos de lo contrario mostramos el


mensaje de password incorrecto:



if($row["password"] == $passN)
{
...
}
else
{
echo "Password incorrecto";
}


Ahora suponiendo que el password es correcto continuamos y lo proximo a hacer es establecer

las cookies de nick y password (Las cuales nombramos "usNick"/"usPass" y contienen el nick y password respectivamente) en la maquina del usuario, informamos


que se ha realizado correctamente el login y lo enviamos a la pagina principal,

una vez mas recalco que estamos haciendo esto lo mas sencillo posible, de ti

depende personalizar y mejorar los mensajes :



setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
?>
<SCRIPT LANGUAGE="javascript">
alert("Ingreso exitoso");
location.href = "index.php";
</SCRIPT>
<?


Listo, el usuario ya tiene las cookies en su sistema, ¿pero ahora que?, como


hacemos para comprobar en las paginas que queramos si el login es correcto,

osea que el usuario posee las cookies y son validas?.


Para ello crearemos un ultimo archivo, lo llamaremos login.php, este se encargara de leer las cookies

y decirnos si el usuario es un usuario registrado y que ha echo el respectivo "ingreso" al sistema, el contenido de dicho archivo seria el siguiente:



<?php
$loginCorrecto = false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;

if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{
$result = mysql_query("SELECT * FROM usuarios WHERE nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
?>



Lo primero que hacemos es declarar unas variables que utilizaremos para guardar

los datos del usuario en caso de tener las cookies en su sistema y de estas

ser correctas:



$loginCorrecto = false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;


Hay una variable boleana que tenemos que mirar de cerca y es la de $loginCorrecto

ya que esta sera la que utilizaremos para comprobar el login en nuestros archivos,


mas adelante veremos como.


Seguidamente lo que hacemos es comprobar que las cookies existan, si no existen pues no hay problema

simplemente no hay "ingreso" :



if(isset($HTTP_COOKIE_VARS["usNick"]) &&
isset($HTTP_COOKIE_VARS["usPass"]))



Ahora lo que hacemos es una sentencia sql, en la cual le pedimos a la base de datos

que nos devuelva la fila donde el nick y password correspondan al nick y password

guardado en las cookies:



$result = mysql_query("SELECT * FROM usuarios WHERE
nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'");


Si ese nick y password corresponden a una fila en la base de datos esto quiere

decir que son correctos de lo contrario la informacion de las cookies esta mal


y debemos destruirlas:



if($row = mysql_fetch_array($result))
{
...
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}


Si la informacion es correcta procedemos con el ingreso, establecemos de nuevo

las cookies con lo que se actualiza el tiempo de destruccion a otros noventa

dias apartir de ahora:



setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);



Seguido de esto establecemos la variable $loginCorrecto a "true", y las otras

variables las llenamos con la informacion del usuario:



$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];


Listo ya tenemos nuestro archivo "login.php", ahora ¿como lo utilizamos?,

bien supongamos que queremos en nuestro "index.php" darle la bienvenida


al usuario en caso de estar ingresado en el sistema deseamos saludarlo por su

nick o nombre en caso contrario lo saludaremos como visitante, para ello tendriamos

que incluir el archivo "login.php" al comienzo de nuestro archivo

"index.php" asi:



Nota:Antes de incluir el "login.php" debe recordar realizar la conexion con la base de datos,

de lo contrario obtendra errores.



<?php
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.
include("login.php");
...


Con eso el "login.php" se encargara de realizar las acciones que vimos


arriba, ahora en nuestro "index.php" donde queramos saludar al visitante

ponemos lo siguiente:



... if($loginCorrecto)
{
echo "Estas identificado en el sistema como ".$nickUsuarioL;
}
else
{
echo "Bienvenido visitante, el sistema no te ha reconocido";
}
...


Como ven, hicimos uso de la variable $loginCorrecto la cual sera "true"


en caso de que el usuario fuera reconocido por el sistema, de lo contrario sera

"false".


Y asi podemos usarlo en muchas areas, supongamos que tenemos una seccion donde solo pueden accesar

los usuarios registrados, la llamaremos "restringida.php", entonces lo que hariamos para prevenir que usuarios no registrados vean el contenido seria algo asi:



<?php
//AQUI CONEXION O include() DE ARCHIVO DE CONEXION CON BASE DE DATOS.

include("login.php");

if($loginCorrecto)
{
echo "Aqui el contenido solo para usuarios registrados";
}
else
{
echo "El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area";
}
?>



Eso es todo, espero haya quedado claro. PD: Sobre el proceso de "logout"

o "salir" no lo explico ya que es algo muy sencillo, simplemente se

"borran" las cookies.

Crear de un sistema de comentarios en PHP

Enseñaré como crear un sistema de comentarios, técnica que normalmente se utiliza para que los usuarios comenten sobre noticias de tu web, pero tambien se puede usar para otros casos.


Para

el correcto aprendizaje supondremos una “situación”, supongamos que tienes


un sistema de noticias, en el cual los usuarios pueden ver las noticias de la

forma noticia.php?id=1, entonces queremos que los usuarios dejen sus

comentarios sobre cada noticia.


Nota: La explicación la hago suponiendo un conocimiento básico de

PHP y interacción con bases de datos (en este caso MySql) por parte del


lector.


Lo primero que tenemos que pensar es ¿que datos del usuario necesitamos?, bien,

supongamos que queremos que el usuario deje su comentario junto con un nick

(nombre, sobrenombre, alias), para ello crearíamos una tabla llamada comentarios con los campos:


id


- Tipo Entero


nick – Tipo Caracter


comentario – Tipo Caracter


La

instrucción para su creación seria:




CREATE TABLE comentarios (
id bigint(7) default NULL,
nick char(20) default NULL,
comentario char(250) default NULL,
KEY id (id) )


Bien,

pero aquí viene el problema que se le presenta a muchas personas y es

¿como reconocer que comentarios corresponden a una noticia determinada?, aunque

para algunos parezca sencillo les digo (por experiencia con esas personas) que


puede ser un dilema para muchos que no lo “ven”.


Muchos

piensan que se hace desde la noticia, reconociendo los comentarios, pero es

al contrario, son los comentarios quienes tienen que saber a que noticia pertenecen,

para ello necesitamos otro campo en nuestra tabla de comentarios:




CREATE TABLE comentarios (
id bigint(7) default NULL,
id_noticia bigint(7) default NULL,
nick char(20) default NULL,
comentario char(250) default NULL,
KEY id (id) )


El

campo de tipo entero id_noticia, el cual

contendrá el id de la noticia a que


corresponde.


Nota:

Recordemos que en este caso suponemos que las noticias se llaman de la forma

noticia.php?id=234, donde el id corresponde

al id de la noticia en la base de datos.


Ahora debemos mostrar los comentarios, y tener un formulario de envío


de comentarios en mi noticia.php y una aplicación

que lo procese.


Nota:

Solo voy a poner el código que muestra los comentarios y el formulario

de envío, ya que de eso es que trata este tutorial y se supone que ya


tienes tu sistema de noticias (o en lo que sea que lo vayas a implementar).


Este

es el código que muestra los comentarios de la noticia actual (después

el código para enviar los comentarios), recordemos que obtenemos el id de la noticia que lo hemos pasado por


medio de noticia.php?id=123, primero el

código, luego la explicación del código:



<CENTER>
<TABLE CELLSPACING=1 CELLPADDING=1 WIDTH=300 BORDER=0 STYLE="border:1px solid black">
<TR>
<TD BGCOLOR="#FAFAFA">
<CENTER>

<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;font-weight:bold"> .Comentarios De Los Usuarios.
</SPAN>
</CENTER>
</TD>
</TR>

<TR>
<TD HEIGHT=1 BGCOLOR=black>
</TD>
</TR>

<TR>
<TD BGCOLOR="#FEFEFE">
<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;">

<?
$resultComen = mysql_query("SELECT * FROM comentarios WHERE id_noticia='$id' ORDER BY id ASC");
while($rowComen = mysql_fetch_array($resultComen))
{
?> ;
< FONT COLOR=RED>
< B><? echo $rowComen["nick"]; ?></B>

< /FONT>
:
< ? echo $rowComen["comentario"]; ?>
< BR>
< ?
}
mysql_free_result($resultComen);
?>

</SPAN>
</TD>
</TR>
</TABLE>
</CENTER>


Aquí lo importante es la lectura de nuestros comentarios, lo que debemos hacer primero


que todo es obtener los comentarios, pero solo queremos aquellos que correspondan

a la noticia actual, para ello pedimos aquellos cuyo campo id_noticia

corresponda con el id de la noticia actual

(noticia.php?id=456):




$resultComen = mysql_query("SELECT * FROM comentarios
WHERE id_noticia='$id' ORDER BY id ASC");


Y

el resto es sencillo, simplemente imprimir en pantalla cada comentario, con

su respectivo nick:



while($rowComen = mysql_fetch_array($resultComen))
{
?>
<FONT COLOR=RED>
<B><? echo $rowComen["nick"]; ?></B>

</FONT>
:
<? echo $rowComen["comentario"]; ?>
<BR>
<?
}


Ahora

necesitamos una aplicación que envié los comentarios a la tabla

y un formulario de envío, el cual en este caso estará ubicado


en la pagina de la noticia (noticia.php), y pasara por medio de un campo oculto

el id de la noticia a la aplicación

que se encargara de enviar el comentario.


Primero

el código del formulario, utilizaremos un campo de tipo HIDDEN para pasar el id de la noticia a la aplicación que procesa el formulario


(despues el código de dicha aplicación, llamaremos a nuestra aplicación

nuevoComentario.php), este código debemos

ponerlo en noticia.php:



<CENTER>

<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;font-weight:bold">
.Enviar Comentario.
</SPAN>
</CENTER>
<p>
<FORM NAME="miFormu" ACTION="nuevoComentario.php"
METHOD="post">
<INPUT TYPE="hidden" NAME="id" VALUE="<?
echo $id; ?>">
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20>
<BR>
Comentario: <INPUT TYPE="text" NAME="comentario"
SIZE=28 MAXLENGTH=250>
<BR>
<INPUT TYPE="submit" CLASS="boton" VALUE="Enviar
Comentario">
</FORM>


Aquí cabe destacar el campo:



<INPUT TYPE="hidden" NAME="id"
VALUE="<? echo $id; ?>">


El

cual recibe como valor el id de la noticia, ahora necesitamos la aplicación nuevoComentario.php que recibe el id

que corresponde al id de la noticia y el nick


y comentario correspondientes, solo pondré

el código de la parte que lee los datos y introduce el comentario en

la base de datos, de ti depende la conexión con la base de datos, dicho

código es el siguiente:




if(isset($HTTP_POST_VARS["id"]) && isset($HTTP_POST_VARS["nick"]) && isset($HTTP_POST_VARS["comentario"])) {
if($HTTP_POST_VARS["comentario"] != "")
{
if($HTTP_POST_VARS["nick"] == "")
{
$nickNuevo = "anonimo";
}
else
{
$nickNuevo = $HTTP_POST_VARS["nick"];
}
$resultCom2 = mysql_query("SELECT id FROM comentarios ORDER BY id DESC LIMIT 0,1");
$rowCom2 = mysql_fetch_array($resultCom2);
$con = $rowCom2["id"];
mysql_free_result($resultCom2);

$con++;
$idNoticia = $HTTP_POST_VARS["id"];
$comentarioNoticia = $HTTP_POST_VARS["comentario"];

mysql_query("INSERT INTO comentarios VALUES
('$con','$idNoticia','$nickNuevo','$comentarioNo ticia')");

echo "Comentario Enviado Con Exito.<BR>Espere Unos Segundos...<SCRIPT LANGUAGE="javascript">window.location.href = "".getenv('HTTP_REFERER')."";</SCRIPT>"; }
else
{
echo "Debe Introducir Un Comentario.";
}
}


Creo

que no hay mucho que decir sobre este script, como ya dije estoy suponiendo

un conocimiento básico de php y interacción con bases de datos


por parte del lector.


Suerte

y hasta el próximo tutorial!

martes, 29 de diciembre de 2009

Como cortar metraquilato [Modding]

Esto lo escribo despues de haber comprovado personalmente que con este truco cortar el metraquilato es mas fácil.
Quiza para aquellos que se compren el metraquilato ya hecho a medida, no les sirva para nada. Bien, si vuestro caso es como el mio, que tenía una plancha enterita para cortar, probad con esto :
Primero : Ordenad vuestro sitio de trabajo o donde vayaís a cortar el metraquilato. Tiene que ser un sitio que podais limpiar bien despues.
Segundo: Aunque supongo que hay otros metodos para cortarlo, yo he usado una sierra de calar con sierra para madera, ya que va mejor que la de hierro. Y aqui es donde empiezan los problemas :(
Cuando empezeís a cortar, os dareís cuenta que hay que ir muy despacio porque sino el metraquilato se deshace y se pega al corte, con lo cual, tardamos mucho en cortarlo.
Pues bien, el truco esta en echar agua por encima de la superficie que vamos a cortar, esto nos permite cortar a toda leche y sin preocupaciones.
La verdad es que se lia la de cristo pero tragamos menos polvillo y se puede cortar de forma mucho mas deprisa y limpia.
Quizás es una tonteria, pero a mi personalmente me ha ido muy bien.

Como cambiar el frontal de la caja [Modding]

Buenas, que tal gente?

aca les mando otra guia de un mod que acabo de terminar en mi maquina (esta vez no es sacado de ninguna otra web), hay que tener un poco mas de paciencia que en el anterior (instalacion de una ventana personalizada) pero no es mucho mas complicado, simplemente un trabajo mas lento

bueno aca empezamos:


0-> Mi caja vista de frente antes de ser modificada


1-> Antes que nada tomamos las medidas de alto y ancho del frontal de la caja, tambien medimos cuanto sobresalen los drives de la chapa frontal (suelen ser unos 3 cm)


2-> Encargamos al carpintero de turno un par de placas de DM con las medidas de la caja (en mi caso compre 3 de 1 cm, ya que los drives sobresalian unos 3 cm y al comprar 3 por separado ahorramos bastante peso) una de las placas la pedi con un corte diagonal en los bordes para darle una mejor terminacion


3-> Hacemos uso de la sierra de calar y cortamos los agujeros por donde se van a ver los drives, una vez cortado lijamos un poco para emparejar los bordes



4-> Calamos las dos (o una) maderas restantes de forma que tengan solamente 2 cm de borde, la parte de adentro no la vamos a utilizar y de esta forma eliminamos peso, las pegamos con cola para pegar papel y la fijamos, si no tienen prensas pueden ponerle algo de peso encima para que queden bien unidas



5-> Una vez seco pegamos la otra tapa, ahora ya tenemos un forntal que tiene 3cm de espesor



6-> En mi caso queria ponerle un ventilador en la parte delantera, asi que marque un circulo del tamaño de las aspas del ventilador y lo recorte usando el taladro y una hojita de sierra



7-> Asi es como quedo despues de lijar un poco



8-> Comprobamos que en tubo para la entrada de aire entre bien y lo cortamos a 3cm



9-> Presentamos el frontal sobre la caja y marcamos el circulo para el ventilador



10-> ahora con nuestra herramienta favorita hacemos el corte para que lograr el maximo flujo de aire posible



11-> volvemos al frontal y decidimos donde vamos a poner nuestros botones (power y reset) y los led (power y hdd), una vez decidido hacemos todos los agujeros



12-> y pintamos del color que tengamos ganas, es recomendable dar varias manos, yo utilicé pintura en spray negro mate y le di unas 3 o 4 manos



13-> Quitamos el frontal viejo desconectando los cables de los botones (yo los corté). Ponemos los botones en el frontal nuevo y los unimos a los cables del frontal viejo que corresponden a los mismos botones. Por el momento no tenia leds de otros colores asique deje los leds que tenia mi frontal intactos, unidos al cable como estaban



14-> Bueno y asi es como queda el trabajo... no sera una Lian-li pero por lo menos es original. Como podran ver cambie el color del cable de la ventana, porque como el frontal queria que sea negro, ese cable en celeste no quedaba nada bien...



Bueno Saludos y espero que les guste, por ahora no tengo mas ganas de trabajar, pero en cualquier momento me agarra la locura y hago algo mas... quien sabe

Ventiladores sencillos y útiles [Refrigeracion]

Como ventiladores sencillos y útiles.

Lo primero el material que necesitamos es mínimo, únicamente un Taladro, brocas más o menos gruesas y una madera para que le taladro no estropee la mesa. Esta guía carece de los fastidiosos tornillos, que son tan dificiles de encontrar únicamente para ventiladores de caja.. ya verás porqué...

Esta guía es una sencilla solución para la ventilación de la caja sin necesidad de tener una dremel o algúna herramienta más cara de la cuenta.

Pasos:

1º Coloca la chapa de la caja sobre una tabla de madera, para no estropear la mesa. Debe estar ya marcada únicamente por donde vas a taladrar, es decir, los agujeros para el soporte del ventilador.

2º Comienza a agujerear las 4 esquinas. Es aconsejable que no uses brocas excesivamente grandes puesto que la sujeción puede ser peor.

3º Una vez ataladrada, coge un vaso no excesivamente grande, que tenga el un diámetro no superior al de los 8 o 12 CM dependiendo de el tamaño del ventilador, marca con un lapiz.

4º Agujerea como quieras y de la manera que quieras el ineterior de la circunferencia trazaba, dejando más o menos separación entre agujero y agujero. Los agujeros son mejor hechos con una broca grande, para que el caudal de aire que entre de afuera sea más abundante ya que si son más pequeños, aunque sea más, la entrada de aire producirá ruido.

Los agujeros siempre han de ser de afuera hacia dentro, es decir desde la parte exterior de la caja hacia el interior... más que nada es una cuestión de estética :P

5º con una lima, arranca las trozos de metal sobrantes de los agujeros, y posteriormente pasa una lija para eliminar trozos más pequeños. Ojo con lijar más de la cuenta, puedes rallar muchiiiisimo la chapa (lo se por experiencia xD).

Sujeción de los ventiladores:

Para esto tenemos dos opciones, pero necesitamos:
Tornillos que no sean más grandes que el agujero del ventilador para atornillar, puesto que utilizamos un tornillo y una tuerca, así la sujeción será también firme. Si podéis conseguir tornillos de cabeza plana mejor que mejor, pero si no, da igual, apenas se nota.
También encesitamos cachitos de bandeja de estas en las que viene la carne, el pollo y los cogollitos dulze ! xD, no muy grandes ni muy pequeños... ahora veremos por qué.

Introduce el tornillo en la chapa. Coge un cachito de bandeja y lo clavas en el tornillo, así hará de amortiguador, para que el ventilador tenga más de donde coger aire, tanto como dentro de la caja y fuera.
Una vez puesto esto, introduce el ventilador, por sus 4 esquinas tiene que estar atornillado... y posteriormente aplicalé la tuerca, así quedará sujeto con una amortiguación que evitará el roce con un posible trozo de metal mal extraido o ataladrado y así tendrá de donde coger aire el ventilador.

Es aconsejable que coloques los ventiladores en partes superiorres, como la parte alta de la caja entre la fuente y las unidades lectoras, o en la zona de las tarjetas o más abajo. Nunca los coloques cerca del ventilador del micro, porque puedes crear una corriente de aire y así no se aprovecha al 100% el aire que extrae el ventilador del micro.

Es opcional la utilización de rejillas para los ventiladores, la estética es bastante buena, pero con las rejillas la podéis mejorar.
Recordad que este es un método económico en el que no hay que gastarse dinerales para ponerle un poquito más de ventilación a la caja, podéis idear mejores métodos, pero yo os digo que este es bueno, útil y económico.

Espero que os sea útil :P y perdonadme por no poner fótos pero no dispongo de una cámara digital...

Como tener la mejor ventilación del Mercado... y la mas barata [Refrigeracion]

Como tener la mejor ventilación del Mercado... y la mas barata

Es un mod sencillísimo y de dificultad prácticamente nula. Consiste en refrigerar la torre con dos simples ventiladores.
Son ventiladores "estándar" de 16 cm., que generan un flujo de aire hasta 10 veces superior a los ventiladores de 8cm, pero a cambio, exigen estar alimentados a 220V, directamente de la red.
Se pueden adquirir en cualquier tienda de electrónica, y cuestan aproximadamente unos 10-15?, también venden modelos ultra silenciosos que son algo más caros (unos 30?).
El montaje es muy sencillo:
Agujereamos la parte de adelante de le carcasa con un taladro para hacer los orificios por los que sujetaremos el ventilador, para luego amarrarlos con tornillos. Repetimos la operación en la parte de atrás, justo debajo de la fuente de alimentación y colocamos los ventiladores.
Respecto a la alimentación de estos, si somos un poco mas apañados podemos tirar un par de cables desde la fuente de alimentación y hacer un agujero en la carcasa para pasarlos. La única pega es que siempre que haya alimentación eléctrica estarán encendidos, por lo que habrá que apagarlos con el típico interruptor de regleta que todos usamos. Si sois más exigentes, podéis poner un relé, activado por los 12v que da la fuente cuando se enciende, para que cierre el circuito y alimente los ventiladores.
Por último, tapamos todas las rendijas del ordenador, dejando solo dos ranuras (las de los ventiladores), para que el aire circule en forma de circuito a través de la placa.
Os puedo asegurar que en cuanto lo encendí "experimentalmente" me quedé asombrado, porque prácticamente ni necesitaba el ventilador del procesador, ya que la corriente de aire creada lo refrigeraba perfectamente.
Si elegís modelos baratos, meterán bastante ruido (aunque no más del que había antes), mientras que los más caros os ofrecerán mayor caudal de aire y prácticamente ningún ruido, tan solo el del aire entrando y saliendo por las rendijas.
Si lo que queréis es crear un auténtico túnel de viento, comprad turboventiladores, pero... ¡amarradlos bien!
Un último apunte; en la tienda donde los compré me recomendaron alejar lo más posible el cable de 220V que va a los ventiladores, de cualquier componente electrónico (placa base, tarjetas, disco duro, etc.) ya que "podía" dar algún tipo de problema.
Yo los tengo a 5cm de distancia, y va de lujo.
Ya os enseñaré en los foros como queda mi mod. con esas dos preciosidades.

Como hacer un logotipo luminoso [Electronica]

Como hacer un logotipo luminoso

Como hacer un logotipo luminoso', '

Lo primero de todo es escoger el logotipo q queremos realizar. En mi caso he escogido el avatar que suelo utilizar en los foros.

Una vez que sabemos el diseño de nuestro logotipo medimos el recuadro que traen las cajas para poner el logotipo de la marca. En mi caso (y en la mayoria) es de 36x36 mm. Haremos una imagen con un editor grafico tipo Corel! Photopaint 10 de un tamaño un poco mayor (40x40) y una resolucion elevada (600dpi). Esto es para q a la hora de imprimirlo tenga el tamaño q queremos y no se vea muy pixelada la imagen.

Deberemos (y esto es importante) hacerle un girado horizontal, es decir como si lo viesemos en un espejo. Ya veremos porque.

Compramos una transparencia para impresoras (laser, inyecccion, segun sea...) y procederemos a imprimirlo y recortarlo. Tambien recortaremos un trozo de metacrilato de unos 45x45mm. Tambien nos hara falta un trozo de plastico translucido del mismo color que queramos utilizar con los leds. Yo el trozo lo he sacado de una tarjeta de visita de plastico...(todo es cuestion de aprocechar...).

Ahora pegaremos las 3 piezas de la siguiente forma.

Cojemos el trozo de metacrilato y por una de las caras pegamos el trozo de plastico rojo. Es importante q sea translucido, es decir q deje pasar la luz de forma difuminada. Si no tenemos o no conseguimos un trozo de plastico asi podria valer un trozo de papel charol del q venden para manualidades en las papelerias y para hacer el metacrilato translucido podriamos lijar la cara por la q vamos a pegar el plastico. De esta forma los Leds por detras iluminaran pero sin necesidad d q se vean.

Bueno, seguimos: Por una de las caras pegamos el trozo de plastico rojo y por la otra del metacrilato pegamos el logotipo pero "al reves" es decir, la cara de la transparencia por la que se ha imprimido debe estar en contacto con el metacrilato (por eso le dimos la antes en el Corel). De esta forma lo q conseguimos es q no se nos corra la tinta con el uso.

Despues procedemos a recortar el recuadro donde vamos a alojar nuestro logotipo.

Ahora toca buscar la forma de iluminar el logotipo. Existen multitud de tipos de Leds. En este caso yo he utilizado un Led de nada menos que 20mm de diametro de color rojo q funciona a 5 voltios. Aqui teneis una foto para ver el tamaño del mismo. Los pequeños de abajo son de 3 y 5 mm.

Bien, como yo se q estos leds son dificiles de encontrar una diposicion como la siguiente tambien valdria.

La forma de conectarlos seria todos en serie y sin necesidad de resistencia ya q al colocarlos asi a cada uno le caerian 12V/5=2.4v.

El resultado seria algo como esto:

Como un autorregulador para ventiladores

Como un autorregulador para ventiladores

Pues ocurrió cuando rebuscaba entre los trastos de cacharros desarmados y me dio una idea ... encontré: Una célula foto-conductora!! Para los que no conozcan que es o como funciona lo voy a explicar a groso modo. Pues es un dispositivo electrónico que en el circuito actúa como una simple resistencia ,con lo cual puede ser colocada indistintamente (dos patillas no polarizadas).

Célula foto-conductora

Pero que tiene una cualidad muy útil: el valor de esta resistencia cambia de valor según la luz que incida en la misma. Cuando recibe luz (mucha) su valor tiende a 0 ohmios.

Recibe luz de la lámpara

Cuando no recibe luz, o muy poca (en la oscuridad) aumenta su valor (dependiendo de la sensibilidad y la célula)

a oscuras, así que no puedo mostrar la célula evidentemente :P

Bueno acabado el apartado de explicación de como funciona la célula foto-conductora (en mi caso es una de sulfuro de cadmio) su función será regular las rpm de los ventiladores. Con esto conseguiremos que por el día los ventiladores vallan a pleno 12v (resistencia "0") y por la noche al aumentar la resistencia se reduzca el voltaje que llega al ventilador y así menor nivel de ruido y revoluciones. La resistencia foto-conductora se puede conseguir en cualquier tienda de electrónica (no creo que supere 1�) y decirle que os de una que en la oscuridad tenga un valor máximo de 11k (Irán de perlas para ventiladores a 12v ,sin llegar a pararlos y los dejaran a unas 1300 rpm más o menos según el tipo de fan). Aquí os dejo el circuito (que es una chorrada xD solo hay que poner la célula en serie).

Circuito

Como un autorregulador para ventiladores

Como un autorregulador para ventiladores

Pues ocurrió cuando rebuscaba entre los trastos de cacharros desarmados y me dio una idea ... encontré: Una célula foto-conductora!! Para los que no conozcan que es o como funciona lo voy a explicar a groso modo. Pues es un dispositivo electrónico que en el circuito actúa como una simple resistencia ,con lo cual puede ser colocada indistintamente (dos patillas no polarizadas).

Célula foto-conductora

Pero que tiene una cualidad muy útil: el valor de esta resistencia cambia de valor según la luz que incida en la misma. Cuando recibe luz (mucha) su valor tiende a 0 ohmios.

Recibe luz de la lámpara

Cuando no recibe luz, o muy poca (en la oscuridad) aumenta su valor (dependiendo de la sensibilidad y la célula)

a oscuras, así que no puedo mostrar la célula evidentemente :P

Bueno acabado el apartado de explicación de como funciona la célula foto-conductora (en mi caso es una de sulfuro de cadmio) su función será regular las rpm de los ventiladores. Con esto conseguiremos que por el día los ventiladores vallan a pleno 12v (resistencia "0") y por la noche al aumentar la resistencia se reduzca el voltaje que llega al ventilador y así menor nivel de ruido y revoluciones. La resistencia foto-conductora se puede conseguir en cualquier tienda de electrónica (no creo que supere 1�) y decirle que os de una que en la oscuridad tenga un valor máximo de 11k (Irán de perlas para ventiladores a 12v ,sin llegar a pararlos y los dejaran a unas 1300 rpm más o menos según el tipo de fan). Aquí os dejo el circuito (que es una chorrada xD solo hay que poner la célula en serie).

Circuito

martes, 8 de diciembre de 2009

Cuentas Premium Rapidshare Megaupload

Antes que nada hay saber cuales son las paginas generadoras.

Estas son algunas:

_
_ Elektro Now (No Funciona Màs)
_ Trekio (No Funciona Màs)

1- Una vez que entramos a la pagina buscamos el chat que esta situado al lado de la Seccion home (en algunas paginas aparecen abajo a la derecha)

2- Ingresamos al chat

3- Y buscamos las pass, para buscar escribimos @find rapiduser (para rapidshare) y @find megaup (para megaupload)

4- Y el bot no va a tirar el user con la pass (si la user no funciona) escribimos @rapiduser dead (para rapidshare) y @megaup dead (para megaupload) y el bot automaticamente nos tira otro.

Tutoriales Caseros

Como cambiar el frontal de la caja [Modding]
Como cortar metraquilato [Modding]
Como hacer rejillas de aluminio [Modding]
Como hacer una ventana con ventilador [Modding]
Como hacer una ventana retroiluminada [Modding]
Como hacer una ventana personalizada [Modding]
Como hacerse la tapa del lateral de metrakilato [Modding]
Cómo meter tu PC en una pecera... con pececitos [Modding]
Como metodo casero de iluminacion [Modding]
Como moddear Disco Rigidos [HD's] [Modding]
Como moddear la tapa superior de la caja [Modding]
Como modear una disquetera para cajas de metacrilato [Modding]
Como modificar el pulsador de encendido del ordenador [Modding]
Como otra forma de redondear cables [Modding]
Cómo poner unos tiradores (asas) [Modding]
Como redondear cables ide y alimentacion esteticamente [Modding]
Como redondear IDEs sin cortar [Modding]
Como hacer tus propios bloques de cobre [Refrigeracion]
Como Hacer Un Blowhole [Refrigeracion]
Como hacer un blowhole (con fotos)
Como montar un ventilador en dos bahias 5 1/4 [Refrigeracion]
Como redirigir el aire caliente mejorando la refrigeracion [Refrigeracion]
Como refrigerar un router (3com y 812) [Refrigeracion]
Como sustituir el ventilador/disipador de una aceleradora [Refrigeracion]
Como tener la mejor ventilación del Mercado... y la mas barata [Refrigeracion]
Ventiladores sencillos y útiles [Refrigeracion]
Como cambiar el logo de la BIOS [Configuracion]
Como hacer overclock a una CPU [Configuracion]

Pintar gabinete de la PC
[Modding]
Como construir una fuente de alimentación [Electronica]
Como conectar una segunda fuente de alimentacion con un solo interruptor [Electronica]
Como un autorregulador para ventiladores [Electronica]
Como poner una lampara para el teclado [Electronica]
Como hacer un vumeter para HD [Electronica]
Como hacer un logotipo luminoso [Electronica]
Como hacer un control de volumen para los altavoces [Electronica]
Como conectar un Joystick de Playstation al pc [Electronica]
Como colocar conectores frontales de audio y usb [Electronica]
Armar PC Desde Cero [Tutorial]

Tutoriales Caseros

Como cambiar el frontal de la caja [Modding]
Como cortar metraquilato [Modding]
Como hacer rejillas de aluminio [Modding]
Como hacer una ventana con ventilador [Modding]
Como hacer una ventana retroiluminada [Modding]
Como hacer una ventana personalizada [Modding]
Como hacerse la tapa del lateral de metrakilato [Modding]
Cómo meter tu PC en una pecera... con pececitos [Modding]
Como metodo casero de iluminacion [Modding]
Como moddear Disco Rigidos [HD's] [Modding]
Como moddear la tapa superior de la caja [Modding]
Como modear una disquetera para cajas de metacrilato [Modding]
Como modificar el pulsador de encendido del ordenador [Modding]
Como otra forma de redondear cables [Modding]
Cómo poner unos tiradores (asas) [Modding]
Como redondear cables ide y alimentacion esteticamente [Modding]
Como redondear IDEs sin cortar [Modding]
Como hacer tus propios bloques de cobre [Refrigeracion]
Como Hacer Un Blowhole [Refrigeracion]
Como hacer un blowhole (con fotos)
Como montar un ventilador en dos bahias 5 1/4 [Refrigeracion]
Como redirigir el aire caliente mejorando la refrigeracion [Refrigeracion]
Como refrigerar un router (3com y 812) [Refrigeracion]
Como sustituir el ventilador/disipador de una aceleradora [Refrigeracion]
Como tener la mejor ventilación del Mercado... y la mas barata [Refrigeracion]
Ventiladores sencillos y útiles [Refrigeracion]
Como cambiar el logo de la BIOS [Configuracion]
Como hacer overclock a una CPU [Configuracion]

Pintar gabinete de la PC
[Modding]
Como construir una fuente de alimentación [Electronica]
Como conectar una segunda fuente de alimentacion con un solo interruptor [Electronica]
Como un autorregulador para ventiladores [Electronica]
Como poner una lampara para el teclado [Electronica]
Como hacer un vumeter para HD [Electronica]
Como hacer un logotipo luminoso [Electronica]
Como hacer un control de volumen para los altavoces [Electronica]
Como conectar un Joystick de Playstation al pc [Electronica]
Como colocar conectores frontales de audio y usb [Electronica]
Armar PC Desde Cero [Tutorial]

Tutoriales Caseros

Como cambiar el frontal de la caja [Modding]
Como cortar metraquilato [Modding]
Como hacer rejillas de aluminio [Modding]
Como hacer una ventana con ventilador [Modding]
Como hacer una ventana retroiluminada [Modding]
Como hacer una ventana personalizada [Modding]
Como hacerse la tapa del lateral de metrakilato [Modding]
Cómo meter tu PC en una pecera... con pececitos [Modding]
Como metodo casero de iluminacion [Modding]
Como moddear Disco Rigidos [HD's] [Modding]
Como moddear la tapa superior de la caja [Modding]
Como modear una disquetera para cajas de metacrilato [Modding]
Como modificar el pulsador de encendido del ordenador [Modding]
Como otra forma de redondear cables [Modding]
Cómo poner unos tiradores (asas) [Modding]
Como redondear cables ide y alimentacion esteticamente [Modding]
Como redondear IDEs sin cortar [Modding]
Como hacer tus propios bloques de cobre [Refrigeracion]
Como Hacer Un Blowhole [Refrigeracion]
Como hacer un blowhole (con fotos)
Como montar un ventilador en dos bahias 5 1/4 [Refrigeracion]
Como redirigir el aire caliente mejorando la refrigeracion [Refrigeracion]
Como refrigerar un router (3com y 812) [Refrigeracion]
Como sustituir el ventilador/disipador de una aceleradora [Refrigeracion]
Como tener la mejor ventilación del Mercado... y la mas barata [Refrigeracion]
Ventiladores sencillos y útiles [Refrigeracion]
Como cambiar el logo de la BIOS [Configuracion]
Como hacer overclock a una CPU [Configuracion]

Pintar gabinete de la PC
[Modding]
Como construir una fuente de alimentación [Electronica]
Como conectar una segunda fuente de alimentacion con un solo interruptor [Electronica]
Como un autorregulador para ventiladores [Electronica]
Como poner una lampara para el teclado [Electronica]
Como hacer un vumeter para HD [Electronica]
Como hacer un logotipo luminoso [Electronica]
Como hacer un control de volumen para los altavoces [Electronica]
Como conectar un Joystick de Playstation al pc [Electronica]
Como colocar conectores frontales de audio y usb [Electronica]
Armar PC Desde Cero [Tutorial]