Sei sulla pagina 1di 56

Cmo hacer un registro de usuarios en PHP

Publicado por XabaducerrarAutor: XabaduNombre: Fernando Larraaga


Email: xabadu@gmail.com Sitio: http://www.comolohago.cl Xabadu es: Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extrao para Xabadu. Luego de ser descubierto a los 4 aos en un partido de barrio por los ojeadores del gran Aviacin F.C., sacudi el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungar y una incursin en la 3a divisin del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros ms recordados en la historia pelotera nacional. Una lesin en el colmillo superior derecho lo llev al retiro el ao 2003, pero est de vuelta y sin duda que su jerarqua y experiencia internacional ser un gran aporte.Ver sus tutoriales (176) en PHP el 18 junio 2008 | 78 Comentarios

Extrado de Como Lo Hago!

Continuando con nuestros tutoriales de Diseo Web, y ya habiendo aprendido a hacer autentificaciones de usuarios mediante el uso de PHP con y sin bases de datos, hoy les traemos otro sencillo tutorial en el cual les ensearemos a aadir un registro de usuarios a sus sitios Web, el cual puede resultar muy til si queremos entregar ciertas funcionalidades a algunos tipos de usuarios. Para este tutorial, no es necesario tener grandes conocimientos de lenguajes dinmicos ni manipulacin de bases de datos, ya que veremos todo el cdigo correspondiente en detalle. Como siempre, ms informacin despus del salto.

Cmo hacer un registro de usuarios en PHP


Como siempre, partamos por lo primero:

Implementos necesarios:

Un editor Web. Para este caso utilizaremos Adobe Dreamweaver CS3 (Pueden descargar una versin de evaluacin aqu). Un servidor que soporte y ejecute archivos PHP. Para esto tienen 2 opciones: Pueden instalar algn software que contenga un servidor estilo Apache (Como Wamp o Xampp) o buscar algn alojamiento gratis que ofrezca la funcionalidad. Un sistema de bases de datos. Para este caso utilizaremos MySQL, el cual pueden instalarlo (viene incluido en Wamp y Xampp) o buscar algn alojamiento gratis que ofrezca la funcionalidad.

Sin ms cosas, manos a la obra:

Procedimiento:
1.- Lo primero que haremos, ser crear la tabla correspondiente a los usuarios en nuestra base de datos. Si no saben como hacerla, pueden ver este tutorial en el que hemos realizado este proceso paso a paso. La tabla para este ejemplo contendr los siguientes campos: 1. 2. 3. 4. username ===> varchar (10) ===> primary key clave ===> varchar(10) email ===> varchar(30) nombre ===> varchar(50)

Eventualmente pueden definir los campos que Uds. estimen convenientes (por ejemplo Sitio Web, Pais de ubicacin, etc), dependiendo de la informacin que quieran recolectar de cada usuario. 2.- A continuacin comenzaremos con el diseo de nuestro registro de usuarios. Primero que todo, crearemos una pgina HTML donde tendremos nuestro formulario de registro. A esta pgina la llamaremos registro.html y en ella crearemos el formulario. Si tienen dudas de como crear un formulario, pueden ver este tutorial en el que ya realizamos el proceso paso a paso. Este formulario contendr los siguientes campos: 1. Nombre de usuario: A este campo le pondremos un mximo de caracteres de 10 en la opcin Max Chars (o el nmero de largo que uds. quieran, fijandose siempre en no superar el mximo que definimos en el campo correspondiente de la base de datos) y como nombre de campo le pondremos username. 2. Contrasea: A este campo tambin le pondremos un mximo de caracteres de 10 en la opcin Max Chars (tambin pueden fijarlo segn su gusto). Le pondremos de nombre clave al campo y en Type pondremos password para que no muestre el texto que se escriba. 3. Confirmar contrasea: Este campo tendr las mismas caractersticas que el anterior, excepto que el nombre lo fijaremos como confirmar. 4. Correo electrnico: Aqu fijaremos un mximo de caracteres de 30 (o el que uds. decidan), y le pondremos de nombre email. 5. Nombre completo: Este campo lo fijaremos de un mximo de caracteres de 50 y le pondremos de nombre nombre. Y como siempre, los clsicos botones Enviar y Limpiar datos. El Action de este formulario (pgina a la que se dirigir al hacer click en el botn Enviar) lo dejaremos fijado a agregar.php 3.- Con nuestra base de datos y formulario listos, ahora podemos concentrarnos en el cdigo para registrar al usuario. Para esto crearemos una pgina llamada agregar.php en el cual realizaremos los siguientes pasos: 1. Confirmaremos que todos los campos han sido llenados. 2. Confirmaremos que el nombre de usuario no exista actualmente en la base de datos (por ser clave primaria, debe ser nico). 3. Validaremos que la contrasea sea igual en los 2 campos donde se ingresaron. 4. Registraremos al usuario en nuestra base de datos.

Para esto, insertaremos el siguiente cdigo despus de la etiqueta <BODY>. La explicacin del cdigo, como siempre, en cursiva, negrita y entre /* */: $user=$_POST["username"]; $clave=$_POST["clave"]; $confirmar=$_POST["confirmar"]; $email=$_POST["email"]; $nombre=$_POST["nombre"]; $error=0; /* Primero que todo asignaremos los valores recogidos del formulario en el vector POST a las variables que definimos ($user, $clave, etc). La ltima variable llamada $error la dejaremos como una bandera para marcar cualquier falla que exista dentro del proceso */ if($user==" || $clave==" || $confirmar==" || $email==" || $nombre==") { echo Debe ingresar todos los datos.<br> Por favor vuelva ; ?> <a href=registro.html><? echo atrs;?></a><? $error=1; } /* Bsicamente lo que hacemos aqu es controlar mediante una sentencia if que todas las variables contengan informacin. Por eso preguntamos si alguna de ellas esta vaca (separando por el equivalente a que es || ) que muestre el mensaje de que faltan datos y le muestre el vnculo para volver al formulario. Adems, marcamos nuestra variable $error con un 1 . */ if($clave!=$confirmar) { echo Las contraseas ingresadas no son iguales.<br> Por favor vuelva ; ?> <a href=registro.html><? echo atrs;?></a><? $error=1; } /* A continuacin comprobamos que las contraseas ingresadas en el formulario, o bien la contrasea y la confirmacin sean iguales. Dentro de nuestro if preguntamos si son distintas (mediante != ) y si es el caso, mostramos el mensaje que las contraseas no son iguales y desplegamos el vnculo para volver el formulario. Adems, marcamos la variable $error con un 1 . */ else {

$conexion=mysql_connect(URL del host,usuario,contrasea) or die(No se puede conectar a la BD); mysql_select_db(nombre de nuestra BD,$conexion) or die(No se puede seleccionar la BD); $consulta=SELECT * FROM usuario WHERE username=$user; $resultado=mysql_query($consulta,$conexion) or die(Operacion fallida: $consulta); /* A este trozo de cdigo se ingresar si los datos del usuario han pasado todas las validaciones anteriores. Lo primero que haremos es establecer una conexin a nuestra base de datos, primero definiendo una variable llamada $conexion y almacenando dentro de ella el resultado de la conexin a la BD mediante la funcin mysql_connect, a la cual le proveemos los parametros correspondientes a la URL de nuestra base de datos (comunmente es localhost) y el usuario y contrasea que utilizamos para ingresar. Luego seleccionamos la base de datos mediante la funcin mysql_select_db a la cual le proporcionamos los parametros correspondientes al nombre de la base de datos y los datos de la conexin (almacenados en la variable $conexion). En caso de que alguno de esos proceso fallen, presentamos un mensaje de error y matamos el proceso mediante el or die correspondiente. Luego en una variable $consulta, definimos una consulta a la base de datos de tipo SQL en la cual le pedimos que busque los datos de algn usuario que ya tenga el nombre de usuario que se seleccion ahora. De esta forma veremos si ya existe algn usuario con esos datos. Finalmente, ejecutamos la consulta mediante la funcin mysql_query, a la cual le proporcionamos la consulta almacenada en $consulta y los datos de la conexion almacenados en la variable $conexion. El resultado de la consulta lo almacenaremos en la variable $resultado. */ if(mysql_affected_rows($resultado)==0) { $consulta=INSERT into usuario(username, clave, email, nombre) VALUES ($user,'$clave,'$email,'$nombre); $resultado=mysql_query($consulta,$conexion); /* Mediante la funcin mysql_affected_rows (dandole de parametro el resultado de la consulta) averiguaremos si hubo alguna fila afectada por la consulta recin realizada (la consulta SELECT que buscaba la existencia del usuario), en caso de que la funcin sea igual a 0 significa que no hubo coincidencias por lo que el nombre de usuario se encuentra libre y podemos proceder a aadir el nuevo usuario a la base de datos. Esto lo hacemos mediante una consulta INSERT, la cual la almacenamos en la variable $consulta (podemos reutilizarla, ya que no necesitaremos el contenido anterior) y el resultado de esta la almacenaremos en $resultado (lo mismo que $consulta) luego de ejecutarla mediante un mysql_query */ if(!$resultado) { echo Se ha presentado un error al registrar el usuario. <br> Por favor intentelo de nuevo; $error=1; exit();

/* Ahora mediante un if validaremos que no haya ningn problema con la ejecucin de la consulta. Al poner !$resultado le preguntamos a la BD si no fue posible obtener un resultado en la ejecucin y si es as desplegamos el mensaje de error correspondiente y marcamos nuestra variable $error con un 1 para luego hacer un exit() y detener la ejecucin */ } else { $error=2; /* El else por supuesto corresponde a que no hubo problemas en la ejecucin de la consulta, por lo que marcamos nuestra variable $error con un 2 el cual validaremos ms tarde para desplegar un mensaje de xito */ } } else { echo El nombre de usuario ya existe.<br> Por favor vuelva ; ?> <a href=registro.html><? echo atrs;?></a><? $error=1; /* Este else corresponde al if que utilizamos con la funcin mysql_affected_rows , por lo que si entra al else significa que hubo una coincidencia cuando seleccionamos el nombre de usuario de la BD. As que desplegamos el mensaje correspondiente de error, presentamos el vnculo para volver y marcamos nuestra variable $error con un 1 */ } } if($error==2) { echo Se ha registrado en el sistema. Bienvenido $nombre; /* Finalmente validamos si nuestra variable error vale 2, esto significa que logr insertar los datos de forma satisfactoria por lo que presentamos el mensaje de xito y le damos la bienvenida al usuario usando el nombre que registr en el formulario */ } Algunas salvedades:

