Foros del Web » Programando para Internet » PHP »

otra opción a las sesiones

Estas en el tema de otra opción a las sesiones en el foro de PHP en Foros del Web. esta ta cual por eso te preguntaba que me extrañaba..es eso que te posteado...

  #31 (permalink)  
Antiguo 16/12/2006, 10:52
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

esta ta cual por eso te preguntaba que me extrañaba..es eso que te posteado
  #32 (permalink)  
Antiguo 16/12/2006, 10:55
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

bueno seguimos depurando, ahora da esto
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web/sites/user/6/72/54406/public/www/login_admin.php on line 9

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web

Ya no hay problemas con ingresar_admin pero los hay con el panel principal donde ya tendria que aparecer logueado el usuario, te lo posteo porque aqui si que tengo que mezclar html y php por narices...
  #33 (permalink)  
Antiguo 16/12/2006, 11:05
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

Gracias de nuevo, voy despacito pero con buena letra como quien dice, ingresar_admin parece que va, pero ahora los problemas estan en el panel del administrador (panel_Admin) donde el administrador ya estaría logueado y me da estos warnings...Aqui ya tengo que mezclar php y html en el mismo fichero asi que fijo q tengo varias cosas mal pero no se exactamente...
panel_admin
los warninngs

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web/sites/user/6/72/54406/public/www/login_admin.php on line 9

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /web/sites/user/6/72/54406/public/www/admin/panel_admin.php:5) in /web

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Nogues | Arquitecto</title> 
<script type="text/javascript" src="Funciones.js"></script>
<link rel="stylesheet" type="text/css" href="../Estilo.css"/>
<style type="text/css">
<!--
.Estilo14 {
    font-size: 40px;
    margin-left: 90px;
    font-family: "Century Gothic";
}
#Layer1 {
    position:absolute;
    width:270px;
    height:260px;
    z-index:1;
    top: 50px;
    left: 500px;
}
#Layer2 {
    position:absolute;
    width:100px;
    height:80px;
    z-index:2;
    left: 655px;
    top: 315px;
    cursor:pointer; 
}
#Layer3 {
    position:absolute;
    width:80px;
    height:80px;
    z-index:3;
    left: 770px;
    top: 315px;
    cursor:pointer; 
}
-->
</style>
</head>
<body>
<?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='".$_SESSION["usNick"]."' AND pass='".$_SESSION["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");  
}  
?> 
</p>
    </div>
 
    
    <p>&nbsp;</p>
    
    <p>&nbsp;</p>
    <div id="Layer1">
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="alta.php" title="Alta Cliente">Cliente</a>
        
        <a class="Estilo4" href="alta_exp.php" title="Alta Expediente">Expediente</a><a class="Estilo4" href="alta_documento.php" title="Subida Archivo">Archivo</a> </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="listado_clientes.php" title="Alta Administrador">Cliente</a>
        
        <a class="Estilo4"  href="listado_exp.php" title="Borrar Modificar Expediente">Expediente</a>   
        <a class="Estilo4" href="listado_archivos.php" title="Borrar Modificar Archivos">Archivo </a> </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="listado_clientes_borrar.php" title="Borrar Modificar Clientes">Cliente</a>
        <a class="Estilo4" href="listado_exp_borrar.php" title="Borrar Modificar Expediente">Expediente </a>
        <a  class="Estilo4" href="listado_archivos_borrar.php" title="Borrar Modificar Archivos">Archivo </a> 
        </p>
    </div>
    <div id="Layer2" onclick="location='administradores.php'"></div>
    <div id="Layer3" onclick="location='cerrar_sesion.php'"></div>
</div>
</div>
</body>
</html>
  #34 (permalink)  
Antiguo 16/12/2006, 14:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Bueno, la solución a casos como este es acostumbrarse a poner todo el código PHP al principio del archivo.
En vez de usar 'echo' para mostrar la información, guardás lo que quieras mostrar en una variable. En vez de

echo 'Logueado';

poner

$mostrar = 'Logueado';

Generás el texto que sea necesario de esta forma y luego, en el html, en el lugar donde quieras que aparezca simplemente ponés

<?php echo $mostrar; ?>

Un bloquecito que únicamente muestra el contenido de la variable, y nunca te dará problemas.


Saludos y vamo' a ver si solucionamos este tema
  #35 (permalink)  
Antiguo 17/12/2006, 06:43
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

