|
1.- Para comenzar tenemos que crear nuestra base de datos y tablas para que el Script se ejecute correctamente. Esta acción se puede realizar de dos maneras, o bien copiamos este código en un bloc de notas y luego lo importamos desde MyAdmin, o lo pegamos directamente en la pestaña SQL dentro de bases de datos, tampien en MyAdmin.
create table usuarios (
id smallint(5) unsigned not null auto_increment,
fecha int(10) unsigned not null,
nick varchar(20) not null,
contrasena varchar(32) not null,
email varchar(40) not null,
pais varchar(20) not null,
edad tinyint(2) unsigned not null,
sexo enum('0','1') not null,
descripcion tinytext not null,
web varchar(100) not null,
ip varchar(15) not null,
primary key (id),
key (nick,contrasena)
)
2.- Una vez creadas las tablas , creamos el archivo, al que llamaremos "config.php", el cual constará de la llamada a nuestra base de datos, password, usuario:
<?
unset($config) ;
$config[1] = 'imysql04 ' ; # Puede ser "localhost" aunque también una URL o una IP
$config[2] = 'i5291455' ; # Usuario de la base de datos
$config[3] = 't1ke2ice44ibca37' ; # Contraseña de la base de datos
$config[4] = 'i5291455 ' ; # Nombre de la base de datos
$conectar = @mysql_connect($config[1],$config[2],$config[3]) or exit('Datos de conexión incorrectos.') ;
mysql_select_db($config[4],$conectar) or exit('No existe la base de datos.') ;
?>
3.- Ya lo siguiente es proceder a crear el formulario para registrar a los usuarios, para ello creamos el siguiente archivo llamado "registro.php":
<?
if($_POST[enviar]) {
require 'config.php' ;
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto = str_replace(chr(160),'',$texto) ; # Elimina espacios que no pueden ser borrados por trim()
return $texto ;
}
$nick = quitar($_POST[nick]) ;
$email = quitar($_POST[email]) ;
$con = mysql_query("select count(id) from usuarios where nick='$nick' or email='$email'") ;
if(mysql_result($con,0,0)) {
echo 'El nick ya existe en la base de datos o ya está registrado el email. Haz click <a href="javascript:history.back(-1)">aquí</a> para regresar.' ;
}
else {
$fecha = time() ;
$contrasena = md5(md5(quitar($_POST[contrasena]))) ;
$sexo = quitar($_POST[sexo]) ;
mysql_query("insert into usuarios (fecha,nick,contrasena,email,sexo,ip) values
('$fecha','$nick','$contrasena','$email','$sexo','$_SERVER[REMOTE_ADDR]')") ;
echo 'Has sido registrad@ satisfactoriamente. Haz click <a href="index.php">aquí</a> para regresar a la página principal e iniciar sesión' ;
}
}
else {
?>
<script>
function revisar() {
if(formulario.nick.value.length < 3) {
alert('El nick debe contener por lo mínimo 3 caractéres.') ;
return false ;
}
if(formulario.contrasena.value.length < 6) {
alert('La contraseña debe contener por lo mínimo 6 caractéres.') ;
return false ;
}
if(formulario.contrasena.value != formulario.c_contrasena.value) {
alert('Las contraseñas no son correctas.') ;
return false ;
}
if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(formulario.email.value)) {
alert('Debes poner un email válido.') ;
return false ;
}
}
</script>
<form name="formulario" method="post" action="<?=$_SERVER[PHP_SELF]?>" onsubmit="return revisar()">
<b>Nick:</b><br>
<input type="text" name="nick" maxlength="20"><br>
<b>Contraseña:</b><br>
<input type="password" name="contrasena" maxlength="10"><br>
<b>Confirmar contraseña:</b><br>
<input type="password" name="c_contrasena" maxlength="10"><br>
<b>Email:</b><br>
<input type="text" name="email" maxlength="40"><br>
<b>Sexo:</b><br>
<select name="sexo">
<option value="0">Masculino
<option value="1">Femenino
</select><br><br>
<input type="submit" name="enviar" value="Registro">
</form>
</div>
<?
}
?>
4.- Ahora vamos con nuestro archivo que llamaremos "iniciar.php" ...
<?
require 'config.php' ;
if($_POST[enviar]) {
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
# --> Elimina espacios que no pueden ser borrados por trim()
$texto = str_replace(chr(160),'',$texto) ;
return $texto ;
}
$nick = quitar($_POST[nick]) ;
$contrasena = md5(md5(quitar($_POST[contrasena]))) ;
$con = mysql_query("select id,contrasena from usuarios where nick='$nick'") ;
$datos = mysql_fetch_assoc($con) ;
if(mysql_num_rows($con)) {
if($datos[contrasena] == $contrasena) {
setcookie('uid',$datos[id],time()+604800) ;
setcookie('unick',$nick,time()+604800) ;
setcookie('ucontrasena',$contrasena,time()+604800) ;
header("location: $_SERVER[HTTP_REFERER]") ;
}
else {
echo 'La contraseña es incorrecta. Haz click <a href="javascript:history.back(-1)">aquí</a> para volver.' ;
}
}
else {
echo 'El nick no existe. Haz click <a href="javascript:history.back(-1)">aquí</a> para volver.' ;
}
}
?>
5.- Repasando, tendremos que tener creadas las tablas en la base de datos y los siguientes archivos:
- config.php
- registro.php
- iniciar.php
Ahora introducir el código que nos sirva para iniciar sesión, normalmente se inserta en la pagina inicial de la web.
<?
if(!$_COOKIE[uid]) {
?>
<form method="post" action="iniciar.php">
<b>Nick:</b><br>
<input type="text" name="nick" maxlength="20"><br>
<b>Contraseña:</b><br>
<input type="password" name="contrasena" maxlength="20"><br><br>
<input type="submit" name="enviar" value="Iniciar Sesión">
</form>
<p><a href="registro.php"> -->Registrate aqui <-- </a>
<?
}
else {
?>
Bienvenid@ <b><?=$_COOKIE[unick]?></b><br><br>
<br>
<a href="abandonar.php">Abandonar</a>
<?
}
?>
6.-Ahora hay que crear el archivo que se encarga de proteger las paginas que nosotros deseemos (a los usuarios que no esten registrados se les emitirá el siguiente mensaje: "Sólo para usuari@s registrad@s . Vuelve a la página principal y registrate".
Para hacer eso crearemos otro archivo "login.php" con el siguiente codigo:
<?
require 'config.php' ;
$con = mysql_query("select count(id) from usuarios where id='$_COOKIE[uid]' and nick='$_COOKIE[unick]' and contrasena='$_COOKIE[ucontrasena]'") ;
if(!mysql_result($con,0,0)) {
exit('<p><b>Sólo para usuari@s registrad@s.</b><p><a href="javascript:history.back(-1)">» Regresar</a>') ;
}
?>
7.- Casí para finalizar creamos el archivo que servirá para que los usuarios registrados cierren sesion y redireccionarlos a la pagina principal del sitio , para eso insertamos el siguiente código y lo guardamos como "abandonar.php"
<?
setcookie('uid') ;
setcookie('unick') ;
setcookie('ucontrasena') ;
header('location: index.php') ;
?>
8.- Finalmente, insertaremos el siguiente código en las páginas que queramos proteger.
<? require 'login.php' ?>

|