Está en la página 1de 56

Cómo hacer un registro de usuarios en PHP

Publicado por XabaducerrarAutor: XabaduNombre: Fernando Larrañaga


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 extraño para Xabadu.
Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación 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 incursión en la 3a
división 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 más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al
retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.Ver sus
tutoriales (176) en PHP el 18 junio 2008 | 78 Comentarios
¡Extraído de Como Lo Hago!

Continuando con nuestros tutoriales de Diseño 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 enseñaremos a añadir 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 dinámicos ni manipulación
de bases de datos, ya que veremos todo el código correspondiente en detalle.

Como siempre, más información después del salto.

Cómo 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
versión de evaluación aquí).
 Un servidor que soporte y ejecute archivos PHP. Para esto tienen 2 opciones: Pueden instalar
algún software que contenga un servidor estilo Apache (Como Wamp o Xampp) o buscar algún
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 algún alojamiento gratis que ofrezca la
funcionalidad.
Sin más 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. username ===> varchar (10) ===> primary key


2. clave ===> varchar(10)
3. email ===> varchar(30)
4. nombre ===> varchar(50)

Eventualmente pueden definir los campos que Uds. estimen convenientes (por ejemplo Sitio Web, Pais
de ubicación, etc), dependiendo de la información que quieran recolectar de cada usuario.

2.- A continuación comenzaremos con el diseño de nuestro registro de usuarios. Primero que todo,
crearemos una página HTML donde tendremos nuestro formulario de registro. A esta página 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 máximo de caracteres de 10 en la opción


“Max Chars” (o el número de largo que uds. quieran, fijandose siempre en no superar el
máximo que definimos en el campo correspondiente de la base de datos) y como nombre de
campo le pondremos “username”.
2. Contraseña: A este campo también le pondremos un máximo de caracteres de 10 en la opción
“Max Chars” (también pueden fijarlo según 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 contraseña: Este campo tendrá las mismas características que el anterior, excepto
que el nombre lo fijaremos como “confirmar”.
4. Correo electrónico: Aquí fijaremos un máximo de caracteres de 30 (o el que uds. decidan), y
le pondremos de nombre “email”.
5. Nombre completo: Este campo lo fijaremos de un máximo de caracteres de 50 y le pondremos
de nombre “nombre”.

Y como siempre, los clásicos botones “Enviar” y “Limpiar datos”.

El “Action” de este formulario (página a la que se dirigirá al hacer click en el botón “Enviar”) lo
dejaremos fijado a “agregar.php”

3.- Con nuestra base de datos y formulario listos, ahora podemos concentrarnos en el código para
registrar al usuario. Para esto crearemos una página 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 contraseña sea igual en los 2 campos donde se ingresaron.
4. Registraremos al usuario en nuestra base de datos.
Para esto, insertaremos el siguiente código después de la etiqueta <BODY>. La explicación del
código, 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
“atrás”;?></a><?
$error=1;
}

/* Básicamente lo que hacemos aquí es controlar mediante una sentencia “if” que todas las
variables contengan información. Por eso preguntamos si alguna de ellas esta vacía (separando por
el equivalente a ó que es || ) que muestre el mensaje de que faltan datos y le muestre el vínculo para
volver al formulario. Además, marcamos nuestra variable $error con un 1 . */

if($clave!=$confirmar)

echo “Las contraseñas ingresadas no son iguales.<br> Por favor vuelva “; ?> <a
href=”registro.html”><? echo “atrás”;?></a><?
$error=1;
}

/* A continuación comprobamos que las contraseñas ingresadas en el formulario, o bien la


contraseña y la confirmación sean iguales. Dentro de nuestro “if” preguntamos si son distintas
(mediante != ) y si es el caso, mostramos el mensaje que las contraseñas no son iguales y
desplegamos el vínculo para volver el formulario. Además, marcamos la variable $error con un 1 .
*/

else