gracias avlin por tus clases magistrales toy aprendiendo mucho, voy viendo la luz jeje pero todavia no me deja verla del todo mas warnings jeje, ahora el conflicto viene por login_admin y panel_admin este es warning que me sale en en l panel
Warning: Cannot modify header information - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/login_admin.php:30) in /web/sites/user/6/72/54406/public/www/admin/panel_admin.php on line 19
He intentado corregir login_admin y panel_admin y creo que el fallo ta en login_admin, te dejo los dos para que eches un vistazo a ver que te parece...
login admin
Código PHP:
<?php   
/*Guardar datos Administrador */  
$loginCorrecto false;   
$nickUsuarioL;   
$emailUsuarioL;   
$nombreUsuarioL;   
/*Copmprobaciono cookies" : */  
session_start(); 
if(isset(
$_SESSION["usNick"]) && isset($_SESSION["usPass"]))   

$_SESSION["autentificado"]= "SI";    
/*resultado de nick y pass guardado por las cookies */  
$result mysql_query("SELECT * FROM Admin WHERE login='".$_SESSION["usNick"]."' AND pass='".$_SESSION["usPass"]."'");   
if(
$row mysql_fetch_array($result) && (time() < $_SESSION['caduca']) )   
{   
/*si los datos son correctos se actualizan las cookiees caducan a los 90 dias*/   
$_SESSION['caduca'] = time()+7776000
$loginCorrecto true;   
$nickUsuarioL $row["login"];    
$emailUsuarioL $row["mail"];   
}  
else   
{   
//Destruimos las cookies.  
$_SESSION = array(); 
session_destroy(); 
}   
mysql_free_result($result);   
}   
?>
y el nuevo panel admin con tus consejos...
Código PHP:
<?php 
include("../conectarse_bd.php");
include(
"../login_admin.php"); 
$result mysql_query("SELECT * FROM Admin WHERE login='".$_SESSION["usNick"]."' AND pass='".$_SESSION["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>"; 
$mostrar 'Bienvenido Administrador $nickUsuarioL ';

}  
else  
{  
//echo "Bienvenido visitante, el sistema no te ha reconocido, sino te autentificas no podras realizar ninguna de las funciones";  
$mostrar 'Bienvenido visitante, el sistema no te ha reconocido, sino te autentificas no podras realizar ninguna de las funciones';
//falla
header("Location: index.html");  
}  
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Nogues | Arquitecto</title> 
<script type="text/javascript" src="Funciones.js"></script>
<link rel="stylesheet" type="text/css" href="../Estilo.css"/>
<style type="text/css">
<!--
.Estilo14 {
    font-size: 40px;
    margin-left: 90px;
    font-family: "Century Gothic";
}
#Layer1 {
    position:absolute;
    width:270px;
    height:260px;
    z-index:1;
    top: 50px;
    left: 500px;
}
#Layer2 {
    position:absolute;
    width:100px;
    height:80px;
    z-index:2;
    left: 655px;
    top: 315px;
    cursor:pointer; 
}
#Layer3 {
    position:absolute;
    width:80px;
    height:80px;
    z-index:3;
    left: 770px;
    top: 315px;
    cursor:pointer; 
}
-->
</style>
</head>
<body>
<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 echo $mostrar?>
</p>
    </div>    
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <div id="Layer1">
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="alta.php" title="Alta Cliente">Cliente</a>    
        <a class="Estilo4" href="alta_exp.php" title="Alta Expediente">Expediente</a><a class="Estilo4" href="alta_documento.php" title="Subida Archivo">Archivo</a> </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="listado_clientes.php" title="Alta Administrador">Cliente</a>    
        <a class="Estilo4"  href="listado_exp.php" title="Borrar Modificar Expediente">Expediente</a>   
        <a class="Estilo4" href="listado_archivos.php" title="Borrar Modificar Archivos">Archivo </a> </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p><a class="Estilo4" href="listado_clientes_borrar.php" title="Borrar Modificar Clientes">Cliente</a>
        <a class="Estilo4" href="listado_exp_borrar.php" title="Borrar Modificar Expediente">Expediente </a>
        <a  class="Estilo4" href="listado_archivos_borrar.php" title="Borrar Modificar Archivos">Archivo </a> 
        </p>
    </div>
    <div id="Layer2" onclick="location='administradores.php'"></div>
    <div id="Layer3" onclick="location='cerrar_sesion.php'"></div>
