Foros del Web » Programando para Internet » PHP »

Error en consulta y Header

Estas en el tema de Error en consulta y Header en el foro de PHP en Foros del Web. Hola! Yo también tengo un problema similar... Tengo esta página php que lo que se supone que haga es validar un usuario para ingresar a ...
  #1 (permalink)  
Antiguo 05/04/2006, 10:23
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Error en consulta y Header

Hola!
Yo también tengo un problema similar...
Tengo esta página php que lo que se supone que haga es validar un usuario para ingresar a un sector restringido.

Código PHP:
<?php require_once('../Connections/suiza_sinheaders.php'); ?>
<? 
// Defino las variables enviadas por POST
$VarUser=$HTTP_POST_VARS['StrUser'];
$VarPass=$HTTP_POST_VARS['StrPass'];

//conecto con la base de datos 
$conn mysql_connect($hostname_suiza,$username_suiza,$password_suiza); 
//selecciono la BBDD 
mysql_select_db($database_suiza,$conn) or trigger_error(mysql_error(),E_USER_ERROR);

//Sentencia SQL para buscar un usuario con esos datos 
$ssql "SELECT nomusr, passusr FROM ccsausr WHERE nomusr='$VarUser' and passusr='$VarPass'"
//Ejecuto la sentencia 
$rs mysql_query($ssql,$conn); 
if (
mysql_num_rows($rs)!=0){ 
    
//usuario y contraseña válidos si hay datos en el recordset
    //defino una sesion y guardo datos 
    
session_start(); 
    
$_SESSION['logueado'] = $row['nomusr'];
    
$ubicacion="index.php";
    
header("Location: $ubicacion"); 
    exit;
    
}else { 
    
//si no existe le mando otra vez a la portada 
    
$ubicacion="login.php?StrError=Si";
    
header("Location: $ubicacion"); 

mysql_free_result($rs); 
mysql_close($conn);



Verifiqué que no envíe nada al explorador antes de redireccionar y además que la tabla exista en la bdd y que los nombres de campo correspondan...
En otros sectores de este sitio se trabaja lo mas bien con la base de datos mencionada, pero no comprendo del todo por qué me sale este error:

Cita:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www.suiza.org.ar/public_html/administracion/proclog.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at /home/www.suiza.org.ar/public_html/administracion/proclog.php:15) in /home/www.suiza.org.ar/public_html/administracion/proclog.php on line 27

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www.suiza.org.ar/public_html/administracion/proclog.php on line 29
Les agradezco de antemano por la atención... espero que alguien me pueda dar una mano porque estoy trabajando sobre el desarrollo de una persona que no está mas en la empresa, y yo programo ASP, a PHP lo toco muy de oído.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 05/04/2006, 10:30
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Lo había posteado en otro thread pero me pidieron que abriera uno nuevo.
Ahí obtuve esta respuesta:
Cita:
verinchi:
Creo que deberias iniciar un nuevo tema para no confundir los dos problemas. En principio creo que el error del header te lo da porque el aviso del error en la función mysql_num_rows() da saldida a HTML (de echo, la estas viendo en tu pantalla). Asi que creo que el error se debe a algún problema con tu consulta o conexion con la base de datos. Si inicias un tema nuevo vemos si te podemos ayudar.
Saludos.
No comprendo muy bien... vuelvo a aclarar que no me llevo demasiado bien con php :(
el aviso de error se refiere a esta línea???
Código PHP:
mysql_select_db($database_suiza,$conn) or trigger_error(mysql_error(),E_USER_ERROR); 
Porque de ser así lo he modificado por esta otra:
Código PHP:
mysql_select_db($database_suiza,$conn); 
y me sigue dando los mismos errores.
De no ser eso, de qué otra manera puedo verificar sin dar salida a pantalla que la variable que contiene el recordset no esté vacía para así poder crear la session????
Gracias por todo, y disculpen tantas molestias, es que estoy muy perdida con esto, me han sacado de contexto totalmente :(
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #3 (permalink)  
Antiguo 05/04/2006, 10:48
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 11 años, 11 meses
Puntos: 1
Bueno, disculpa si no me explique bien en el otro post. Como sabés, para que una redirección con header() funcione, antes de su utilización no puede haber ninguna salida de codigo HTML. Parece que tu script "por si solo" no realiza ninguna salida, pero al ocurrir un error, el interprete de PHP realiza esa salida de HTML que te indica cual es el error (en tu caso la salida es: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www.suiza.org.ar/public_html/administracion/proclog.php on line 15). Al avisarte de este error ya hay salida de html, por lo que luego de el error no se puede utilizar la función header. Desde luego, si no hubiera error tampoco habria ningun aviso por parte de PHP y el header funcionaría.
Te recomiendo que luego de realizar tu consulta agreges este código para ver cual es el error:

Código PHP:
<?
....
$ssql "SELECT nomusr, passusr FROM ccsausr WHERE nomusr='$VarUser' and passusr='$VarPass'"
//Ejecuto la sentencia 
$rs mysql_query($ssql,$conn); 
if (!
$rs) {
    echo 
mysql_error();
    }
...
?>
Eso tendría que mostrarte en pantalla una descripción del error. Después la podes postear aca para ver si te podemos ayudar.
Saludos.
__________________
¿Se me entiende la letra?
  #4 (permalink)  
Antiguo 05/04/2006, 11:03
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 13 años, 2 meses
Puntos: 2
Ok, la verdad de haber sabido como mostrar el error concreto antes no hubiese molestado...
Me dice que la tabla no existe y el hecho es que yo la veo.
Debe ser que la empresa de hosting cuando hizo los cambios de servidor hace muy poco, se olvidó de decirme que las bases de datos tal vez cambiaron de ubicación y dejaron una replica en el servidor nuevo o algo por el estilo...
El hecho es que el error no tiene al parecer, nada que ver con el código o la conexión, sino con la existencia de la tabla.... :(
Realmente muchas gracias por la ayuda, me apunto el código para mostrar errores tan concretamente porque me va a ser de gran utilidad en el futuro, te mando un abrazo grande y bueno, en caso de tener mas problemas me estaré dando una vuelta. :)
__________________
Why can't we not be sober?
www.partitorium.com.ar
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 16:04.