|
Estos son los distintos modulos que vamos a ver dentro
de la intranet:
1.- usuarios, creación, tablas, roles, validacion
2.- Pagina principal, validación de usuarios
3.- Modulo de noticias
4.- Modulo de Incidencias
5.- Modulo de pedidos
6.- Modulo de formación de usuarios
7.- Modulo de administración
El primer paso para crear nuestra intranet sera definir
el diseño de nuestra base de datos. Un primer
paso debería ser la tabla de usuarios, en mi
caso, vamos a crear esta tabla con estos campos:
ID: Numero y autoincremental, clave
primaria.
Nombre: Nombre completo del usuario;
usuario: Nombre de usuario para entrar
en la intranet.
Password: Contraseña cifrada,
en mi caso utilizo cifrado AES. Con la funciones AES_DECRYPT
y AES_ENCRYPT puedo saber la contraseña, pero
necesito una clave de validación.
Correo: correo web del usuario, lo
utlizaremos para enviar avisos.
Por ahora no necesitaremos mas campos en la tabla de
usuarios. La siguiente tabla que vamos a necesitar es
la tabla ROLES. Esta tabla tendrá los permisos
de cada usuario en cada uno de los modulos de la intranet.
Los campos serán los siguientes:
ID: Numero y autoincremental, clave
primaria.
Usuario: Id del usuario, es clave
ajena de la tabla usuario (ID)
Noticias: Rol para el usuario en el
modulo de visitas, podemos hacerlo asi: 0 (sin permiso),
1 (permiso limitado), 2 (permiso avanzado), 3 (Administrador)
Incidencias: Igual que noticias.
Pedidos:Igual que noticias.
Formacion:Igual que noticias.
Administracion:Igual que noticias.
Nuestro esquema de base de datos quedaría asi:
USUARIOS --------------1 Tiene 1--------------ROLES
Ahora que tenemos estas dos tablas, podemos diseñar
el sistema de validacion y entrada a la intranet. Cada
usuario entra validandose con su nombre de usuario y
contraseña. Por lo tanto tendremos una pagina
principal con un formulario, dos cajas de texto, para
introducir nombre de usuario y contraseña, y
un boton para ejecutar dicha validación.
Todo formulario web tiene asociada una acción.
en este caso nuestra acción a ejecutar será:
validar_usuario.php.
Debemos crear una pagina validar_usuario.php que se
encarge de conectarse con la base de datos y comprobar
que la validación es correcta, el código
sería así:
|
|
<?php
include("funs.php");
$usuario = $_POST['usuario'];
$pass = $_POST['pass'];
$query = "select AES_DECRYPT(pass,clave)
as pass from usuarios where usuario = '"
. $usuario . "'";
$result = conexion("basedatos",$query);
$row = mysql_fetch_array($result);
if ($row['pass'] == $pass
and $pass != '') {
if ($usuario == '' or $usuario
== NULL) {
header("Location:../fallo_login.php");
}else
{
header("Location:intranet/index.php?usuario="
. $usuario . "");
}
}
else {
header("Location:../fallo_login.php");
}
?>
|
|
Este codigo es muy sencillo. Lo que hacemos en primer
lugar es recuperar los valores del formulario, que estan
almacenados en $_POST[]. Luego hacemos una consulta
a la base de datos que nos devuelva la contraseña
del usuario, si coinciden la validacion es correcta,
si no, con header("Location:.. redirigimos a una
pagina de fallo.
Vamos a ver a continuación como crear una pagina
para insertar noticias y luego poder ver estas noticias.
En primer lugar tendremos la pagina formulario. donde
ponemos la noticia y su importancia:
|
|
<form
name="form1" id="form1"
method="post" action="guarda_noticia.php?usuario=<?php
echo $usuario; ?>">
<p>Titulo:</p>
<p>
<input name="titulo" type="text"
id="titulo" size="60"
/>
</p>
<p>Contenido:</p>
<p>
<textarea name="contenido"
cols="60" rows="10"
id="contenido"></textarea>
</p>
<p>Urgencia:
<select name="tipo" id="tipo">
<option value="1">MUY IMPORTANTE</option>
<option value="2">IMPORTANTE</option>
<option value="3">NORMAL</option>
<option value="4">INTRASCENDENTE</option>
</select>
</p>
<p> </p>
<p>
<input type="submit" name="Submit"
value="Enviar" />
</p>
<p> </p>
</form> |
|
Este formulario, redirige a la pagina guarda_noticia.php,
que es la que guarda el registro en la base de datos:
|
|
<?php
session_start();
$titulo = $_POST['titulo'];
$contenido = $_POST['contenido'];
$fecha = date("y-m-d");
$usuario = getnusuario($_GET['usuario']);
$urgencia = $_POST['tipo'];
$sql = "insert into noticias (emisor,titulo,contenido,urgencia,fecha,valido)
values (" . $usuario . ",'"
. $titulo . "','" . $contenido
. "'," . $urgencia . ",'"
. $fecha . "',1)";
$resultado = conexion("Incidencias",
$sql);
//header("location:../interno/indexintra.php?usuario="
. $_GET['usuario'] . "");
echo '<script language="javascript">
document.location.href="index.php?usuario='.$_GET['usuario'].'"
; </script>';
?>
|
|
Y luego, para mostrar las noticias sería:
|
|
$columns = 1;
$sql = "select * from noticias where
valido = 1 order by fecha desc";
$result = conexion("Incidencias",$sql);
$columnas = (mysql_num_rows($result));
for($i = 0; $i < $columnas; $i++) {
echo "<TR>";
$row = mysql_fetch_array($result);
if ($row['urgencia'] == 1) {
echo "<td height='40' align='left'
valign='middle' bgcolor='#FFFF00' >"
. $row['titulo'] . "</td>";
echo "<td height='40' align='left'
valign='middle' bgcolor='#FFFF00' ><span
class='txt-desc-noticias'>" . $row['contenido']
. "</span></td>";
//echo "<td height='40' align='left'
valign='middle' bgcolor='#FFFF00' ><a
href='../img/noticias/" . $row['foto']
. "'><img src='../img/noticias/"
. $row['foto'] . "' width='150' height='100'
/></a></td>";
echo "<td height='40' align='left'
valign='middle' bgcolor='#FFFF00' >MUY
IMPORTANTE</td>";
echo "<td height='40' align='right'
valign='middle' bgcolor='#FFFF00' >"
. fechabuena($row['fecha']) . "</td>";
}else {
echo "<td height='40' align='left'
valign='middle' bgcolor='#EEFBF7' >"
. $row['titulo'] . "</td>";
echo "<td height='40' align='left'
valign='middle' bgcolor='#EEFBF7'><span
class='txt-desc-noticias'>" . $row['contenido']
. "</span></td>";
//echo "<td height='40' align='left'
valign='middle' bgcolor='#EEFBF7' >imagen</td>";
echo "<td height='40' align='left'
valign='middle' bgcolor='#EEFBF7' >IMPORTANCIA</td>";
echo "<td height='40' align='right'
valign='middle' bgcolor='#EEFBF7'>"
. fechabuena($row['fecha']) . "</td>";
}
echo "</TR>\n";
}
?>
</table>
|
|
|