</div>
</div>
</body>
</html>
Ya queda menos jeje y estoy volviendo a tener ilusión por las sesiones...
  #36 (permalink)  
Antiguo 17/12/2006, 13:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Bueno, me alegro de haberte ayudado, creo que ahora tenés un código mucho más entendible y limpio

Salida iniciada en login_admin en la línea 30.... es extraño porque la línea 30 (si el archivo es tal cual como lo mandaste) es la que contiene el ?>
Y supongo que ya habrás revisado si hay algún espacio o salto de línea de más, ¿no?

Ya en serio, creo que debe haber algún espacio en blanco que no estás viendo, quizás un salto de línea o incluso un espacio luego de ?>

fijate en eso, que debe andar por ahí el error.


Saludos.
  #37 (permalink)  
Antiguo 17/12/2006, 15:20
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

si es ese el archivo, tal cual por eso te preguntaba, seguire revisando a ver pero no he dejado ni una linea delante ni detras de el final y el comienzo, pienso que ya puede ser del codigo en si que este mal pensado...Seguire mirando a ver, gracias avlin de nuevo
  #38 (permalink)  
Antiguo 17/12/2006, 16:41
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

bueno, hay una solución que es bastante forzada y quizás no sea lo ideal, pero te puede servir...
al principio del archivo panel_admin (después de <?php pero lo antes posible) agregás esto:
ob_start()

Luego, inmediatamente antes de llamar a header(), usás ob_end_clean()

(no es imprescindible, pero mejor ponerlo ya que si luego te olvidás nte vas a estar preguntando por qué no ves nada en la pantalla jeje).

¿Qué hace esto?
pues captura la posible salida que tuvieras, y la descarta sin mandarla al navegador. Por lo tanto, si tuvieras algún error como un espacio sobrante, no causaría problemas.

Lo ideal sería buscar y encontrar el problema, pero yo sinceramente no lo veo... y de todas formas si se genera alguna salida en ese 'tramo' de código, no es salida deseada, por lo que no provocará problemas.


Saludos.
  #39 (permalink)  
Antiguo 17/12/2006, 17:19
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

Bien pues el resultado ha sido que no me reconoce la sesión me sigue sacando lo de 'Bienvenido visitante, el sistema no te ha reconocido, sino te autentificas.... no me saca ningun warning ni nada, asi que no se que hacer que puedo tener mal del codigo y mira que lo repaso veces....
  #40 (permalink)  
Antiguo 17/12/2006, 17:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Bueno, aquí llegamos a un problema concreto al menos dejamos atrás el problema de las cabeceras.
A ver, lo que debería hacer que el valor de $loginCorrecto cambie es que se den las siguientes condiciones:
1.- if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"]))
Comprobá que existan (hacé un 'echo' de ambas)
2.- if($row = mysql_fetch_array($result)
comprobá que la consulta esté bien construida y que haya un resultado
(echo mysql_error(), o var_dump($row), o echo mysql_num_rows)
3.- (time() < $_SESSION['caduca']) )
Supongo que esto no debería dar problemas, pero de todas formas, por las dudas: echo time() - $_SESSION['caduca']


Probá estas cosas, una de esas condiciones no se está cumpliendo.


Saludos.
  #41 (permalink)  
Antiguo 18/12/2006, 04:30
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

bien al poner el primer echo $result; en login admin me sale Resource id #4.....eso no puede ser nada bueno, no se si esq no he puesto el chivato bien o que pero ponga lo que ponga sale eso...dime exactamente donde tengo que poner los echos porque ya no se si lo estoy haciendo bien o mal, cuando me funcione seras el primero invitado a la inaguración jeje
  #42 (permalink)  
Antiguo 18/12/2006, 09:10
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Jaja, muchas gracias

está bien que te lo muestre así,es la forma en la que representa las variables de tipo 'recurso'.
Dándote ese resultado, lo que dice es que la consulta se hizo correctamente. No asegura que haya resultados, sin embargo.

Llegado este punto, solo falta ver la última condición (la 3 en mi anterior mensaje).
¿no será que en la página que procesa el formulario te olvidaste de asignarle un valor a $_SESSION['caduca']?
  #43 (permalink)  
Antiguo 18/12/2006, 15:45
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

