Foros del Web » Programando para Internet » PHP »

Error Sistema de autentificacion de Usuarios

Estas en el tema de Error Sistema de autentificacion de Usuarios en el foro de PHP en Foros del Web. Hola bueno, estoy diseñando un sistema de autentificacion pero me esta dando problemas que de verdad no puedo solucionar por lo que espero alguien pueda ...
  #1 (permalink)  
Antiguo 16/10/2005, 14:27
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Error Sistema de autentificacion de Usuarios

Hola bueno, estoy diseñando un sistema de autentificacion pero me esta dando problemas que de verdad no puedo solucionar por lo que espero alguien pueda ayudarme...
El inconveniente es que cuando pido usuario y contraseña, mediante un post mando esos datos a la pag. control.php la cual me redireccionara dependiendo si el usuario y la contraseña son validos, solo que cuando le doy a enviar o mejor dicho aceptar.. me sale el sigte error

Warning: Cannot add header information - headers already sent by (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 14
Alguien me podria ayudar el codigo que tiene el archio control.php es el sigte

<body>
<?
if ($_POST["usuario"]=="luis" && $_POST["contrasena"]=="pagame"){
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: logueado.php");
}else {
header("Location: index.php?errorusuario=si");
}
?>
</body>
  #2 (permalink)  
Antiguo 16/10/2005, 16:27
Avatar de alexjnm  
Fecha de Ingreso: octubre-2004
Ubicación: cuba
Mensajes: 218
Antigüedad: 13 años, 1 mes
Puntos: 1
Cita:
<?
if ($_POST["usuario"]=="luis" && $_POST["contrasena"]=="pagame"){
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: logueado.php");
}else {
header("Location: index.php?errorusuario=si");
}
?>
mejor lo pruevas asi i me dise despues, pues me parese que no pudes poner nada antes de empesar la seccion.

Código PHP:
<?
session_start
();
if (
$_POST["usuario"]=="luis" && $_POST["contrasena"]=="pagame"){
$HTTP_SESSION_VARS['autentificado'] = "SI";
session_register("autentificado");
header ("Location: logueado.php");
}else {
header("Location: index.php?errorusuario=si");
}
?>

el $HTTP_SESSION_VARS['autentificado'] = "SI"; es para que preguntespor el en la pagina de logeo
para que los inteligentes no vayan directo a la pagina ;)
en caso de no ser lo que viscas con $HTTP_SESSION_VARS['autentificado'] lo dejas como esta

espero que te sirva asi saludos alex
__________________
__________________________________________________ _________
A beses el camino mas largo es la solución mas eficaz :)
  #3 (permalink)  
Antiguo 16/10/2005, 19:43
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Error Mas Grave todavia

Bueno Despues de haber probado la solucion que me planteaste obtuve unos errores mayores, aqui te los dejo:


Warning: Cannot send session cookie - headers already sent by (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: Cannot send session cache limiter - headers already sent (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: open(/tmp\sess_dae925ed47f90aa0f988b2c1a186441e, O_RDWR) failed: m (2) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: Cannot add header information - headers already sent by (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 14
  #4 (permalink)  
Antiguo 16/10/2005, 20:25
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Los errores 1, 2 y 4 es por lo que te comentaron: No debes tener ninguna salida --hacia el navegador-- antes de utilizar session_start(). Doc oficial: www.php.net/session_start

El error 3... ve en el archivo php.ini el valor de session.save_path. Parece es problema de "la dirección" de la barras (\ y /) que se ocupan diferente según el SO (usas Win$)... pero igual velo después de arreglar los otros errores.

Ahora, el uso de session_register() es obsoleto (Leelo en la doc oficial). En su lugar debes usar la variable superglobal $_SESSION. Visita las FAQ de sesiones.

Código PHP:
<? // esta debe ser la primera línea del archivo. SIN SALIDA ANTES DE ESTO
session_start();
if (
$_POST["usuario"]=="luis" && $_POST["contrasena"]=="pagame"){
$_SESSION['autentificado'] = "SI";
// session_register("autentificado"); ESTO NO!
header ("Location: logueado.php");
exit; 
// siempre después de header()
}else {
header("Location: index.php?errorusuario=si");
exit;
}
?>
Ve otros códigos que se manejan dentro de este foro, ve el autentificator de Cluster (buscalo así en el foro, ahora no tengo el enlace a la mano).
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 16/10/2005, 23:33
Avatar de faco84  
Fecha de Ingreso: julio-2005
Mensajes: 61
Antigüedad: 12 años, 5 meses
Puntos: 0
logout

Como quedaría un archivo de cierre de sesion en ese caso??. Sería igual crear un archivo "logout.php" o agregar lineas de codigo en el archivo de "logueado.php"?.
.
Por otra parte, para cerrar de manera adecuada es necesario usar "session_unset()" + "session_destroy()" ?. O solo una ??.
Muchas gracias!.
  #6 (permalink)  
Antiguo 17/10/2005, 01:11
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Como ya te dijo jam1138, debes llamar a ese archivo antes de generar cualquier HTML. Por eso, no debería estar dentro del <body> sino antes del <html>.

Para cerrar la sesión, lo mejor es re-setear el array superglobal $_SESSION y luego aplicar session_destroy().

El ejemplo más simple del archivo que "mata" la sesión es:
Código PHP:
session_start()
$_SESSION = array();
session_destroy(). 
También insisto en lo que dijo jam1138. trata de no utilizar las funciones session_register(), session_unregister(), session_is_registered(), etc... en su lugar, trabaja directamente con el array $_SESSION.

Saludos
  #7 (permalink)  
Antiguo 17/10/2005, 13:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Todavia no he podido resolver el problema

Bueno revise tu codigo jam1138 y es verdad estaba desfazado y algo atrasado peor naa... resulta que probe tu codigo y tambien me da error...

me lei unos manuales y no he podido solucionar el inconveniente.. quien em ayuda.. gracias estoy trabajando en eso, espero cualquier respuesta
  #8 (permalink)  
Antiguo 17/10/2005, 14:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Indica el error que -ahora- despues de tus cambios obtienes (textualmente) ..por qué si es problema de cabeceras HTTP .. el error dice exactamente donde tienes el problema y quien lo origina.

Un saludo,
  #9 (permalink)  
Antiguo 17/10/2005, 20:14
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
BUeno aqui estan los errores que me dio

Utilziando el codigo que me ofreciste jam1138 no obtube resultados optimos... miras los errores que me daba el navegador

Warning: Cannot send session cookie - headers already sent by (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: Cannot send session cache limiter - headers already sent (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: open(/tmp\sess_d70867e7e7c53fe495952c4f3e4ecda9, O_RDWR) failed: m (2) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 8

Warning: Cannot add header information - headers already sent by (output started at c:/archivos de programa/abria merlin/apache/htdocs/control.php:7) in c:/archivos de programa/abria merlin/apache/htdocs/control.php on line 15

Que alguien me ayude por faor.. ya nose que hacer
  #10 (permalink)  
Antiguo 17/10/2005, 20:59
Avatar de faco84  
Fecha de Ingreso: julio-2005
Mensajes: 61
Antigüedad: 12 años, 5 meses
Puntos: 0
Quizas podrias entrar a revisar el archivo "php.ini". Es posible que haya alguna configuración que te esta topando.
Por otra parte, revisaste si tienes las cookies habilitadas? y si es asi revisa este valor en el "php.ini" session.use_only_cookies = 1 . Esto permite que se almacene una cookie con el id de la sesion. Quizas por hay este el problema.
Y por ultimo, seria interesante que subas el codigo a alguna direccion web para que todos lo vean y vean asi tus errores.

Suerte!!
  #11 (permalink)  
Antiguo 17/10/2005, 20:59
Avatar de Dr.Guindows  
Fecha de Ingreso: enero-2004
Mensajes: 77
Antigüedad: 13 años, 10 meses
Puntos: 0
amigo eso es un error comun cuando intentas modificar las cabezeras de htlm <HEADER> despues de escribir algo en el archivo... osea todo lo referente al manejo de cabezeras tiene que ir antes de cualquier modificacion a las misma... a menos que sea un postback que puede setear el header pero sin escribir nada en el html. no se si me supe explicar...

Frank
__________________
La vida es un sin fin de inhalaciones y expiraciones o son los momentos que nos dejan si ellas ;) !!! :arriba:
  #12 (permalink)  
Antiguo 18/10/2005, 07:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ahora .. indica el código de "control.php" .. por qué tienes en la línea 7 del mismo algo de lo que menciona Dr.Guindows (puede ser HTML, .. echo "algo" .. un espacio antes de <? .. o un salto de línea .. etc).

Un saludo,
  #13 (permalink)  
Antiguo 18/10/2005, 11:33
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Encontre El Error, pero ahora Surgio Otro inconveniente

Bueno mcuachones gracias por toda la aydua brindada, encontre el error y lo solucione el problema es que loe stab editando en dreamweaver y me le estaba poniento <html> y <body>.... bueno ya solucionado el problema ahora es el sig.

el problema es que no importa cual contraseña le ponga siempre me redirecciona a la pag. principal... aunque le ponga la contraseña verdadera me dice que es incorrecta, vuelvo y les paso el codigo
Lo probe cambiando header("Location: index.php?errorusuario=si");
por header("Location: http://www.forosdelweb.com"); y siempre me manda a forosdelweb sin importar que usuario ponga

<?
session_start();
if ($_POST["usuario"]=="123" && $_POST["contrasena"]=="456"){
$_SESSION['autentificado'] = "SI";
header ("Location: logueado.php");
exit;
}else {
header("Location: http://www.forosdelweb.com"); \\aqui es el inconveniete siempre me manda a esta web sin importar si el usario o contraseña son correctos.
exit;
}
?>
Estoy trabajando en eso, pero si alguien puede ayduarem, estare agradecido
  #14 (permalink)  
Antiguo 18/10/2005, 12:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y tu formulario de login? .. usas como "method" POST? ..

Un saludo,
  #15 (permalink)  
Antiguo 18/10/2005, 12:25
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
BUeno aqui esta mi formulario de Login

Aqui les posteo el formulario...

<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center"
<?if ($_GET["errorusuario"]=="si"){?>
bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
bgcolor=#cccccc>Introduce tu clave de acceso
<?}?></td>
</tr>
<tr>
<td align="right">USUARIO:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWORD:</td>
<td><input type="password" name="contrasena" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
  #16 (permalink)  
Antiguo 18/10/2005, 20:33
Avatar de faco84  
Fecha de Ingreso: julio-2005
Mensajes: 61
Antigüedad: 12 años, 5 meses
Puntos: 0
logueado.php

Te fijaste bien si no tienes alguna condicion inesperada en el archivo de logueado.php ?. Quizas no esta recibiendo el "SI" de certificacion.
Muestra el codigo del principio del archivo logueado.php, para ver mejor. Ya que tu codigo, tanto de formulario como de accion, estan buenos.
  #17 (permalink)  
Antiguo 19/10/2005, 08:31
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Aqui les expongo los codigos faltantes

Bueno el sistema se basa en que luego de que control.php dice que la password y el usuario son correctos lo manda al archivo de logueado.php
aqui en logueado.php tengo una breve seguridad que me permitira que si pones el link directo no te entre a la web.. bueno primera le pongo este include... <?include ("seguridad.php");?>

Lo que me permite cierta seguridad si alguien se supiera la direccion web , cierto.. aqui les posteo el archivo de seguridad.php
<?
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
$_SESSION['autentificado'];
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($autentificado != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: index.php");
exit();
}
?>

Espero cualquier respuesta gracias, estoy trabajando en eso........
  #18 (permalink)  
Antiguo 19/10/2005, 12:06
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Código PHP:
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
$_SESSION['autentificado']; 
En esta línea no estás haciando prácticamente nada.

Luego utilizas una variable $autentificado, que no está definida. Bueno, si tienes el register globals en ON, se tomará el valor de $_SESSION['autentificado'], pero si está en OFF, no funcionará.

Trata de poner al comienzo de todo esta línea:
Código PHP:
error_reporting(E_ALL); 
Así te mostrará cualquiere error. Recuerda quitarla cuando tu script ya esté on line.

En todo caso, tu script debería quedar así:
Código PHP:
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
$autentificado $_SESSION['autentificado'];// ahora sí estás asignando
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($autentificado != "SI") { 
Saludos
  #19 (permalink)  
Antiguo 19/10/2005, 14:55
 
Fecha de Ingreso: octubre-2005
Mensajes: 19
Antigüedad: 12 años, 2 meses
Puntos: 0
Todavia no me funciona

bueno Probe tu codigo y todavia me redirecciona a index.php sin importar que el usuario o contraseña sea valido, por favor revisen el codigo a ver si me pueden ayudar... porque he leido y leido y probado y probado y no le veo ningun fallo...
Cualquier ayuda espero respuesta... gracias
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 15:18.