Foros del Web » Programando para Internet » PHP »

problemas con header("Location: pagina.php")

Estas en el tema de problemas con header("Location: pagina.php") en el foro de PHP en Foros del Web. mi problema es el siguiente tengo: Tengo los siguientes ficheros: login.php conexion.php autentificacion.php login.php es una formulario donde me pide mi usuario y contraseña y ...
  #1 (permalink)  
Antiguo 09/08/2006, 08:53
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
problemas con header("Location: pagina.php")

mi problema es el siguiente tengo:

Tengo los siguientes ficheros:

login.php
conexion.php
autentificacion.php

login.php es una formulario donde me pide mi usuario y contraseña

y conexion.php

es el siguiente

<?php
function Conectarse()
{
if(!($enlace = mysql_connect("localhost","root","javsoft2006")))
{
header("Location:error_conexion.htm");
}
if(!mysql_select_db("biblioteca",$enlace))
{
header("Location:error_conexion.htm");
}
return $enlace;
}
?>

y autentificacion.php es el siguiente

<?php
require("conexion.php");
//Codigo que controla a que se quiere acceder a bajar o subir publicaciones
if(isset($_POST["Entrar"]))
{
$enlace = Conectarse();
$result = mysql_query("select * from usuarios where usuario='".$_POST["usuario"]."' AND password='".$_POST["password"]."'",$enlace);

if(mysql_num_rows($result) != 0)
{
//Asignamos a array el resultado de la consulta
$datos_usuarios = mysql_fetch_array($result);
//Liberamos y cerramos la conexion
mysql_free_result($result);
mysql_close($enlace);

//definimos session o damos nombre
session_name("autentificado");
//iniciamos session
session_start();
//no cachear esta pagina....
session_cache_limiter('nocache,private');

//asignamos la variables de sessiones
$_SESSION["autentificado"] = "SI";
$_SESSION["nivel"] = $datos_usuarios["nivel"];
$_SESSION["nombres"] = $datos_usuarios["Nombres"];
$_SESSION["apellidos"] = $datos_usuarios["Apellidos"];
//Redireccionamos al panel de control principal
header("Location:panel.php");
}
else
{
//sino existe el usuario va para atras
header("Location:login.php?errorusuario=si");
}//Cierre del ELSE
}//Fin de el IF
?>

cuando un usuario existe despues de verificar no me redirecciona en la linea que aparece en color rojo y me redirecciona en la linea de color verde.

espero que me puedan ayudar.

Att. JavSoft
  #2 (permalink)  
Antiguo 09/08/2006, 09:15
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 12 años, 3 meses
Puntos: 0
Cita:
Iniciado por javsoft Ver Mensaje
...
if(mysql_num_rows($result) != 0) // Cambialo por mysql_num_rows($result) y nada mas!
{
...
header("Location:panel.php");
}
else
{
...
header("Location:login.php?errorusuario=si");
}//Cierre del ELSE
}//Fin de el IF
?>

cuando un usuario existe despues de verificar no me redirecciona en la linea que aparece en color rojo y me redirecciona en la linea de color verde.

espero que me puedan ayudar.

Att. JavSoft
Seguramente, tiene que ser el error que ya te mostré...
Tambien, prueba con esta sentencia SQL:
$result = mysql_query("SELECT * FROM usuarios WHERE usuario='{$_POST["usuario"]}' AND password='{$_POST["password"]}'",$enlace);

Lo más posible que es el problema no es en el header(), el problema esta en el Script de PHP que esta chequeando si existen usuarios o no...

A veces (Y suele ocurrir...) que se nos olvida ingresar datos a la Base de Datos ... Chequea la Base de Datos y ingresa un usuario nuevo para comprobar si esta correcto tu Script ;D.

Atte... DarkXNightmare.
__________________
Cambiando mi Web... sean pacientes :P
  #3 (permalink)  
Antiguo 09/08/2006, 09:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
¿Para que usas?:
$_SESSION["autentificado"] = "SI";

Si ya usas otras variables de sesión que te van a servir para validar tu sesión activa .. No tiene sentido esa variable extra.

Usa exit; despues de tus header() de tipo "Location" (sobre todo en tu función conectarse() ...

Por lo demás .. asegurate que valor te entrega mysql_num_rows($result) para la ejecución de tu $resul (tu consulta SQL) .. si no pasa al "else" que que el resultado es != (diferente) de 0 .. pero realmente deberías hacer:

if(mysql_num_rows($result) == 1)

por qué si se encuentra un registro con ese "nombre" y "contraseña" igual .. ahí es donde consideras que hizo su login correcto y creas tus variables de sesión.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 09/08/2006, 09:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar tambien mysql_error() para ver problemas a nivel SQL:

Código PHP:
$result mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST["usuario"]."' AND password='".$_POST["password"]."'",$enlace) or die (mysql_error()); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 13:12.