no sabes como me alegra oir eso, bien he estado intentando probar lo que me has sugerido y no me sale nada y no se si es por que lo he puesto mal o porque lo he puesto bien y no sale o porque pero el caso es que no sale nada, te posteo donde he puesto lo de caduca para que veas, ya estamos cerca del final jejej

login_admin.php

Código PHP:
<?php   
/*Guardar datos Administrador */  
$loginCorrecto false;   
$nickUsuarioL;   
$emailUsuarioL;   
$nombreUsuarioL;   
/*Copmprobaciono cookies" : */  
session_start(); 
if(isset(
$_SESSION["usNick"]) && isset($_SESSION["usPass"]))   

$_SESSION["autentificado"]= "SI";    
/*resultado de nick y pass guardado por las cookies */  
$result mysql_query("SELECT * FROM Admin WHERE login='".$_SESSION["usNick"]."' AND pass='".$_SESSION["usPass"]."'");   
if(
$row mysql_fetch_array($result) && (time() < $_SESSION['caduca']) )   
{   

/*si los datos son correctos se actualizan las cookiees caducan a los 90 dias*/   
$_SESSION['caduca'] = time()+7776000
echo 
time() - $_SESSION['caduca'];

$loginCorrecto true;   
$nickUsuarioL $row["login"];    
$emailUsuarioL $row["mail"];   
}  
else   
{   
//Destruimos las cookies.  
$_SESSION = array(); 
session_destroy(); 
}   
mysql_free_result($result);   
}   
?>
  #44 (permalink)  
Antiguo 19/12/2006, 08:35
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

Nada no consigo hacer salir nada, sigo atascado avlin, la pagina que procesa el formulario me imagino que te referiras a la que metes el login y pass del administrador por defecto y es ingresar_admin y ahi no asigno ningun valor a $_SESSION['caduca'], no asigno nada, no se a que te refieres a ver si me lo puedes explicar o poner en codigo...Gracias avlin.
  #45 (permalink)  
Antiguo 19/12/2006, 08:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

¿no muestra naa de naa? pues qué extraño...
mejor, en vez de eso, haz

var_dump($_SESSION);

con eso te mostrará toda la información contenida en la matriz $_SESSION

Si no le asignás un valor a $_SESSION['caduca'] al momento de crear la sesión (o al menos antes de ejecutar login_admin.php), la comprobación nunca será verdadera:

time() < $_SESSION['caduca']

si $_SESSION['caduca'] no tiene valor, time() nunca podrá ser menor. ¿se entiende?

Probá estas dos cosas, después de todo, ya no queda nada por analizar, ¿no?


Saludos.
  #46 (permalink)  
Antiguo 19/12/2006, 16:56
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Sonrisa Re: otra opción a las sesiones

he hecho lo del var_dump y sigue sin salirme nada, lo he puesto en login_admin donde habia puesto la otra sentencia q me dijiste y nada y time() < $_SESSION['caduca'] lo he puesto despues de session start en ingresar_admin que es donde te entendido que tengo q ponerlo pero nada seguimos en las mismas...
  #47 (permalink)  
Antiguo 19/12/2006, 18:26
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Creo que no me expliqué bien.

¿var_dump($_SESSION) no muestra nada? es imposible, aunque $_SESSION estuviera vacía el var_dump SIEMPRE muestra algo...
¿no será que lo estás poniendo en el mismo programa en el que le pusiste el ob_start/ob_end_clean?

En ingresar_admin tenés un código en el que decidís si los datos ingresados son correctos y si es así, redireccionás, ¿verdad?

Bueno, antes de redireccionar, ponés:

session_start();
$_SESSION['caduca'] = time() + 7776000;

y entonces sí, estás definiendo el valor de $_SESSION['caduca'] en el momento indicado...

No olvides el session_start()...


Saludos.
  #48 (permalink)  
Antiguo 20/12/2006, 03:44
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

Gracias avlin de nuevo por tu paciencia, seguimos progresando, efectivamente es ingresar_admin donde valido y redirecciono si esta bien, asi que ahi he colocado lo que me has dicho y bien sale esto que creo q es lo que tiene q salir pero no me redirecciona porque me vuelve a salir un error de cabecera....y no veo nada que este mal....Me sale esto

array(3) { ["caduca"]=> int(1174383421) ["usNick"]=> string(6) "nogues" ["usPass"]=> string(6) "nogues" }
Warning: Cannot modify header information - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php:42) in /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php on line 43

