Gracias avlin por tu ayuda, te lo voy a poner todo y mas o menos la idea que tengo para que veas lo que quiero hacer y el sistema y tal. Es un sistema para gestionar clientes y los documentos de esos clientes....el sistema lo maneja un adminsitrador que mediante su sesion dara de alta clientes documentos etc..luego los clientes una vez dados de alta se loguearan en la zona clientes y accederan a su propia sesion...
Bien el sistema de base de datos es este muy sencillo, creo las tablas y creo ya el administrador por defecto insertando datos en la tabla admin...
Código PHP:
$sql = "CREATE TABLE Clientes (
dni VARCHAR (9) NOT NULL,
nombre VARCHAR (100) NOT NULL,
apellido1 VARCHAR (100) NOT NULL,
apellido2 VARCHAR (100) NOT NULL,
direccion VARCHAR (200) NOT NULL,
telefono INT (9) NOT NULL,
mail VARCHAR (50) NOT NULL,
login VARCHAR (100) NOT NULL,
pass VARCHAR (100) NOT NULL,
pass2 VARCHAR (100) NOT NULL,
PRIMARY KEY (dni)
) TYPE = INNODB;";
//--------------------------------------------------------------------------------
$sql = "CREATE TABLE Expedientes (
expediente INT (20) NOT NULL AUTO_INCREMENT,
nombre VARCHAR (50) NOT NULL,
fecha VARCHAR (20) NOT NULL,
direccion VARCHAR (200) NOT NULL,
dni VARCHAR (9) NOT NULL,
PRIMARY KEY (expediente),
INDEX (dni),
FOREIGN KEY (dni) REFERENCES Clientes(dni)
) TYPE = INNODB;";
//----------------------------------------------------------------------------------------
$sql = "CREATE TABLE Documentos(
id_documento VARCHAR (40) NOT NULL,
tipo VARCHAR (20) NOT NULL,
nombre VARCHAR (50) NOT NULL,
expediente INT (20) NOT NULL,
comentario VARCHAR (255),
PRIMARY KEY (id_documento),
INDEX (expediente),
FOREIGN KEY (expediente) REFERENCES Expedientes(expediente)
) TYPE = INNODB;";
//-----------------------------------------------------------------------------------------
$sql = "CREATE TABLE Admin(
login VARCHAR (50) NOT NULL,
id int(11) NOT NULL,
pass VARCHAR (50) NOT NULL,
pass2 VARCHAR (50) NOT NULL,
mail VARCHAR (100) NOT NULL,
PRIMARY KEY (login)
) TYPE = INNODB;";
//administrador por defecto
$sql = "INSERT INTO Admin (login,pass,pass2,mail)
VALUES (";
$sql .= "'****'";
$sql .= ",'****'";
$sql .= ",'****'";
$sql .= ",'****@******'";
$sql .= ")";
mysql_query($sql);
?>
Bien ahora ire al index de la aplicación que es donde pongo el administrador por defecto que he insertado al crear las tablas y me logueo. y hasta ahi bien, es un simple formulario donde paso a otra pagina los valores que meto con el metodo POST a ingresar_admin.php
index.html
Código:
<form id="form1" method="post" action="ingresar_admin.php">
<fieldset class="clase1">
<legend>Identificación</legend>
<label for="login">Login</label><input type="text" name="login" id="login" /><br />
<label for="pass">Password</label><input type="password" name="pass" id="pass" /><br />
</fieldset>
<fieldset class="clase1">
<legend>Acciones</legend>
<INPUT TYPE="submit" NAME="accion" VALUE="Aceptar" >
</fieldset>
</form>
Bien en esta clase ingresar_admin es donde recojo esos datos y donde establezco las odiosas cookiees y donde ya me da warnings al establecerlas (lo marco en negrita)...
ingresar_admin.php
Código PHP:
<?php
ob_start();
include("../conectarse_bd.php");
//$link=Conectarse();
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["login"]) != "" && trim($HTTP_POST_VARS["pass"]) != "")
{
/*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["login"]);
$passN = quitar($HTTP_POST_VARS["pass"]);
/*Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de da
tos que de la tabla usuarios nos devuelva la fila cuyo nick corresponda por
el enviado por el usuario: */
$result = mysql_query("SELECT pass FROM Admin WHERE login='$nickN'");
if($row = mysql_fetch_array($result))
{
/*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["pass"] == $passN)
{
//90 dias dura la cookie
/*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
*/
[B]setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000); [/B]
ob_end_flush();
?>
<SCRIPT LANGUAGE="javascript">
location.href = "panel_admin.php";
</SCRIPT>
<?
}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "error.php";
</SCRIPT>
<?
}
}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "error.php";
</SCRIPT>
<?
}
mysql_free_result($result);
}
else
{
?>
<SCRIPT LANGUAGE="javascript">
location.href = "error.php";
</SCRIPT>
<?
}
mysql_close();
?>
En ingresar_admin incluyo conectarse_bd que es esta
Código PHP:
<?php
//Funcion que se conecta a la base de datos
function Conectarse()
{
if (!($link=mysql_connect("server", "base", "pass")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("base",$link))
{
echo "Error de la base de datos.";
exit();
}
return $link;
}
$link=Conectarse();
//mysql_close($link); //cierra la conexion
?>
y por ultimo si todo esta bien si has puesto el administrador por defecto bien te manda a panel_admin pero si reconocerte en la sesión.... ademas de incluir conectarse_bd.php incluyo login_admin.php que es donde valido....no se si sera muy enrevesado..
Este es panel_admin.php
Código PHP:
<?php
include("../conectarse_bd.php");
include("../login_admin.php");
?>
<div id="Contenedor">
<div id="Capa_titulo">
<div id="logo" onclick="location='../index.html'" title="Inicio" ></div>
</div>
<div id="Capa_panel">
<div align="center">
<p>
<?php
$result = mysql_query("SELECT * FROM Admin WHERE login='".$HTTP_COOKIE_VARS["usNick"]."' AND pass='".$HTTP_COOKIE_VARS["usPass"]."'");
while($row = mysql_fetch_array($result)) {
printf("<tr><td><td> %s</td><td><td> %s </td><td> </tr>", $row["nombre"],$row["apellido1"], $row["apellido2"]);
}
if($loginCorrecto)
{
echo "<p style='font-family: Verdana, Arial, Helvetica, sans-serif;font-size: 11px;color: #000000; font-weight: bold; float:right;' > Bienvenido Administrador $nickUsuarioL </p>";
}
else
{
echo "Bienvenido visitante, el sistema no te ha reconocido, sino te autentificas no podras realizar ninguna de las funciones";
//falla
//header("Location: index.html");
}
?>
y login_admin.php que es este..
Código PHP:
<?php
/*Guardar datos Administrador */
$loginCorrecto = false;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;
/*Copmprobaciono cookies" : */
if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{
session_start();
$_SESSION["autentificado"]= "SI";
/*resultado de nick y pass guardado por las cookies */
$result = mysql_query("SELECT * FROM Admin WHERE login='".$HTTP_COOKIE_VARS["usNick"]."' AND pass='".$HTTP_COOKIE_VARS["usPass"]."'");
if($row = mysql_fetch_array($result))
{
/*si los datos son correctos se actualizan las cookiees caducan a los 90 dias*/
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$nickUsuarioL = $row["login"];
$emailUsuarioL = $row["mail"];
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
?>
Pues eso es todo, no se si sera muy enrevesadoy fijo que se puede simplificar y algo hago mal al establecer las cookies, seguro que se puede hacer mas sencillo, espero que hayais entendido la idea de lo que quiero para poder ayudarme, Gracias y perdonad por el tocho pero aqui esta todo