1. Por qu no desplegamos el mensaje de exito de registro en el else correspondiente en vez de marcar la variable y luego matamos el proceso con un exit() ? . Bueno, lo hicimos as por una simple razn: En caso de que quisieran seguir ejecutando cdigo PHP ms adelante en la misma pgina, si hicieramos un exit, este cdigo no se ejecutara y la pgina quedara muerta en el punto que utilizamos el exit(). 2. Si lo desean, antes de insertar los datos en la BD, pueden encriptar la contrasea con alguno de los mtodos conocidos (MD5, Base64 encode, Sha1, etc). PHP ofrece funciones que realizan este proceso de forma sencilla, tanto como poner $clave=md5($clave), con lo que almacenariamos una contrasea encriptada. Recuerden eso s, que en caso de encriptar la contrasea, deben tener esto presente al momento de realizar autentificacin, ya sea decodificando la clave almacenada en la BD antes de comparar, o codificando la contrasea ingresada en la autentificacin antes de validar. Si desean saber el mtodo ms efectivo, uno de los que est teniendo ms aceptacin en estos momentos entre los desarrolladores es Base64, pero en el fondo todos tienen sus virtudes y defectos. 3. Los cdigos correspondientes a los or die pueden personalizarlos con mensajes ms amigables al usuario. Aqu dejamos la consulta puesta para cuando Uds. prueben puedan ver el error exacto que lanza la BD al ejecutar la consulta. 4. Tal como dijimos al comienzo, aqu tomamos un formulario simple de registro con solo algunos campos. Uds pueden personalizarlos a su gusto dependiendo de la informacin que quieran recolectar de cada usuario. Solo deben hacer las modificaciones correspondientes en la base de datos, el formulario, las validaciones y la consulta INSERT. 5. Este formulario es bastante bsico en trmino de validaciones. Hay algunos scripts que pueden encontrar en la Web (principalmente en Javascript) los cuales les permitirn hacer validaciones ms extensivas, especialmente con respecto a validar la direccin de correo electrnico de sus usuarios. La intencin principal es ensear como funciona el proceso para que despus Uds. puedan ir probando las modificaciones que les parezcan pertinentes. Y con esto damos trmino a este nuevo tutorial de PHP donde les enseamos a hacer un simple registro de usuarios que pueden incorporar a su Web. Esperamos que este tutorial haya sido de utilidad para Uds. y como siempre no duden en dejarnos sus dudas o comentarios al respecto, los cuales trataremos de contestarlos a la brevedad para poder ayudarlos. Como es habitual, recuerden que este tutorial ha sido desarrollado, probado y documentado por el equipo de Comolohago.cl, por lo que cuenta con nuestro infalible sello de garanta.

Sistema de registro de usuarios PHP


Hola, en este tutorial les ensear como crear un sistema de usuarios para tu web en php
Bueno lo primero que vamos ha hacer es crear una BD (base de datos) que se llame "usuarios" En esa base vamos a a crear una tabla con el siguiente codigo

CREATE TABLE `usuarios` ( `id` int(11) NOT NULL auto_increment, `usuario` varchar(20) NOT NULL, `password` varchar(10) NOT NULL, `descripcion` text character set utf8 collate utf8_spanish_ci, `email` varchar(45) character set utf8 collate utf8_spanish_ci default NULL, `fecha` date NOT NULL, PRIMARY KEY (`id`) )
Si no saben como, nada mas lo copian y lo pegan en el bloc de notas y lo guardan como txt, o como sql, y en el admin de sql, se van a importar, luego donde dice seleccionar y se les abre una ventana donde van a buscar el archivo que crearon antes, le dan continuar y ya tendremos una tabla donde se va a registrar los usuarios Ya tenemos la BD, y la tabla, ahora vamos a crear un archivo que se va a llamar registro.php Este archivo va a contener el siguiente cdigo:

<?php session_start(); //datos para establecer la conexion con la base de mysql. mysql_connect('Aqui el servidor, normalmente localhost','Aqui va tu usuario, normalmente root','Aqui tu contrasea, que normalmente no hay')or die ('Ha fallado la conexin con el servidor: '.mysql_error()); mysql_select_db('Aqui la base de datos, que es este caso es usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); function formRegistro(){ ?> //esto es lo que que se va a ver, ese un formulario pequeo <form action="registro.php" method="post"> Usuario: <input type="text" name="username" size="30" maxlength="20" /><br /> Password: <input type="password" name="password" size="40" maxlength="10" /> Confirma: <input type="password" name="password2" size="40" maxlength="10" /><br /> Email: <input type="text" name="email" size="20" maxlength="40" /><br /> <input type="submit" value="Registrar" /> </form> <?php } // verificamos si se han enviado ya las variables necesarias. if (isset($_POST["username"])) { $username = $_POST["username"]; $password = $_POST["password"]; $password2 = $_POST["password2"]; $email = $_POST["email"]; // Hay campos en blanco if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) { echo "un campo est vacio.";