y el codigo de ingresar_Admin que asi..
Código PHP:
<?php 
include("../conectarse_bd.php"); 
//$link=Conectarse(); 
function quitar($mensaje

$mensaje str_replace("<","&lt;",$mensaje); 
$mensaje str_replace(">","&gt;",$mensaje); 
$mensaje str_replace("\'","'",$mensaje); 
$mensaje str_replace('\"',"&quot;",$mensaje); 
$mensaje str_replace("\\\\","&#92",$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
*/
session_start(); 
$_SESSION['caduca'] = time() + 7776000;
$_SESSION['usNick'] = $nickN
$_SESSION['usPass'] = $passN;   
var_dump($_SESSION);
header('Location: panel_admin.php'); 
}   
else   
{   
header('Location: error.php'); 
}   
}   
else  
    {  
header('Location: error.php'); 
    }  
mysql_free_result($result);   
}   
else   
{   
header('Location: error.php'); 
}   
mysql_close();   
?>
ya queda poco avlin jeje
  #49 (permalink)  
Antiguo 20/12/2006, 07:35
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

Eso te sale porque aún está el var_dump($_SESSION) metido por ahí
En cuanto lo quites (ya que no es necesario, pedí que lo pusieras solo para ver si $_SESSION tenía todo lo que debía tener)

var_dump() es un gran aliado a la hora de depurar, porque te muestra el contenido y la estructura de una variable.

Como consejo te digo que siempre es útil cuando alguna variable no funciona, poner var_dump() y ver su contenido.
(también es conveniente hacer un 'exit' luego de usarlo, para evitar que el programa se siga ejecutando en condiciones 'no normales')

En fin, que si ese era el error, pues este tema de 50 mensajes está concluido

Creo que lo voy a extrañar


Saludos.
  #50 (permalink)  
Antiguo 20/12/2006, 08:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

jaja, pues si ya entra en el panel dando la bienvenida y me muestra esto $mostrar = 'Bienvenido Administrador $nickUsuarioL '; y ahi tendria que mostrar el login del administrador y no se si lo hace mal xq no hay q poner $nickUsuarioL sino otra cosa o esta mal puesto o que...como pondría para que me sacara el login del admin? y la ultima cosilla que te pregunto es que tendría que poner exactamente en cada pagina que quiera proteger con sesion? Gracias avlin ha sido un hilo ya famoso aqui y leido por casi 400 personas jeje, Gracias por todo...

Última edición por Javiglez; 20/12/2006 a las 08:31
  #51 (permalink)  
Antiguo 20/12/2006, 09:39
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 21 años, 1 mes
Puntos: 78
Re: otra opción a las sesiones

Cita:
Iniciado por Javiglez Ver Mensaje
Hola, queria saber si hay alguna otra forma de poder restringir el acceso a paginas que no sea por sesiones de usuarios pero si utilizando usuarios porque las sesiones me estan dando mogollon de problemas que si cookies que si tal, Gracias.
Bueno jeje ahora si entiendo lo que es un mogollon de problemas jaja :P

jaja sorry
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #52 (permalink)  
Antiguo 20/12/2006, 15:29
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: otra opción a las sesiones

mogollón de problemas = tema de al menos 50 mensajes

Las comillas simples no expanden variables.

Supongamos que: $usuario = 'alvlin';

echo 'Hola $usuario' => imprime Hola $usuario
echo "Hola $usuario" => imprime Hola alvlin
echo 'Hola '.$usuario => imprime Hola alvlin

Como ves, tenés que usar las comillas dobles, o concatenar con el punto (.)
La concatenación es más rápida, pero las comillas dobles son más cómodas...

¿qué tendrías que poner en todas las páginas?
pues tendrías que poner código que:
-> inicie la sesión
-> verifique que la sesión es válida (y no caducó)
-> si la sesión es válida, que actualice el valor de 'caduca'
-> si la sesión no es válida, que la destruya y mande al usuario a la página de ingreso.

Básicamente, sería incluir login_admin.php en todas las páginas.


Saludos.
  #53 (permalink)  
Antiguo 20/12/2006, 15:50
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: otra opción a las sesiones

mil gracias avlin has sido un gran profesor de php y he aprendido mogollon, me imagino que tendre mas hilos que abrir con mas problemillas, a ti te dejare en paz ya que menuda te he dado, Gracias por todo avlin. Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:12.