{
$conexion=mysql_connect(“URL del host”,”usuario”,”contraseña”)
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 código se ingresará si los datos del usuario han pasado todas las validaciones
anteriores. Lo primero que haremos es establecer una conexión a nuestra base de datos, primero
definiendo una variable llamada $conexion y almacenando dentro de ella el resultado de la
conexión a la BD mediante la función 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
contraseña que utilizamos para ingresar. Luego seleccionamos la base de datos mediante la función
mysql_select_db a la cual le proporcionamos los parametros correspondientes al nombre de la base
de datos y los datos de la conexión (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 algún usuario que ya tenga el nombre de usuario que se
seleccionó ahora. De esta forma veremos si ya existe algún usuario con esos datos. Finalmente,
ejecutamos la consulta mediante la función 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 función mysql_affected_rows (dandole de parametro el resultado de la consulta)


averiguaremos si hubo alguna fila afectada por la consulta recién realizada (la consulta SELECT
que buscaba la existencia del usuario), en caso de que la función sea igual a 0 significa que no
hubo coincidencias por lo que el nombre de usuario se encuentra libre y podemos proceder a añadir
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 ningún problema con la ejecución de la consulta.
Al poner !$resultado le preguntamos a la BD si no fue posible obtener un resultado en la ejecución
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 ejecución */

else

$error=2;

/* El else por supuesto corresponde a que no hubo problemas en la ejecución de la consulta, por lo
que marcamos nuestra variable $error con un 2 el cual validaremos más tarde para desplegar un
mensaje de éxito */

else

echo “El nombre de usuario ya existe.<br> Por favor vuelva “; ?> <a href=”registro.html”><? echo
“atrás”;?></a><?

$error=1;

/* Este else corresponde al if que utilizamos con la función 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 vínculo 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 razón: En caso de que quisieran seguir ejecutando código PHP más adelante en la
misma página, si hicieramos un exit, este código no se ejecutaría y la página quedaría muerta
en el punto que utilizamos el exit().
2. Si lo desean, antes de insertar los datos en la BD, pueden encriptar la contraseña con alguno de
los métodos 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 contraseña encriptada. Recuerden eso sí, que en caso de encriptar la
contraseña, deben tener esto presente al momento de realizar autentificación, ya sea
decodificando la clave almacenada en la BD antes de comparar, o codificando la contraseña
ingresada en la autentificación antes de validar. Si desean saber el método más efectivo, uno de
los que está teniendo más aceptación en estos momentos entre los desarrolladores es Base64,
pero en el fondo todos tienen sus virtudes y defectos.
3. Los códigos correspondientes a los “or die” pueden personalizarlos con mensajes más
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 información 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 básico en término de validaciones. Hay algunos scripts que pueden
encontrar en la Web (principalmente en Javascript) los cuales les permitirán hacer validaciones
más extensivas, especialmente con respecto a validar la dirección de correo electrónico de sus
usuarios. La intención principal es enseñar como funciona el proceso para que después Uds.
puedan ir probando las modificaciones que les parezcan pertinentes.

Y con esto damos término a este nuevo tutorial de PHP donde les enseñamos 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 garantía.
Sistema de registro de usuarios PHP

Hola, en este tutorial les enseñaré 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 código:

<?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 contraseña, que normalmente no hay')or die ('Ha fallado
la conexión 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 pequeño
<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 contraseñas?
if($password!=$password2) {
echo "Las contraseñas no coinciden";
formRegistro();
}else{
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
$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','Contraseña')or die ('Ha fallado la
conexión: '.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
automáticamente 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 código:
<?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 próxima....

 Autor: Chochex
[/PHP]

Mich Buchanan 4/02/2004


ingresar.php:
[PHP]< ?php
// Inicio de sessión
session_start();

// Servidor de la Base de Datos


$servidorBD=”";
// Usuario de la Base de Datos
$usuarioBD=”";
// Contraseña 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 más 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);
//También las de sesión
$_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 sessión
session_start();
// Servidor de la Base de Datos
$servidorBD=”";
// Usuario de la Base de Datos
$usuarioBD=”";
// Contraseña 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 sessión
session_start();

// Servidor de la Base de Datos


$servidorBD=”";
// Usuario de la Base de Datos
$usuarioBD=”";
// Contraseña 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 sesión
session_destroy();
?>

[/PHP]

y el fichero tabla.sql para importar con phpmyadmin o como queráis :


[PHP]# phpMyAdmin SQL Dump
# version 2.5.5-pl1
# http://www.phpmyadmin.net
#
# Servidor: vigilantes.no-ip.com
# Tiempo de generación: 05-02-2004 a las 02:52:30
# Versión del servidor: 4.0.17
# Versión 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 básicamente la que viene en el tutorial, pero un poco modificada, bueno, espero que no
os moleste que no la explique mucho, si tenéis alguna duda ya sabéis preguntadme lo que queráis y
todos los fallos que le encontréis 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 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.
PHP

Ingresar codigo PHP

No tienes miedo aún? Con la que te viene encima, madre mía...je je je. Pues vamos a
escribir nuestro primer cacho de código Php en una página web de prueba, vale? Esto nos
servirá para repetir un poco algunas de las explicaciones anteriores para que aún te queden
más claras.

Cuando se inserta un trozo de código Php dentro de una página con código Html es
necesario indicar al servidor que esas líneas tan raras son código Php. De lo contrario
pensaría que sigue siendo Html o que estamos un poco borrachos, je je.

Al igual que cuando se escribe un párrafo en Html se encerraba este entre las etiquetas
<p> y </p>, cuando nos interese insertar código Php entre el código Html de una de
nuestras páginas usaremos las etiquetas <?php al principio y ?> al final.

<html>
<head>
<title>Mi quinta página 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 código Html de arriba representa una página puramente hecha con Html, más bien
simplificada pero que nos vale para ver cómo 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 típico mensaje de "Hola Mundo!" que me da un poco de
angustia usarlo yo también así que.... seamos originales.

Aplicando lo dicho un par de párrafos más arriba, vamos a introducir un bloque vacio de
código Php. Para ello colocamos los símbolos que indican inicio y fín de código Php y no
pondremos, por ahora, nada dentro. Quedaría así:

<html>
<head>
<title>Mi quinta página 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 básicas del Php.
Ojo!: El código php solo puede ser ejecutado por el servidor en páginas con extensión
.php, a menos que le indiquemos al servidor que ejecute php también en páginas con
extensión .html. En breve os enseñare a hacer que los servidores puedan ejecutar ese
código php en paginas con extensión .html, oki?

Recuerda lo comentado antes. Si guardas un archivo con ese código dentro con extensión
.php e intentas hacer vista previa no conseguirás ver lo que hace la parte de código de Php
a no ser que tengas el Php instalado en tu ordenador (a no ser que tu ordenador esté
funcionando como servidor). Lo más cómodo es subir ese archivo a tu servidor y hacer la
vista previa allí. Es decir, lo subes y visitas su dirección para ver el resultado, que sería
algo así. (este lo puedes ver por que está en un servidor con php, claro).

Deja también que te recuerde que si haces clic en el enlace anterior para ver el
resultado y accedes a su código Html, no verás nada del código Php, sino solo sus
resultados ya en Html. Ya sabes por qué, no? Como te decía al principio el Php lo lee el
servidor, lo ejecuta y manda el resutado al navegador, pero se queda el código Php. Poco a
poco lo vamos entendiendo todo, no? Dime que sí! je je je.

Mostrar texto en Php en la página web


A partir de ahora llamaremos sentencia a las ordenes que demos en Php, oki? Una de las
sentencias que más usaremos en Php es la que ordena que se muestre un contenido en la
página web. Esa sentencia se llama echo y se usa escribiéndola 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 más, todas las
sentencias terminan en un punto y coma ; Si no se coloca nos dará un error.

Si añades esa línea, perdón, esa sentencia ;) el código anterior nos quedaría así:

<html>
<head>
<title>Mi quinta página 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 página


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 código Html no verás las líneas de Php que habíamos escrito, sino que
verás solo el Html que el servidor ha traducido a partir del código con Php, es decir, verías
esto:

<html>
<head>
<title>Mi quinta página 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 código Html lo que
hay dentro de las dobles comillas. No es mucho, pero para ser nuestro primer día con
Php.... no? Espero que esto no te defraude, es solo un principio muy muy básico, je je je.

Como a nosotros nos gusta tener nuestro código Html bien limpito y bien estructurado,
vamos a incluir dentro de esas dobles comillas las etiquetas <p> y </p>, no? Así el código
de nuestra página php sería este:

<html>
<head>
<title>Mi quinta página 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 sería en ese caso este otro:

<html>
<head>
<title>Mi quinta página 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 párrafo, como tiene que ser.
Usando las primeras variables php en la página web
La sentencia anterior no nos parece ni mucho menos extraordinaria, pues es algo que ya
sabíamos hacer usando solo Html, pero verás como más adelante la usas un montón de
veces y de modos más 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 término 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 números, letras,
palabras o incluso otras variables. Lo veremos más adelante.

Los nombres que le damos a las variables deberían tener algún 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. Quizás 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 símbolo del dolar. Buen símbolo verdad? je je je.

- Justo después del símbolo dolar no puedes poner un número. Tras el dolar solo se
puede poner una letra mayúscula o minúscula. En realidad se pueden usar algunos símbolos
más, pero para no liarnos nos limitamos a esto,letras y números si estos no están justo tras
el dolar. Cuando seas profesional podrás usar algún símbolo más, je je je.

Según esto, NO serían válidas estas variables:

 variable (no tiene el símbolo de dolar)


 $5direccion (no puede empezar con un número)
 $matrícula (sabes que odio los acentos... php también, je je je)
 $nota de matematicas (No! no pongas espacios en blanco!!!)
 $nota-de-matematicas (usa mejor guiones bajos para... evitar_problemas)

Pero SÍ valdrían 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 número de una o varias cifras, una letra o palabra o incluso otra variable (en ese caso la
variable valdría lo que valga la otra variable, claro).
Para usar una variable dentro de una página web lo primero que tenemos que hacer es
colocar las etiquetas de apertura y cierre de código Php y después indicar la variable a usar
y el valor que queremos que tenga. Por ejemplo,así:

<html>
<head>
<title>Mi quinta página 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
habitación y ve lo que estás 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 página web bien sencillita, con un párrafo en Html, otro en Php y una
variable definida que... que no usamos para nada, aún

Comentarios y Notas dentro del Código Php


Recuerdas como en Html podíamos añadir comentarios dentro del código para guiarnos
un poco? Pues en Php también podemos hacerlo. Eso sí, al ser lenguajes distintos el código
que indica comentarios también es diferente.

Dentro del código Php, es decir, entre las etiquetas de apertura y cierre de Php,
podemos escribir comentarios nuestros (simples notas que no afectan en nada) sin más que
añadir antes de la nota el símbolo # o dos barras como estas //. A partir de esos símbolos
el resto de la línea de código no es leida por el servidor (recuerda que al navegador no le
llega el código Php sino su resultado tras ser ejecutado por el servidor).

Si usas esos símbolos no tienes que usar símbolo de cierre de comentario, pues el
servidor deja de leer toda la línea de código a partír de ese signo hasta el final de esa
línea.

Los siguientes son ejemplos de comentarios, usados sobre la página de ejemplo que
estabamos creando:

<html>
<head>
<title>Mi quinta página 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 línea da valor a una variable
###################################
#También puedo poner esta tonteria
###################################
?>
</body>
</html>

Mostrar el valor de una variable Php en una página web


Ahora que tenemos una variable con un valor asignado ($miprimeravariable = "sorpresa"),
vamos a ver cómo conseguir que aparezca en la página web ese valor. Esto lo vamos a
hacer con la función echo que vimos antes. Esto es bastante sencillo, basta con colocar
después 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 código 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 ningún lado. Para conseguir que sorpresa quede entre esas
etiquetas tenemos dos opciones. La primera es colocar las etiquetas de apertura y cierre
de párrafo dentro del valor de $miprimeravariable, pero no es la mejor opción. Me gusta
más 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>" ;
?>

Verás como para mostrar en la pantalla solamente el valor de una variable podemos
escribir echo seguido simplemente de la variable, con su símbolo de dolar, claro, pero sin
las comillas dobles. En cambio si queremos mostrar en pantalla algo más que el valor de
una variable necesitamos encerrar todo el contenido a mostrar entre comillas dobles " (no
simples '). Más adelante veremos la diferencia entre usar comillas simples y dobles.

Dentro de esas comillas, simples o dobles, se puede insertar código Html. Así, cuando el
servidor traduzca el código Php devolverá al navegador del visitante lo que haya dentro de
las comillas, es decir código 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>" ;

Fíjate en varias cosas en este ejemplo que te servirán 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 código Html de la web, coloco ya las
etiquetas de párrafo, <p> y </p>.

- Como he puesto comillas puedo insertar más cosas además del nombre de la variable,
es decir, las etiquetas Html de párrafo y un poco de texto.

- El nombre de la variable a mostrar lo pongo con su símbolo de dolar ($).

- Como toda sentencia, la termino con un punto y coma ;

El resultado de esa sentencia Php mostraría en la pantalla del navegador del visitante
esta línea:

El valor de mi primera variable es sorpresa.

Pero qué ocurre si ahora quiero que la palabra sorpresa de la línea de arriba aparezca
entre comillas? A primera vista podría 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 código 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 símbolos que se escriben correctamente también 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 señalar ciertos carácteres para evitar que los interprete el navegador de
un modo que no deseamos se suele llamar "escape de símbolos", por si queréis buscarlo en
Google.

El código anterior escrito correctamente sería:

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 cuál), y con su símbolo dolar al
principio, como si se tratara de un texto más.

La sentencia anterior al estar escrita con comillas dobles mostaría 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>' ;

mostraría esto otro:

El valor de mi primera variable es $miprimeravariable.

Esta diferencia es muy importante, pues usaremos uno u otro tipo de comillas según
queramos que las variables sean o no sustituidas por sus valores correspondientes.
Recuérdalo 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
números, las variables contienen letras o palabras también estará bien poder jugar con
ellas quitándoles letras, poniendo en mayúsculas las minúsculas, 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 servirán más
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 cómo se hacen estas
operaciones en Php.

Suma de variables en Php


No te asustes. El título parece un poco técnico (cosa que sabes que odio) pero realmente
no es más que sumar dos variables que tienen números 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, más hubiera querido yo, ja ja ja.

Apúntate que para dar valores numéricos a una variable no se le ponen comillas de
ningún tipo. Solo se ponen comillas al dar valores a una variable si se trata de textos
(letras) o si se trata de números pero queremos tratarlos como un carácter más, 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 opción de declarar esos valores como texto (un número también
puede ser un texto, no?). Fíjate 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 exámenes, 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 añadirlas


para insertar dentro del echo algún 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 quedaría así:

echo "La suma de mis dos notas es $nota_primer_examen + $nota_segundo_examen." ;

Tenemos aún otra opción 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
verás mejor....

$resultado = $nota_primer_examen + $nota_segundo_examen ;


echo "La suma de mis dos notas es $resultado" ;

Quizás todo esto del Php te esté pareciendo un rollo tremendo... pero aguanta un poco
más y empezarás a verle la gracia, de verdad. Lo que ocurre es que antes de entrar a fondo
hay que saber algunas cosas básicas 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 sección
de formularios y a las bases de datos todo esto tendrá bastante sentido. Te fe! y paciencia!

Además 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 enseñarte unas cuantas herramientas bastante más potentes.
Herramientas de Control Php
Sí, ya, ya, se que no te gustan los términos técnicos, a mí tampoco pero te prometo que
el nombre real es aún más feo. Las herramientas de control de variables nos permiten
hacer algo si se cumple la condición que indiquemos.

Por ejemplo, podemos hacer que una frase se muestre 20 veces una detrás de la otra, o
que se vean en pantalla los números del 20 al 30, o mostrar un mensaje al visitante si es
por la mañana, otro si es por la tarde y otro distinto si es de noche, o podemos hacer cosas
más 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 días de forma automática.... todo esto y mucho más se
consigue dominando estas herramientas de control. Las más usadas son solo cuatro o cinco
y una vez entiendes una se comprenden bien las demás, así que vamos a aprender a usar
esas cuatro o cinco y podremos avanzar bastante, vale? Asi me gusta, con decisión!

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 código
cuando se cumpla una condición. If significa "si..." y else significa "y si no..."

Ya sabes lo que son sentencias de código verdad? Son simplemente líneas de código Php o
Html que hacen algo. Y una condición también 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
podríamos 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. Más adelante verás como podemos hacer cosas más interesantes,
pero necesitamos estos conocimientos mínimos para alcanzar cosas más interesantes con
Php.

Para escribir el código del ejemplo este de las notas, valdría 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 código vamos a explicarlo paso a paso. Como ves, todo el trozo de
código 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 condición que queremos que se cumpla que se pone entre paréntesis ( ), es
decir,

if (condición que quiero que se cumpla)

Después de eso, se coloca lo que quiero que ocurra si se cumple esa condición, y lo
pongo entre corchetes { },

if (condición que quiero que se cumpla) {lo que quiero que ocurra si se cumple la condición}

Tras eso, escribimos la segunda palabra mágica, else y seguidamente y entre corchetes {
} otra vez, escribimos lo que queremos que ocurra si NO se cumple la condición que
pusimos, es decir,

if (condición que quiero que se cumpla) {lo que quiero que ocurra si se cumple la condición}
else { y si no se cumple ocurrirá esto otro}

Imagino que ahora verás más claro el código Php del ejemplo que pusimos al principio. Si
lees detenidamente verás como lo primero que ocurre es que se muestra en el navegador
el mensaje "Voy a ver mis notas!". Después, el servidor lee la tercera línea y ve una
variable llamada $nota_primer_examen que vale 8. Lo memoriza y sigue leyendo.

Seguidamente, se encuentra con la palabra mágica if y busca la condición entre los


paréntesis. 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 condición 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 ningún caso, pues la condición no se cumplía. Además, 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 código 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 cómo funciona la herramienta if
else, no nos causa ningún asombro, no es nada del otro mundo la verdad, pues la nota ya la
teniamos puesta dentro del código y sabíamos cuál sería 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 código u otro según 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 día?" ; 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." ;
}
?>

Fíjate 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 según el valor que tenga la variable que pondremos entre los
paréntesis, en este caso, en función de lo que valga $nota_primer_examen.

Después de escribir la palabra mágica switch y colocar entre los paréntesis ( ) 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. Después de la palabra mágica default podemos aún
poner lo que queremos que ocurra si el valor de la variable no coincide con ningúno 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.

Después de escribir la palabra mágica 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 mágica 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 párrafo dentro de
las comillas de cada echo para que veas el código Php más 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 condición que le digamos. Con esto, en un foro por ejemplo
podríamos decirle al sevidor que vaya mostrando mensajes mientras que el número de
mensajes ya mostrados no sea mayor que 20, para no llenar la pantalla de mensajes
quedando demasiado larga. O en ese mismo foro podríamos permitir a un usuario fallar X
veces antes de decirle que se vaya a buscar su contraseña. Pero se pueden hacer muchas
más cosas, claro.

Como hicimos antes, vamos a verlo sobre un ejemplo.

<?php
$x = 25 ;
$y = 50 ;
while ( $x < $y )
{
echo "<p>Vamos por el número $x.</p>" ;
$x = $x + 1 ;
}
?>

Al principio del código Php de arriba, hemos creado dos variables, una llamada x que
vale 25 y otra llamada y que vale 50. Después nos encontramos con la palabra mágica while
(que podríamos traducir como "mientras que...") seguida de una condición, que el valor de
x sea menor que el valor de y.

Si se cumple la condición entonces se ejecuta lo que haya dentro de los corchetes { y },


es decir, las dos líneas siguientes. La primera ya la conoces muy bien. Es un echo que
muestra en pantalla el mensaje "Vamos por el número 25."

La sentencia que va después es nueva. En esa línea le decimos al servidor que la variable
$x ahora va a valer lo que valía antes más 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
más cerramos también el corchete.

Cuando el servidor llega al corchete regresa de nuevo a leer la condición. Ve que la


variable $x que ahora vale 26 aún sigue siendo menor que 50, de modo que ejecuta otra
vez esas dos líneas. Muestra el mensaje "Vamos por el número 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 más las sentencias de dentro de los corchetes y termina
el asunto. Se iría a seguir leyendo el resto del programa, es decir, se iría tras el corchete
de cierre del While.

Si aún recuerdas lo que te conté páginas atrás sabrás que si hubiera puesto los valores 25
y 50 entre comillas el servidor las habría interpretado como texto y este trozo de código no
funcionaría, pues a la palabra 25 no le podemos sumar 1 siendo un texto (solo podemos
sumarle si 25 es un número).

Te habrás dado cuenta que tienes que aprender un par de cosas para poder expresar tus
ideas en forma de código 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 función es
algo que transforma un valor en otro, como la línea $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 seguirán repitiendo hasta que se cumpla cierta condición. Lo vemos con otro
ejemplo?

<?php
for ( $contador = 25 ; $contador < 50 ; $contador = $contador + 1)
{
echo "<p>Vamos por el número $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) {código a ejecutar}

Es decir, se escribe primero la palabra mágica for y después entre paréntesis ( ) 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 condición que se ha de
cumplir para seguir ejecutanto el código de los corchetes. Después se escribe cuánto
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 mágica for y busca esos
tres datos dentro de los paréntesis. Encuentra que la variable $contador vale 25. Luego lee
que tiene que ejecutar el código 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 número 25.". Enseguida el servidor le da a $contador el valor 26
(le suma uno), muestra "Vamos por el número 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 código 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 más
interesante y ya ampliaremos cuando nos haga falta. Ya eres casi una máquina de
programar!

Las Bases de Datos


Para hacerte una idea de lo que es una base de datos, imagínate una tabla. No, no una
tabla de madera no, me refiero a algo como esto:

Columna 1 Columna 2 Columna 3


Fila 1 dato 1 dato 2 dato 3
Fila 2 dato 4 dato 5 dato 6
Fila 3 dato 7 dato 8 dato 9
Fila 4 dato 10 dato 11 dato 12

Esto de arriba es una tabla de datos. Solo tiene dos características 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 línea 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 más tarde. Estos datos
pueden haber sido colocados por nosotros mismos o bien podemos dejar a los visitantes
(quizás solo a los registrados o quizás a todo el mundo que quiera) que añadan 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. Cuáles serían
los datos personales que nos pueden interesar? Seguramente su nombre, apellido, dirección
e-mail, dirección de página 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, sería como esta:

Id nombre apellido dirección email dirección web Está registrado?

En la primera columna se suele guardar el número de la fila. Se suele llamar esta


columna Id, de identificador. Si ahora a través de por ejemplo un formulario un par de
visitantes introducen sus datos, la tabla quedaría por ejemplo así:

Está
Id nombre apellido dirección email dirección web
registrado?
1 Ana Lopez analopez@webmail.com www.analopez.com si
2 Juan Garcia juangarcia@webmail.com www.juangarcia.com no

Una tabla de datos tiene un número concreto de columnas (aunque siempre podemos
añadir o quitar las que queramos) pero no tiene un número definido de filas. Estas van
aumentando conforme los visitantes vayan introduciendo datos y más datos.

Una vez que tenemos una tabla con datos, podemos hacer bastantes operaciones para
obtener la información que deseamos en cada momento. Por ejemplo podríamos hacer que
ordenara la tabla por orden alfabetico de los nombres, o que solo mostrara a todos los
Juanes, o nos enseñara las direcciones de páginas web que terminen en .com, etc, etc,
etc. También, a través de códigos Php podríamos hacer llegar un E-Mail a los visitantes
registrados, o una invitación de registro a los no registrados. De nuevo el límite de
aplicaciones de tablas de datos los marca tu imaginación. Tienes? Pues entonces no
tendremos problemas! je je je.
En las páginas 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 páginas 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, añadir, 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 cuál no te haría falta el Phpmyadmin, claro. Pero cada día que pasa son más lo que
ya lo están ofreciendo. En cuanto a los servidores de pago, casi todos te ofrecen algunas
bases de datos para usar y acceso al Phpmyadmin. En la sección 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 servirán 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
dirección de tu web seguida de /cpanel. Si lo escribes en tu navegador te aparecerá una
ventana preguntándote el nombre de usuario y la contraseña de tu hosting.

Si has adivinado tu contraseña entrarás a tu Cpanel y verás a la derecha un montón de


iconos. Busca y haz clic en el que te señalo 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 señalado con un círculo 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 guión bajo y después 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 más el guión 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 también que si
dejas un espacio en blanco no hace caso de lo que hay detrás de este. Así que escribe el
nombre de la base de datos todo junto y sin guiones y listo.

Justo al lado derecho del círculo rojo tienes una opción (Delete) para borrar la base de
datos con todo su contenido (ahora mismo no tiene contenido), la opción de chequearla
(Check) y la opción de reparala (Repair). Debajo de todo eso vuelves a tener el recuadro
anterior por si quieres crear otra base de datos más.

Más abajo aún tenemos más 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 más
tarde. Ahí por el momento solo creamos usuarios y más 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 contraseña en este recuadro de abajo:

Para no hacerte un lío, más te vale que te vayas apuntando en un papelito tu nombre de
usuario y contraseña de tu panel de control y por otro lado el nombre de usuario y
contraseña para esta base de datos. De lo contrario quizás se te olvide. Como siempre, el
nombre de usuarios no tendra símbolos raros ni acentos ni mayúsculas ni espacios en blanco
ni guiones, para evitar problemas.
Una vez que pulsas "Create User" que significa "Crear Usuario" te aparece una pantalla de
confirmación como esta:

Ale, usuario creado. Después de pulsar de nuevo en "Go Back", que ya sabes lo que
significa, verás como aparece el usuario... pero... anda! Igual que ocurre con la base de
datos, al usuario se le antepone también el nombre de usuario del panel de control seguido
de un guión bajo. Recuérdalo 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 fácil también, donde pone "user" eliges el usuario (solo tienes uno, te será fácil
saber cuál 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 inglés todo se escribe "All", marcas esa casilla y
listo, es como si hubieras marcado todas las de la derecha.

Quizás 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, marcándo solo lo
que le dejas hacer en la parte de la izquierda, donde están todas esas opciones. Te
comento rápidamente 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.... aún no lo se... ;( para
qué te voy a engañar, 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 albúm de fotos, o cualquier aplicación que te
pida tener una base de datos activa, así que, presta atención.

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
Contraseña:
la que has puesto, tal cuál (esto no va con el nombre de usuario delante).
Host:
localhost (el 95% de las veces vale con poner localhost

Si alguna vez instalas algún 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 serían:

Nombre de la base de datos: cartago_basedepruebas


Nombre de usuario de la base de datos: cartago_pepe
Contraseña: noteladigo
Host: localhost

También podría gustarte