Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cómo Hacer Un Registro de Usuarios en PHP
Cómo Hacer Un Registro de Usuarios en PHP
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.
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:
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:
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:
$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 */
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;
}
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)
$resultado=mysql_query($consulta,$conexion);
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)
/* 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
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:
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();
?>
<?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>
Autor: Chochex
[/PHP]
include(‘identificar.inc.php’);
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;
}
<?
}
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;
}
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();
// 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 la sesión
session_destroy();
?>
[/PHP]
# ——————————————————–
#
# Estructura de tabla para la tabla `usuarios`
#
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
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.
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:
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;
}
GRACIAS
Registro y reconocimiento de usuarios con
PHP
Publicado en agosto 3, 2002 403 comentarios
¿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).
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?
1- ¿que beneficios tienen los usuarios registrados con respecto a los demas?
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.
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.
nick
password
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:
KEY id (id))
<BR>
<BR>
SIZE=28 MAXLENGTH=20>
<BR>
MAXLENGTH=255>
<BR>
</FORM>
<?php
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;
$result = mysql_query($sql);
if($row = mysql_fetch_array($result))
else
$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);
mysql_free_result($result);
else
mysql_close();
?>
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"]) != ""
$result = mysql_query($sql);
En caso de existir dicho nick, osea que nos devuelve una fila:
if($row = mysql_fetch_array($result))
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:
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.
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.
<BR>
SIZE=28 MAXLENGTH=20>
<BR>
</FORM>
Y
ahora el codigo de nuestra aplicacion ingresar.php, luego la explicacion:
<?php
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;
$nickN = quitar($HTTP_POST_VARS["nick"]);
$passN = quitar($HTTP_POST_VARS["password"]);
if($row = mysql_fetch_array($result))
if($row["password"] == $passN)
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
<?
}
else
else
mysql_free_result($result);
else
mysql_close();
?>
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:
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
if($row["password"] == $passN)
...
else
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?.
<?php
$loginCorrecto = false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;
if(isset($HTTP_COOKIE_VARS["usNick"]) &&
isset($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
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.
if(isset($HTTP_COOKIE_VARS["usNick"]) &&
isset($HTTP_COOKIE_VARS["usPass"]))
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
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
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"];
<?php
...
... if($loginCorrecto)
else
...
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
if($loginCorrecto)
else
?>
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
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.
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>
<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>
<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:
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.
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
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>
<?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:
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:
Fíjate en varias cosas en este ejemplo que te servirán para recordar cosas dichas hasta
ahora:
- 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 resultado de esa sentencia Php mostraría en la pantalla del navegador del visitante
esta línea:
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;
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? (á para á, é 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.
La sentencia anterior al estar escrita con comillas dobles mostaría esto en el navegador
del visitante:
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!
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.
$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...
$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:
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....
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!
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,
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.
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!!!
<?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.
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.
<?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.
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.
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}
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!
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.
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 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.
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 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.
Los datos que tienes ahora para acceder a la base de datos son los siguientes:
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?