formRegistro(); }else{ // Coinciden las contraseas? if($password!=$password2) { echo "Las contraseas no coinciden"; formRegistro(); }else{ // Comprobamos si el nombre de usuario o la cuenta de correo ya existan $checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'"); $username_exist = mysql_num_rows($checkuser); $checkemail = mysql_query("SELECT email FROM usuarios WHERE email='$email'"); $email_exist = mysql_num_rows($checkemail); if ($email_exist>0|$username_exist>0) { echo "El nombre de usuario o la cuenta de correo estan ya en uso"; formRegistro(); }else{ $query = 'INSERT INTO usuarios (usuario, password, email, fecha) VALUES (\''.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\')'; mysql_query($query) or die(mysql_error()); echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />'; echo 'Ahora puede entrar ingresando su usuario y su password<br />'; ?> //Un formulario de login, que aparesera despues de el registro fue exitoso <FORM ACTION="comprobar.php" METHOD="post"> Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br /> Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=10><br /> <INPUT TYPE="submit" VALUE="Ingresar"> </FORM> <?php } } } }else{ formRegistro(); } ?>
Bueno ya creamos un archivo para registro, ahora vamos a crear uno para login (loguearse, identificarse) Este archivo va a llevar el nombre de "login.php" y llevara el siguiente codigo:

<form action="comprobar.php" method="post"> Usuario:<input type="text" name="usuario" size="20" maxlength="20" /> <br /> Password:<input type="password" name="password" size="10" maxlength="10" /> <br /> <input type="submit" value="Ingresar" /> </form>
Una vez creado este archivo, hay que crear uno que se llame "comprobar.php" Este llevara este codigo:

<?php session_start(); //datos para establecer la conexion con la base de mysql.

mysql_connect('Tu servidor','Tu usuario','Contrasea')or die ('Ha fallado la conexin: '.mysql_error()); mysql_select_db('La base de datos, que en este caso seria usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); function quitar($mensaje) { $nopermitidos = array("'",'\\','<','>',"\""); $mensaje = str_replace($nopermitidos, "", $mensaje); return $mensaje; } if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "") { // Puedes utilizar la funcion para eliminar algun caracter en especifico //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"])); //$password = $HTTP_POST_VARS["password"]; // o puedes convertir los a su entidad HTML aplicable con htmlentities $usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES)); $password = $HTTP_POST_VARS["password"]; $result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\''); if($row = mysql_fetch_array($result)){ if($row["password"] == $password){ $_SESSION["k_username"] = $row['usuario']; echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>'; echo '<a href="index.php">Index</a></p>'; //Elimina el siguiente comentario si quieres que re-dirigir automticamente a index.php /*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 usuario y password'; } mysql_close(); ?>
Ahora crearemos un archivo con el el nombre de logout Este archivo se llamara logout.php y llevara el siguiente codigo:

<?php session_start(); // Borramos toda la sesion session_destroy(); echo 'Ha terminado la session <p><a href="index.php">index</a></p>'; ?> <SCRIPT LANGUAGE="javascript"> location.href = "index.php"; </SCRIPT>
Y por ultimo crearemos el index (La pagina de inicio) Este archivo llevara el nombre de index.php u contendr el siguiente cdigo:

<?php session_start(); echo 'Bienvenido, '; if (isset($_SESSION['k_username'])) { echo '<b>'.$_SESSION['k_username'].'</b>.'; echo '<p><a href="logout.php">Logout</a></p>'; }else{ echo '<p><a href="login.php">Login</a></p> <p><a href="registrar.php">Registrar</a></p>'; } ?> Bueno eso es todo, espero que les sirva, y hasta la prxima....

Autor: Chochex

[/PHP]

Mich Buchanan 4/02/2004 ingresar.php: [PHP]< ?php // Inicio de sessin session_start(); // Servidor de la Base de Datos $servidorBD="; // Usuario de la Base de Datos $usuarioBD="; // Contrasea de la Base de Datos $passBD="; // Nombre de la Base de Datos $nombreBD="; // Conecto con la base de datos $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (Imposible conectar con la base de datos); // Selecciono la BBDD mysql_select_db($nombreBD,$conectar) or die (mysql_error()); include(identificar.inc.php); //Inicializamos la variable sid para utilizarla ms tarde $sid = md5(SID); 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($_POST["nick"]) != && trim($_POST["password"]) != ) { $nickN = quitar($_POST["nick"]); $passN = quitar($_POST["password"]); $result = mysql_query(SELECT id, password FROM usuarios WHERE nick=$nickN); if($row = mysql_fetch_array($result)) { if($row["password"] == md5($passN)) { //Introduce en la BD los datos encriptados de IP,Host,y navegador

$identificador = md5(get_full_ip() .-. browser_detection()); $sql = Update usuarios Set sid = .$sid., identificador = .$identificador., ultima_visita = NOW() Where id = .$row['id'].; mysql_query($sql) or die (mysql_error()); //90 dias dura la cookie setcookie(usNick,$nickN,time()+7776000); setcookie(usPass,$sid,time()+7776000); //Tambin las de sesin $_SESSION['usNick'] = $nickN; $_SESSION['usPass'] = $sid; $_SESSION['id'] = $row['id']; ?> <? } else { echo Password incorrecto Login ; } } else { echo Usuario no existente en la base de datos Login ; } mysql_free_result($result); } else { echo Debe especificar un nick y password Login ; } mysql_close(); ?> [/PHP] registrar.php: [PHP]< ?php // Inicio de sessin session_start();

// Servidor de la Base de Datos $servidorBD="; // Usuario de la Base de Datos $usuarioBD="; // Contrasea de la Base de Datos $passBD="; // Nombre de la Base de Datos $nombreBD="; // Conecto con la base de datos $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (Imposible conectar con la base de datos); // Selecciono la BBDD mysql_select_db($nombreBD,$conectar) or die (Imposible conectar con la 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($_POST["nick"]) != && trim($_POST["email"]) != ) { $sql = SELECT id FROM usuarios WHERE nick=.quitar($_POST["nick"]).; $result = mysql_query($sql); if($row = mysql_fetch_array($result)) { echo Error, nick escogido por otro usuario Registro ; } else { $sql = INSERT INTO usuarios (nick,password,nombre,email) VALUES (; $sql .= .quitar($_POST["nick"]).; $sql .= ,md5(.quitar($_POST["password"]).); $sql .= ,.quitar($_POST["nombre"]).; $sql .= ,.quitar($_POST["email"]).; $sql .= ); mysql_query($sql); echo Registro exitoso! Index ; } mysql_free_result($result); } else

{ echo Debe llenar como minimo los campos de email y password Registro ; } mysql_close(); ?>[/PHP] logout.php: [PHP]// Inicio de sessin session_start(); // Servidor de la Base de Datos $servidorBD="; // Usuario de la Base de Datos $usuarioBD="; // Contrasea de la Base de Datos $passBD="; // Nombre de la Base de Datos $nombreBD="; // Conecto con la base de datos $conectar = mysql_connect($servidorBD,$usuarioBD,$passBD) or die (Imposible conectar con la base de datos); // Selecciono la BBDD mysql_select_db($nombreBD,$conectar) or die (Imposible conectar con la base de datos); // Cambiamos de la base de datos el valor aleatorio de la cookie por si acaso fue robada $sql = UPDATE usuarios SET sid = .md5(rand(0,time()))., identificador = .md5(rand(0,time()))., ultima_visita = NOW() Where id = .$_SESSION['id'].; mysql_query($sql) or die (mysql_error()); //Destruimos las cookies. setcookie(usNick,x,time()-3600); setcookie(usPass,x,time()-3600); setcookie(Acepta,x,time()-3600); // Destruimos la sesin session_destroy(); ?> [/PHP] y el fichero tabla.sql para importar con phpmyadmin o como queris :

[PHP]# phpMyAdmin SQL Dump # version 2.5.5-pl1 # http://www.phpmyadmin.net # # Servidor: vigilantes.no-ip.com # Tiempo de generacin: 05-02-2004 a las 02:52:30 # Versin del servidor: 4.0.17 # Versin de PHP: 4.3.5RC2 # # Base de datos : `aaaa` # # # # Estructura de tabla para la tabla `usuarios` # DROP TABLE IF EXISTS `usuarios`; CREATE TABLE `usuarios` ( `id` bigint(7) NOT NULL auto_increment, `nombre` varchar(100) NOT NULL default , `nick` varchar(30) NOT NULL default , `password` varchar(32) NOT NULL default , `sid` varchar(32) NOT NULL default , `identificador` varchar(32) NOT NULL default , `ultima_visita` timestamp(14) NOT NULL, `email` varchar(100) NOT NULL default , UNIQUE KEY `id_2` (`id`), KEY `id` (`id`) ) TYPE=MyISAM AUTO_INCREMENT=10 ;[/PHP] Como veis es bsicamente la que viene en el tutorial, pero un poco modificada, bueno, espero que no os moleste que no la explique mucho, si tenis alguna duda ya sabis preguntadme lo que queris y todos los fallos que le encontris avisadlos cuanto antes. Y aprovecho para agradecer al foro y especialmente a Cluster su ayuda por resolver pacientemente todas mis dudas como hacen siempre con todos. :adios:

Unregistered 9/02/2004 para los que les dio el error Al hacerlo, me saco los siguientes errores: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp egistro egistrar.php on line 27

Registro exitoso! Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in c:inetpubwwwrootphp egistro egistrar.php on line 42 Es por que en la conexion ponen el nombre de la tababla en vez de el nombre de la base de datos. Servidor= Usuario= Pass= NOMBRE DE LA BASE DE DATOS, no la tababla de datos. Muchas gracias por tus mensajes Mich, me han servido de mucho.

Alexander Rodriguez 19/10/2010 Cordial Saludo De ante mano agradezco el tutotial ya que soy nuevo me a servido de mucha ayuda, quisiera consultarle una pregunta e analizado el codigo pero no entiendo una parte, cuan do ejecujto el script me da esta anotacion: Parse error: parse error, unexpected in C:\EasyPHP 2.0b1\www\Registro\registrar.php on line 8 y en el script es: function quitar($mensaje) { $mensaje = str_replace(<",",>,$mensaje); $mensaje = str_replace(\,,$mensaje); $mensaje = str_replace(\,",$mensaje); $mensaje = str_replace(\\\\,\,$mensaje); return $mensaje; } muchas gracias si me puede colaborar ya que no se como se usa la funcion quitar GRACIAS

Registro y reconocimiento

de usuarios con

PHP
Publicado en agosto 3, 2002 403 comentarios 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 ) 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 comn para identificar a los usuarios es por medio de nick/password, aunque tambin 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 pequea y sencilla pero para efectos prcticos y de aprendizaje es perfecta (eso depende de ti, segn 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 ms comprobaciones como la del email o manejo de errores mysql. Tambien podria hacerse ms 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 ensear 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.

PHP Ingresar codigo PHP


No tienes miedo an? Con la que te viene encima, madre ma...je je je. Pues vamos a escribir nuestro primer cacho de cdigo Php en una pgina web de prueba, vale? Esto nos servir para repetir un poco algunas de las explicaciones anteriores para que an te queden ms claras. Cuando se inserta un trozo de cdigo Php dentro de una pgina con cdigo Html es necesario indicar al servidor que esas lneas tan raras son cdigo Php. De lo contrario pensara que sigue siendo Html o que estamos un poco borrachos, je je. Al igual que cuando se escribe un prrafo en Html se encerraba este entre las etiquetas <p> y </p>, cuando nos interese insertar cdigo Php entre el cdigo Html de una de nuestras pginas usaremos las etiquetas <?php al principio y ?> al final.
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> </body> </html>

El cdigo Html de arriba representa una pgina puramente hecha con Html, ms bien simplificada pero que nos vale para ver cmo funciona el Php. S, he puesto "mi quinto". Realmente es "mi primer..." pero de este modo si alguien nos ve ahora mismo pensar que debemos ser unos genios ya en Php, je je je je. Ser otro secreto entre nosotros, vale? He visto tantos ejemplos ya con el tpico mensaje de "Hola Mundo!" que me da un poco de angustia usarlo yo tambin as que.... seamos originales. Aplicando lo dicho un par de prrafos ms arriba, vamos a introducir un bloque vacio de cdigo Php. Para ello colocamos los smbolos que indican inicio y fn de cdigo Php y no pondremos, por ahora, nada dentro. Quedara as:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> <?php ?> </body> </html>

Puedes guardarla con el nombre test01.php No te doli verdad? je je je je. Ahora sobre esa base aprenderemos las cosas bsicas del Php.

Ojo!: El cdigo php solo puede ser ejecutado por el servidor en pginas con extensin .php, a menos que le indiquemos al servidor que ejecute php tambin en pginas con extensin .html. En breve os enseare a hacer que los servidores puedan ejecutar ese cdigo php en paginas con extensin .html, oki? Recuerda lo comentado antes. Si guardas un archivo con ese cdigo dentro con extensin .php e intentas hacer vista previa no conseguirs ver lo que hace la parte de cdigo de Php a no ser que tengas el Php instalado en tu ordenador (a no ser que tu ordenador est funcionando como servidor). Lo ms cmodo es subir ese archivo a tu servidor y hacer la vista previa all. Es decir, lo subes y visitas su direccin para ver el resultado, que sera algo as. (este lo puedes ver por que est en un servidor con php, claro). Deja tambin que te recuerde que si haces clic en el enlace anterior para ver el resultado y accedes a su cdigo Html, no vers nada del cdigo Php, sino solo sus resultados ya en Html. Ya sabes por qu, no? Como te deca al principio el Php lo lee el servidor, lo ejecuta y manda el resutado al navegador, pero se queda el cdigo Php. Poco a poco lo vamos entendiendo todo, no? Dime que s! je je je.

Mostrar texto en Php en la pgina web


A partir de ahora llamaremos sentencia a las ordenes que demos en Php, oki? Una de las sentencias que ms usaremos en Php es la que ordena que se muestre un contenido en la pgina web. Esa sentencia se llama echo y se usa escribindola dentro de la zona de php (entre las etiquetas de principio y final) seguida del mensaje a mostrar encerrado entre dobles comillas, as:
echo "Esta es mi quinta frase hecha con Php!" ;

Ves que hemos colocado un punto y coma al final? Pues ya sabes una cosa ms, todas las sentencias terminan en un punto y coma ; Si no se coloca nos dar un error. Si aades esa lnea, perdn, esa sentencia ;) el cdigo anterior nos quedara as:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> <?php echo "Esta es mi quinta frase hecha con Php!" ; ?> </body> </html>

Qu va a ocurrir al subir este archivo a la red? Si lo subimos y visitamos la pgina veremos este resultado:
Mi quinto ejemplo Php Este es mi quinto ejemplo con partes de Php Esta es mi quinta frase hecha con Php!

Si ahora miras su cdigo Html no vers las lneas de Php que habamos escrito, sino que vers solo el Html que el servidor ha traducido a partir del cdigo con Php, es decir, veras esto:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> Esta es mi quinta frase hecha con Php! </body> </html>

Como ves, la sentencia echo lo nico que hace es colocar dentro del cdigo Html lo que hay dentro de las dobles comillas. No es mucho, pero para ser nuestro primer da con Php.... no? Espero que esto no te defraude, es solo un principio muy muy bsico, je je je. Como a nosotros nos gusta tener nuestro cdigo Html bien limpito y bien estructurado, vamos a incluir dentro de esas dobles comillas las etiquetas <p> y </p>, no? As el cdigo de nuestra pgina php sera este:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> <?php echo "<p>Esta es mi quinta frase hecha con Php!</p>" ; ?> </body> </html>

Y el resultado final que ve el visitante sera en ese caso este otro:


<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> <p>Esta es mi quinta frase hecha con Php!</p> </body> </html>

La nica diferencia es que ahora esa frase est dentro de un prrafo, como tiene que ser.

Usando las primeras variables php en la pgina web


La sentencia anterior no nos parece ni mucho menos extraordinaria, pues es algo que ya sabamos hacer usando solo Html, pero vers como ms adelante la usas un montn de veces y de modos ms especiales y resultones. El siguiente paso para adentrarnos en el Php va a ser conocer las variables que amplian bastante lo que podemos hacer con este nuevo lenguaje. De nuevo, para saber bien bien lo que significa el trmino variable, ve a la wikipedia, je je. Aqu lo explicamos para gente de la calle o al menos lo intentaremos. Vamos a ver... Digamos que una variable es un nombre al que le asignamos un valor. El nombre puede ser una sola letra, una palabra o incluso varias palabras unidas por guiones bajos. Estos son ejemplos de variables: $a, $variable, $notas_de_matematicas, $matricula112,..... Por otro lado, los valores que puede tomar una variable pueden ser nmeros, letras, palabras o incluso otras variables. Lo veremos ms adelante. Los nombres que le damos a las variables deberan tener algn sentido para nosotros para saber en cualquier momento de qu se trata. Si las llamamos como $a, $b, etc, nos va a ser dificil recordar qu valor guardaban. Quizs sea mejor llamarlas como $nota_de_matematicas, $telefono, $apellidos, etc, etc, no crees? No obstante, no podemos dar el nombre que nos de la gana, tenemos que seguir ciertas normas como por ejemplo: - Siempre empiezan con el smbolo del dolar. Buen smbolo verdad? je je je. - Justo despus del smbolo dolar no puedes poner un nmero. Tras el dolar solo se puede poner una letra mayscula o minscula. En realidad se pueden usar algunos smbolos ms, pero para no liarnos nos limitamos a esto,letras y nmeros si estos no estn justo tras el dolar. Cuando seas profesional podrs usar algn smbolo ms, je je je. Segn esto, NO seran vlidas estas variables:

variable (no tiene el smbolo de dolar) $5direccion (no puede empezar con un nmero) $matrcula (sabes que odio los acentos... php tambin, je je je) $nota de matematicas (No! no pongas espacios en blanco!!!) $nota-de-matematicas (usa mejor guiones bajos para... evitar_problemas)

Pero S valdran estas otras: $sueldo, $apellido2, $a1234, $variable, $notadematematicas, $nota_de_matematicas, etc.. Los valores que podemos dar a cada una de estas variables puede ser como hemos dicho un nmero de una o varias cifras, una letra o palabra o incluso otra variable (en ese caso la variable valdra lo que valga la otra variable, claro).

Para usar una variable dentro de una pgina web lo primero que tenemos que hacer es colocar las etiquetas de apertura y cierre de cdigo Php y despus indicar la variable a usar y el valor que queremos que tenga. Por ejemplo,as:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> <?php echo "<p>Esta es mi quinta frase hecha con Php!</p>" ; $miprimeravariable = "sorpresa" ; ?> </body> </html>

Guau, esto ya va pareciendo profesional. Seguro que si ahora tu madre pasa por tu habitacin y ve lo que ests escribiendo piensa que vas directamente a la NASA!!! ja ja ja. Igual no llegamos tan lejos, pero nos acercaremos bastante, je je je je. Ahora tenemos una pgina web bien sencillita, con un prrafo en Html, otro en Php y una variable definida que... que no usamos para nada, an

Comentarios y Notas dentro del Cdigo Php


Recuerdas como en Html podamos aadir comentarios dentro del cdigo para guiarnos un poco? Pues en Php tambin podemos hacerlo. Eso s, al ser lenguajes distintos el cdigo que indica comentarios tambin es diferente. Dentro del cdigo Php, es decir, entre las etiquetas de apertura y cierre de Php, podemos escribir comentarios nuestros (simples notas que no afectan en nada) sin ms que aadir antes de la nota el smbolo # o dos barras como estas //. A partir de esos smbolos el resto de la lnea de cdigo no es leida por el servidor (recuerda que al navegador no le llega el cdigo Php sino su resultado tras ser ejecutado por el servidor). Si usas esos smbolos no tienes que usar smbolo de cierre de comentario, pues el servidor deja de leer toda la lnea de cdigo a partr de ese signo hasta el final de esa lnea. Los siguientes son ejemplos de comentarios, usados sobre la pgina de ejemplo que estabamos creando:
<html> <head> <title>Mi quinta pgina con php</title> </head> <body> <h1>Mi quinto ejemplo Php</h1> <p>Este es mi quinto ejemplo con partes de Php</p> /* Hasta aqu es Html */

<?php // Aqu empieza el codigo Php echo "<p>Esta es mi quinta frase hecha con Php!</p>" ; $miprimeravariable = "sorpresa" ; // Esta lnea da valor a una variable ################################### #Tambin puedo poner esta tonteria ################################### ?> </body> </html>

Mostrar el valor de una variable Php en una pgina web


Ahora que tenemos una variable con un valor asignado ($miprimeravariable = "sorpresa"), vamos a ver cmo conseguir que aparezca en la pgina web ese valor. Esto lo vamos a hacer con la funcin echo que vimos antes. Esto es bastante sencillo, basta con colocar despus del echo la variable cuyo valor queremos mostrar, de este modo:
<?php echo "<p>Esta es mi quinta frase hecha con Php!</p>" ; $miprimeravariable = "sorpresa" ; echo $miprimeravariable ; ?>

Este trozo de cdigo Php imprimir en la pantalla del navegador estas dos frases:
Esta es mi quinta frase hecha con Php! sorpresa

Aunque claro, la palabra sorpresa no quedar entre las etiquetas <p> y </p> porque no se lo hemos indicado en ningn lado. Para conseguir que sorpresa quede entre esas etiquetas tenemos dos opciones. La primera es colocar las etiquetas de apertura y cierre de prrafo dentro del valor de $miprimeravariable, pero no es la mejor opcin. Me gusta ms la segunda alternativa, que es incluir las etiquetas dentro del echo, de este modo:
<?php echo "<p>Esta es mi quinta frase hecha con Php!</p>" ; $miprimeravariable = "sorpresa" ; echo "<p>$miprimeravariable</p>" ; ?>

Vers como para mostrar en la pantalla solamente el valor de una variable podemos escribir echo seguido simplemente de la variable, con su smbolo de dolar, claro, pero sin las comillas dobles. En cambio si queremos mostrar en pantalla algo ms que el valor de una variable necesitamos encerrar todo el contenido a mostrar entre comillas dobles " (no simples '). Ms adelante veremos la diferencia entre usar comillas simples y dobles. Dentro de esas comillas, simples o dobles, se puede insertar cdigo Html. As, cuando el servidor traduzca el cdigo Php devolver al navegador del visitante lo que haya dentro de las comillas, es decir cdigo Html que s sabe interpretar el navegador de nuestro querido visitante. Lo pillas?

Como ejemplo te dejo esta otra sentencia:


echo "<p>El valor de mi primera variable es $miprimeravariable.</p>" ;

Fjate en varias cosas en este ejemplo que te servirn para recordar cosas dichas hasta ahora: - Usamos echo para mostrar algo en la pantalla del visitante. - Ese algo lo encerramos entre comillas y esta vez las he usado dobles ". - Como lo de dentro de las comillas va directo al cdigo Html de la web, coloco ya las etiquetas de prrafo, <p> y </p>. - Como he puesto comillas puedo insertar ms cosas adems del nombre de la variable, es decir, las etiquetas Html de prrafo y un poco de texto. - El nombre de la variable a mostrar lo pongo con su smbolo de dolar ($). - Como toda sentencia, la termino con un punto y coma ; El resultado de esa sentencia Php mostrara en la pantalla del navegador del visitante esta lnea:
El valor de mi primera variable es sorpresa.

Pero qu ocurre si ahora quiero que la palabra sorpresa de la lnea de arriba aparezca entre comillas? A primera vista podra intentarlo con esta sentencia;
echo "<p>El valor de mi primera variable es "$miprimeravariable".</p>" ;

Y qu problema tendremos con esto? S! Muy inteligente! Que ahora el servidor va a pensar que lo que el echo tiene que mostrar termina en la segunda comilla doble que encuentra, la que hay justo antes de $miprimeravariable y no har caso del resto de la sentencia o lo que es peor, nos dar un error, que horror! Para evitar esto Php ya tiene su truco. Recuerdas como para mostrar una acento en Html se usaba un cdigo especial? (&aacute; para , &eacute; para , etc), pues en Php para mostrar unas comillas sin que sean interpretadas como final o inicio hay que escribirlas con la barra invertida delante. Para las comillas dobles usaremos \" y para las comilas simples esto otro \'. Existen otros smbolos que se escriben correctamente tambin con esta contrabarra delante, pero los veremos conforme nos hagan falta para no llenar el disco duro de vuestro cerebrillo tan pronto, je je je. Por cierto, por si os interesa profundizar ya en este tema, el sealar ciertos carcteres para evitar que los interprete el navegador de un modo que no deseamos se suele llamar "escape de smbolos", por si queris buscarlo en Google. El cdigo anterior escrito correctamente sera:
echo "<p>El valor de mi primera variable es \"$miprimeravariable\".</p>" ;

Y es ahora cuando os cuento la diferencia entre el uso de comillas simples ' ' y dobles " " para encerrar el contenido de un echo. Cuando se usan comillas dobles el servidor cambiar los nombres de las variables por sus valores reales, por lo quie valen (si $variable vale sorpresa mostrar sorpresa), mientras que si usamos las comillas simples escribir el nombre de la variable y no su valor (mostrar $variable, tal cul), y con su smbolo dolar al principio, como si se tratara de un texto ms. La sentencia anterior al estar escrita con comillas dobles mostara esto en el navegador del visitante:
El valor de mi primera variable es "sorpresa".

Mientras que escrita con comillas simples, es decir, as:


echo '<p>El valor de mi primera variable es \"$miprimeravariable\".</p>' ;

mostrara esto otro:


El valor de mi primera variable es $miprimeravariable.

Esta diferencia es muy importante, pues usaremos uno u otro tipo de comillas segn queramos que las variables sean o no sustituidas por sus valores correspondientes. Recurdalo siempre!

Las principales operaciones del Php


De poco nos sirve tener variables si no sabemos hacerles trastadas, es decir, sumarles alguna cantidad, restarles otra, dividirlas, multiplicarlas, etc, etc. Si en lugar de valer nmeros, las variables contienen letras o palabras tambin estar bien poder jugar con ellas quitndoles letras, poniendo en maysculas las minsculas, colocando una palabra de una variable pegada a otra palabra de otra variable, eliminar los acentos,.... en definitiva, trastearlas de todas las formas posibles, somos as de malos! En adelante vamos a aprender a realizar unas cuantas operaciones pues nos servirn ms tarde para crear lo que nos de la gana. No es necesario aprenderse todo de memoria (bastante teneis con las asignaturas de clase, je je je). Os pasar una chuleta con todo esto para no tener que estudiaros nada, vale? Pues vamos a ver cmo se hacen estas operaciones en Php.

Suma de variables en Php


No te asustes. El ttulo parece un poco tcnico (cosa que sabes que odio) pero realmente no es ms que sumar dos variables que tienen nmeros en los valores. Imagina que tenemos dos variables como estas:
$nota_primer_examen = 10 ; $nota_segundo_examen = 8 ;

Advertencia: Los valores de las notas anteriores son ficticias, cualquier parecido con la realidad son pura coincidencia, ja ja ja ja ja, ms hubiera querido yo, ja ja ja. Apntate que para dar valores numricos a una variable no se le ponen comillas de ningn tipo. Solo se ponen comillas al dar valores a una variable si se trata de textos (letras) o si se trata de nmeros pero queremos tratarlos como un carcter ms, como si fueran letras, como por ejemplo..... a ver... no caigo en ninguna ahora mismo... Ah ya! Por ejemplo,
$numero_jesucristo = '888' ; $numero_diablo = "666" ;

Casi seguro que los valores de estas variables no los vais a sumar ni multiplicar ni nada de eso, de modo que cabe la opcin de declarar esos valores como texto (un nmero tambin puede ser un texto, no?). Fjate que en este caso da igual usar comillas dobles o simples. Pues volviendo al tema de la suma, para mostrar en pantalla el resultado de las notas de los dos exmenes, podemos usar el echo del siguiente modo:
echo $nota_primer_examen + $nota_segundo_examen ;

Al tratarse de variables no es necesario colocar las comillas. Ahora vamos a aadirlas para insertar dentro del echo algn comentario. Y como queremos que el servidor coloque los valores en lugar de los nombres de las variables, usaremos las comillas dobles. Ves como al final todo tiene su sentido? El echo anterior con los comentarios quedara as:
echo "La suma de mis dos notas es $nota_primer_examen + $nota_segundo_examen." ;

Tenemos an otra opcin que es crear otra variable, darle el valor de la suma de las otras dos y luego colocar el resultado de esa nueva en el echo. Creo que con un ejemplo lo vers mejor....
$resultado = $nota_primer_examen + $nota_segundo_examen ; echo "La suma de mis dos notas es $resultado" ;

Quizs todo esto del Php te est pareciendo un rollo tremendo... pero aguanta un poco ms y empezars a verle la gracia, de verdad. Lo que ocurre es que antes de entrar a fondo hay que saber algunas cosas bsicas imprescindibles. Los ejemplos vistos hasta ahora, y algunos de los que siguen, no tienen mucho sentido. Decirle a una web que sume dos y dos cuando sabemos que son... cuatro (son cuatro no? je je je) no es muy interesante, pero con esto aprendemos a hacer operaciones con variables y luego, cuando lleguemos a la seccin de formularios y a las bases de datos todo esto tendr bastante sentido. Te fe! y paciencia! Adems de sumar valores de variables, podemos multiplicarlos, dividirlos, etc, etc, etc, pero por el momento no nos va a hacer falta y prefiero ir viendo eso conforme sea necesario. Ahora quiero ensearte unas cuantas herramientas bastante ms potentes.

Herramientas de Control Php


S, ya, ya, se que no te gustan los trminos tcnicos, a m tampoco pero te prometo que el nombre real es an ms feo. Las herramientas de control de variables nos permiten hacer algo si se cumple la condicin que indiquemos. Por ejemplo, podemos hacer que una frase se muestre 20 veces una detrs de la otra, o que se vean en pantalla los nmeros del 20 al 30, o mostrar un mensaje al visitante si es por la maana, otro si es por la tarde y otro distinto si es de noche, o podemos hacer cosas ms complicadas como dejar ver una parte de la web si y solo si el usuario se ha registrado, o mostrar los mensajes escritos por l en un foro, o hacer que aparezcan en la portada las novedades de los ltimos X das de forma automtica.... todo esto y mucho ms se consigue dominando estas herramientas de control. Las ms usadas son solo cuatro o cinco y una vez entiendes una se comprenden bien las dems, as que vamos a aprender a usar esas cuatro o cinco y podremos avanzar bastante, vale? Asi me gusta, con decisin!

La herramienta de control If () Else {} de Php


El funcionamiento de esta herramienta es bastante intuitivo. Usaremos la herramienta de control if else siempre que queramos hacer funcionar una o varias sentencias de cdigo cuando se cumpla una condicin. If significa "si..." y else significa "y si no..." Ya sabes lo que son sentencias de cdigo verdad? Son simplemente lneas de cdigo Php o Html que hacen algo. Y una condicin tambin sabes lo que es, por ejemplo, el que la variable $nota_primer_examen sea mayor que 5. Pues bien, al usar la herramienta if else podramos hacer que se nos mostrara en el navegador el mensaje " Enhorabuena, has aprobado!" si el valor de esa variable es mayor que cinco y "Qu fracaso! Has suspendido!" si el valor es menor que 5. Esto ya es otra cosa verdad? Aunque sigue sin merecer la pena aprender Php para conseguir solo esto, claro. Ms adelante vers como podemos hacer cosas ms interesantes, pero necesitamos estos conocimientos mnimos para alcanzar cosas ms interesantes con Php. Para escribir el cdigo del ejemplo este de las notas, valdra lo siguiente:
<?php echo "<p>Voy a ver mis notas!</p>" ; $nota_primer_examen = 8; if ($nota_primer_examen < 5 ) { echo "<p>Qu fracaso! Has suspendido con un $nota_primer_examen.</p>" ; } else { echo "<p>Enhorabuena, has aprobado con un $nota_primer_examen!</p>" ; } ?>

Ahora que has visto el cdigo vamos a explicarlo paso a paso. Como ves, todo el trozo de cdigo Php lo encerramos entre sus etiquetas de apertura y cierre de Php, como siempre, y usamos echo para mostrar mensajes. La herramienta if else empieza con la palabra if seguida de la condicin que queremos que se cumpla que se pone entre parntesis ( ), es decir,
if (condicin que quiero que se cumpla)

Despus de eso, se coloca lo que quiero que ocurra si se cumple esa condicin, y lo pongo entre corchetes { },
if (condicin que quiero que se cumpla) {lo que quiero que ocurra si se cumple la condicin}

Tras eso, escribimos la segunda palabra mgica, else y seguidamente y entre corchetes { } otra vez, escribimos lo que queremos que ocurra si NO se cumple la condicin que pusimos, es decir,
if (condicin que quiero que se cumpla) {lo que quiero que ocurra si se cumple la condicin} else { y si no se cumple ocurrir esto otro}

Imagino que ahora vers ms claro el cdigo Php del ejemplo que pusimos al principio. Si lees detenidamente vers como lo primero que ocurre es que se muestra en el navegador el mensaje "Voy a ver mis notas!". Despus, el servidor lee la tercera lnea y ve una variable llamada $nota_primer_examen que vale 8. Lo memoriza y sigue leyendo. Seguidamente, se encuentra con la palabra mgica if y busca la condicin entre los parntesis. En nuestro ejemplo pone que el valor de la nota debe ser menor que 5 (el signo < significa menor que). Como el servidor sabe que el 8 no es menor que cinco, decide que la condicin no se ha cumplido y que por tanto debe hacer lo que ponga en el segundo par de corchetes justo detras de else. Entonces lee lo que hay dentro y encuentra el mensaje de enhorabuena y lo muestra en el navegador. A lo que hay dentro del primer par de corchetes no le hace ningn caso, pues la condicin no se cumpla. Adems, como el echo que va a ejecutar est entre comillas dobles sustituir el nombre de la variable de la nota por su valor. Si ahora retocamos el cdigo y ponemos un 2 donde estaba el 8, el servidor mostrar el mensaje de fracaso, pues el 2 es menor que 5. Este ejemplo, aunque creo que ilustra bastante bien cmo funciona la herramienta if else, no nos causa ningn asombro, no es nada del otro mundo la verdad, pues la nota ya la teniamos puesta dentro del cdigo y sabamos cul sera el resultado. Pero pronto aprenderemos a crear formularios y ser entonces cuando sean los propios visitantes los que puedan rellenar sus notas en tu web y ver qu les dice el servidor! No? Tampoco es algo grandioso? Y si en lugar de las notas de clase escriben en el formulario una clave y el servidor les deja entrar en la web? Eso si es grande! Pues esto que acabas de aprender con el if else es la base de eso, as que, vamos por buen camino!!!

La herramienta de control Switch de Php

Esta otra herramienta parecida a la anterior ejecutar un trozo de cdigo u otro segn lo que valga una variable. Vamos a verlo de nuevo con un ejemplo:
<?php switch ( $nota_primer_examen ) { case 0: echo "Imposible estudiar menos." ; break ; case 1: echo "Casi no has abierto el libro." ; break ; case 2: echo "A este paso no vamos bien." ; break ; case 3: echo "Solo estudiaste un da?" ; break ; case 4: echo "Hui! Te falt muy poco!" ; break ; case 5: echo "Bien, aprobaste por los pelos." ; break ; default: echo "Eres un buen estudiante." ; } ?>

Fjate que estas herramientas no terminan con punto y coma, pues no son sentencias. Las sentencias son las que van dentro de sus corchetes y en esas s ponemos punto y coma. Estas herramientas terminan con su corchete y listo. Como puedes adivinar, cuando usamos el switch podemos hacer que el servidor ejecute unas sentencias u otras segn el valor que tenga la variable que pondremos entre los parntesis, en este caso, en funcin de lo que valga $nota_primer_examen. Despus de escribir la palabra mgica switch y colocar entre los parntesis ( ) el nombre de la variable, abrimos unos corchetes { } para escribir dentro todos los casos que queremos tener en cuenta. En el ejemplo se han escrito sentencias para cuando el valor de la nota fuera igual a 0, 1, 2, 3, 4 y 5. Despus de la palabra mgica default podemos an poner lo que queremos que ocurra si el valor de la variable no coincide con ningno de los anteriores, aunque podemos no poner el caso default si definimos lo que queremos que ocurra para cada uno de los casos, para cada valor de la nota, del 0 al 10. Despus de escribir la palabra mgica case, se pone uno de los valores de la nota, luego dos punto y seguidamente la sentencia o sentencias que queremos que se cumplan en ese caso concreto. Al terminar de escribir esas sentencias colocamos, como siempre, el punto y coma y la palabra mgica break, que indica al servidor que ya puede dejar de buscar entre el resto de casos e irse directamente fuera del switch. En este ejemplo si la variable de la nota vale 2, se mostrar en el navegador el mensaje "A este paso no vamos bien", y si por ejemplo la nota es superior a 5 se ir a default y mostrar "Eres un buen estudiante". Esta vez no he colocado las etiquetas Html de comienzo y principio de prrafo dentro de las comillas de cada echo para que veas el cdigo Php ms clarito, pero conviene ponerlo para que el texto aparezca como t deseas.

La herramienta de control While de Php


Con la herramienta while podemos hacer que se ejecute una sentencia o varias mientras que se est cumpliendo la condicin que le digamos. Con esto, en un foro por ejemplo podramos decirle al sevidor que vaya mostrando mensajes mientras que el nmero de

mensajes ya mostrados no sea mayor que 20, para no llenar la pantalla de mensajes quedando demasiado larga. O en ese mismo foro podramos permitir a un usuario fallar X veces antes de decirle que se vaya a buscar su contrasea. Pero se pueden hacer muchas ms cosas, claro. Como hicimos antes, vamos a verlo sobre un ejemplo.
<?php $x = 25 ; $y = 50 ; while ( $x < $y ) { echo "<p>Vamos por el nmero $x.</p>" ; $x = $x + 1 ; } ?>

Al principio del cdigo Php de arriba, hemos creado dos variables, una llamada x que vale 25 y otra llamada y que vale 50. Despus nos encontramos con la palabra mgica while (que podramos traducir como "mientras que...") seguida de una condicin, que el valor de x sea menor que el valor de y. Si se cumple la condicin entonces se ejecuta lo que haya dentro de los corchetes { y }, es decir, las dos lneas siguientes. La primera ya la conoces muy bien. Es un echo que muestra en pantalla el mensaje "Vamos por el nmero 25." La sentencia que va despus es nueva. En esa lnea le decimos al servidor que la variable $x ahora va a valer lo que vala antes ms una unidad, y por tanto ahora su valor ser 26. Como siempre, cerramos la sentencia con un punto y coma y como no queremos hacer nada ms cerramos tambin el corchete. Cuando el servidor llega al corchete regresa de nuevo a leer la condicin. Ve que la variable $x que ahora vale 26 an sigue siendo menor que 50, de modo que ejecuta otra vez esas dos lneas. Muestra el mensaje "Vamos por el nmero 26." y vuelve a sumarle uno a $x, valiendo ahora 27. Todo esto se repite una y otra vez hasta que $x tenga un valor de 50. En ese caso como 50 no es menor que $y, no ejecuta ms las sentencias de dentro de los corchetes y termina el asunto. Se ira a seguir leyendo el resto del programa, es decir, se ira tras el corchete de cierre del While. Si an recuerdas lo que te cont pginas atrs sabrs que si hubiera puesto los valores 25 y 50 entre comillas el servidor las habra interpretado como texto y este trozo de cdigo no funcionara, pues a la palabra 25 no le podemos sumar 1 siendo un texto (solo podemos sumarle si 25 es un nmero). Te habrs dado cuenta que tienes que aprender un par de cosas para poder expresar tus ideas en forma de cdigo Php. Por un lado tienes que aprender a escribir condiciones para poder hacer cosas cuando quieras que una variable sea mayor que otra, o menor, o igual, o mayor o igual, etc, etc. Por otro lado debes aprender a crear funciones. Una funcin es algo que transforma un valor en otro, como la lnea $x = $x + 1. De todas formas, intentaremos explicarlo conforme lo necesitemos.

La herramienta de control For de Php


Esta otra herramienta de control es muy similar a la anterior. Se encarga de repetir una o varias sentencias mientras va creciendo (o decreciendo) el valor de una variable. Esas sentencias se seguirn repitiendo hasta que se cumpla cierta condicin. Lo vemos con otro ejemplo?
<?php for ( $contador = 25 ; $contador < 50 ; $contador = $contador + 1) { echo "<p>Vamos por el nmero $contador.</p>" ; } ?>

Esta otra herramienta hace lo mismo que la anterior escrita con la herramienta while. La forma de escribirla es la siguiente:
for (valor inicial ; mientras que se cumpla esto ; incremento) {cdigo a ejecutar}

Es decir, se escribe primero la palabra mgica for y despus entre parntesis ( ) se colocan tres datos. El primero es lo que queremos que valga al principio la variable que controla las veces que se va a ejecutar esto. Luego se escribe la condicin que se ha de cumplir para seguir ejecutanto el cdigo de los corchetes. Despus se escribe cunto quiero que aumente la variable de control cada paso. Estas tres cosas como ves hay que separarlas con punto y coma entre ellas ($contador=25 ; $contador<50 ; $contador=$contador+1). En el caso del ejemplo, el servidor se encuentra con la palabra mgica for y busca esos tres datos dentro de los parntesis. Encuentra que la variable $contador vale 25. Luego lee que tiene que ejecutar el cdigo de los corchetes mientras que esa variable sea menor que 50 y finalmente lee que cada vuelta que se d tiene que sumarle 1 a la variable de control $contador. La primera vez $contador vale 25, y como es menor que 50 se muestra en pantalla el mensaje "Vamos por el nmero 25.". Enseguida el servidor le da a $contador el valor 26 (le suma uno), muestra "Vamos por el nmero 26" y vuelve a sumarle uno a la variable de control. As hasta que $contador tenga un valor de 50. En ese momento como $contador NO es menor que 50 (sino igual) deja de ejecutar el cdigo y termina. Complicado? No, verdad? Pues con esto terminamos por el momento de ver herramientas de control de variables, vale? Esto es suficiente para seguir avanzando en nuestro camino. Pasamos a otra cosa ms interesante y ya ampliaremos cuando nos haga falta. Ya eres casi una mquina de programar!

Las Bases de Datos


Para hacerte una idea de lo que es una base de datos, imagnate una tabla. No, no una tabla de madera no, me refiero a algo como esto:
Columna 1 dato 1 Columna 2 dato 2 Columna 3 dato 3

Fila 1

Fila 2 Fila 3 Fila 4

dato 4 dato 7 dato 10

dato 5 dato 8 dato 11

dato 6 dato 9 dato 12

Esto de arriba es una tabla de datos. Solo tiene dos caractersticas y son el disponer de unas cuantas filas (4 en el ejemplo) y unas cuantas columnas (3 en este caso). Una fila es toda una lnea de datos horizontal mientras que una columna es lo mismo pero en vertical. Recuerda las columnas romanas, que siempre van de arriba a abajo (bueno hay algunas en ruinas que se han caido, pero esas no cuentan...). Estos inventos nos van a servir para guardar datos y usarlos ms tarde. Estos datos pueden haber sido colocados por nosotros mismos o bien podemos dejar a los visitantes (quizs solo a los registrados o quizs a todo el mundo que quiera) que aadan datos a nuestra tabla. Imagina por ejemplo que a partir de un formulario pedimos a los visitantes sus datos personales. Una buena forma de guardarlos es usando una tabla como esta. Cules seran los datos personales que nos pueden interesar? Seguramente su nombre, apellido, direccin e-mail, direccin de pgina web y si est registrado o no. En una tabla de datos, las columnas representan cada uno de los datos que pediremos a los visitantes, mientras que en cada fila se almacenan todos los datos de un visitante en concreto. La tabla del ejemplo, vacia, sera como esta:
Id nombre apellido direccin email direccin web Est registrado?

En la primera columna se suele guardar el nmero de la fila. Se suele llamar esta columna Id, de identificador. Si ahora a travs de por ejemplo un formulario un par de visitantes introducen sus datos, la tabla quedara por ejemplo as:
Id nombre apellido 1 2 Ana Juan Est registrado? Lopez analopez@webmail.com www.analopez.com si Garcia juangarcia@webmail.com www.juangarcia.com no direccin email direccin web

Una tabla de datos tiene un nmero concreto de columnas (aunque siempre podemos aadir o quitar las que queramos) pero no tiene un nmero definido de filas. Estas van aumentando conforme los visitantes vayan introduciendo datos y ms datos. Una vez que tenemos una tabla con datos, podemos hacer bastantes operaciones para obtener la informacin que deseamos en cada momento. Por ejemplo podramos hacer que ordenara la tabla por orden alfabetico de los nombres, o que solo mostrara a todos los Juanes, o nos enseara las direcciones de pginas web que terminen en .com, etc, etc, etc. Tambin, a travs de cdigos Php podramos hacer llegar un E-Mail a los visitantes registrados, o una invitacin de registro a los no registrados. De nuevo el lmite de aplicaciones de tablas de datos los marca tu imaginacin. Tienes? Pues entonces no tendremos problemas! je je je.

En las pginas siguientes vamos a aprender a crear una base de datos en nuestro servidor, a crear tablas, definir sus datos y a llenarla de datos procedentes de formularios, etc. Y para terminar, cuando controlemos todo eso empezaremos a jugar con todos esos datos para crear aplicaciones interesantes para nuestras pginas web.

PhpMyAdmin
El Phpmyadmin es un programa que suele estar instalado en los servidores decentes y que nos ayuda a crear y modificar bases de datos e incluso consultar, aadir, modificar o eliminar los datos guardados en ellas con mucha facilidad. No todos los servidores gratuitos disponen de este programa, de hecho algunos no te ofrecen ni siquiera una base de datos, con lo cul no te hara falta el Phpmyadmin, claro. Pero cada da que pasa son ms lo que ya lo estn ofreciendo. En cuanto a los servidores de pago, casi todos te ofrecen algunas bases de datos para usar y acceso al Phpmyadmin. En la seccin Hosting y Dominios de CCTW puedes ver algunos servicios de hosting que s te ofrecen todo esto. En cualquier caso, puedes consultar con tu hosting actual si dispones estas cosas. Para acceder al Phpmyadmin has de entrar primero al panel de control de tu servicio de hosting. Con suerte el panel ser del tipo Cpanel que es el que vamos a explicar en CCTW. De todas formas, si es otro distinto no variar mucho y te servirn igual todas estas explicaciones. El Phpmyadmin es el mismo sea cual sea el panel de control del hosting. Para acceder entonces al Phpmyadmin hay que entrar antes al panel de control de tu servidor. Normalmente puedes acceder a tu panel de control Cpanel escribiendo la direccin de tu web seguida de /cpanel. Si lo escribes en tu navegador te aparecer una ventana preguntndote el nombre de usuario y la contrasea de tu hosting.

Si has adivinado tu contrasea entrars a tu Cpanel y vers a la derecha un montn de iconos. Busca y haz clic en el que te sealo aqu debajo:

Al hacer clic all te aparezca otra pantalla del Cpanel desde la que puedes crear una base de datos y un usuario con clave para acceder a la misma. La pantalla es esta:

Escribe ese nombre para la base de datos y pulsa sen "Create Database". Tras unos segundos Cpanel te comunica que la base de datos ha sido creada con este mensaje:

Ya est creada nuestra primera base de datos para hacer pruebas. Si en la misma ventana que tenemos arriba pulsamos en "Go Back" que significa "volver" y nos encontramos con esto:

He sealado con un crculo rojo el nombre de la base de datos recien creada. Como ves, su nombre completo est formado por el nombre de usuario que tienes para acceder al panel de control seguido de un guin bajo y despus el nombre que le diste a la base de datos hace unos segundos. Recuerda esto cuando en alguna parte te pidan dar el nombre de la base de datos pues no es solo el que t pusiste sino que va precedido del nombre de usuario del panel de control ms el guin bajo. Otra cosa de la que me acabo de dar cuenta. No te molestes en colocar guiones bajos pues se los salta y coloca las palabras juntas. Tras unas pruebas he visto tambin que si dejas un espacio en blanco no hace caso de lo que hay detrs de este. As que escribe el nombre de la base de datos todo junto y sin guiones y listo. Justo al lado derecho del crculo rojo tienes una opcin (Delete) para borrar la base de datos con todo su contenido (ahora mismo no tiene contenido), la opcin de chequearla (Check) y la opcin de reparala (Repair). Debajo de todo eso vuelves a tener el recuadro anterior por si quieres crear otra base de datos ms. Ms abajo an tenemos ms opciones. La siguiente nos permite crear usuarios para acceder (no al panel de control del hosting sino) a la base de datos que le indiquemos ms tarde. Ah por el momento solo creamos usuarios y ms tarde indicamos qu usuarios pueden acceder a qu bases de datos. Vamos a crear ahora un usuario. Para ello es suficiente con escribir el nombre de usuario y la contrasea en este recuadro de abajo:

Para no hacerte un lo, ms te vale que te vayas apuntando en un papelito tu nombre de usuario y contrasea de tu panel de control y por otro lado el nombre de usuario y contrasea para esta base de datos. De lo contrario quizs se te olvide. Como siempre, el nombre de usuarios no tendra smbolos raros ni acentos ni maysculas ni espacios en blanco ni guiones, para evitar problemas.

Una vez que pulsas "Create User" que significa "Crear Usuario" te aparece una pantalla de confirmacin como esta:

Ale, usuario creado. Despus de pulsar de nuevo en "Go Back", que ya sabes lo que significa, vers como aparece el usuario... pero... anda! Igual que ocurre con la base de datos, al usuario se le antepone tambin el nombre de usuario del panel de control seguido de un guin bajo. Recurdalo vale? En este ejemplo por tanto el usuario creado tiene el nombre cartago_pepe. Pasamos a la tercera parte. Ahora hay que decir qu usuario puede acceder a qu base de datos y qu poderes va a tener sobre ella. Ahora mismo esto no tiene mucho sentido, pues solo tenemos una base de datos y un solo usuario, pero cuando tienes varias bases y usuarios tiene su sentido. Esto se hace en la siguiente ventana de aqu abajo:

Esto es fcil tambin, donde pone "user" eliges el usuario (solo tienes uno, te ser fcil saber cul escoger, no?), donde pone "database" escoges la base de datos a la que quieres que pueda acceder ese usuario y debajo te aparecen todas las cosas que le dejas hacer, los permisos que va a tener. Normalmente este usuario es para t, por lo que te puedes y debes dar todos los poderes. Y como en ingls todo se escribe "All", marcas esa casilla y listo, es como si hubieras marcado todas las de la derecha. Quizs en un futuro quieras crear otro usuario para que acceda un amigo, o un visitante. En ese caso puedes volver a hacer lo mismo pero limitando los permisos, marcndo solo lo que le dejas hacer en la parte de la izquierda, donde estn todas esas opciones. Te

comento rpidamente lo que significa cada una, pero no creo que lo uses, al menos por ahora. Select es para seleccionar datos solamente, insert para insertar datos en la base de datos, update para cambiar el valor de los datos, delete para elimimar, create permite crear tablas, drop creo que vaciarlas, lock bloquearlas y el resto.... an no lo se... ;( para qu te voy a engaar, no? Tras activar la casilla de All haz clic en "Add User To Database" que significa "Asociar al usuario a la base de datos" y listo, todo preparado para continuar.

Conectar con la Base de Datos


Este punto es muy interesante tanto para seguir con las explicaciones como para alguna vez instalar un foro en tu servidor tipo PhpBB, SMF, vBulletin, o cualquier otro de esos que vienen hechos, o para instalar un blog, o un albm de fotos, o cualquier aplicacin que te pida tener una base de datos activa, as que, presta atencin. Los datos que tienes ahora para acceder a la base de datos son los siguientes:
Nombre de la base de datos: nombredeusuariodelpaneldecontrol_nombredelabasededatos Nombre de usuario de la base de datos: nombredeusuariodelpaneldecontrol_nombredeusuariodelabasededatos Contrasea: la que has puesto, tal cul (esto no va con el nombre de usuario delante). Host: localhost (el 95% de las veces vale con poner localhost

Si alguna vez instalas algn programa en tu hosting o servidor y te pide tener una base de datos, estos son los datos que has de darle, vale? En el caso del ejemplo que os he puesto estos datos seran:
Nombre de la base de datos: cartago_basedepruebas Nombre de usuario de la base de datos: cartago_pepe Contrasea: noteladigo Host: localhost

Potrebbero piacerti anche