Foros del Web » Programando para Internet » PHP »

Error al registrarme

Estas en el tema de Error al registrarme en el foro de PHP en Foros del Web. Siempre me envía al error, no se por que, pues existe en la BD el usuario. Tengo una fórmula que pasa el username: <FORM METHOD='POST' ...
  #1 (permalink)  
Antiguo 05/02/2003, 18:31
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.009
Antigüedad: 22 años, 3 meses
Puntos: 11
Error al registrarme

Siempre me envía al error, no se por que, pues existe en la BD el usuario.

Tengo una fórmula que pasa el username:

<FORM METHOD='POST' ACTION='/php/php/login.php'>
<INPUT TYPE='TEXT' NAME='username'>
<INPUT TYPE='Password' NAME='password'>
<INPUT TYPE='SUBMIT' name="Ingresar" Value='Ingresar'>

es recibida por login.php que la procesa así:
<?

@ $db=mysql_connect ("localhost", "d_r", "r");
if (!$db){
echo "Error: Could not connect to database. Please try again later.";
exit;
}
mysql_select_db ("d_r");


if ($HTTP_POST_VARS['Ingresar']!=""){

$query = "Select * From Registration where username ='".$username."'";
//echo $query;
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$dbpassword = $row["password"];
if ($dbpassword == $password){
session_register("session_username");
$session_username = $username;
session_register("session_email");
$session_email = $row["Email"];
echo " <script>document.location.href='/menu.php'</script>";
}else{
//echo $query;
echo " <script>document.location.href='/error.php?err=4'</script>";
}
} // Actualizar
?>


Al darle el echo $query me responde
Select * From Registration where username ='b'

O sea está bien, y ese usuario existe, pero al ponerla a trabajar, siempre me envía al error 4.

Alguien sabe por qué?
Tengo raaaato de estar peleando con esto y nada...
  #2 (permalink)  
Antiguo 05/02/2003, 22:00
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Te paso uno que hice y me funciona de maravilla...



Código PHP:
$varNoreg="Invitado"

if (isset($_GET["salir"]))
    {
        
$varID=0;
        
$varUSR=$varNoreg;
        
$varNIV=0;
        unset(
$_SESSION["sessionID"]);
        unset(
$_SESSION["sessionUSR"]);
        unset(
$_SESSION["sessionNIV"]);
        
session_destroy();
        
header("Location: $varSalida");
        exit();
    }
if (isset(
$_SESSION["sessionUSR"]))
    {
        
$varUSR=$_SESSION["sessionUSR"];
        
$varID=$_SESSION["sessionID"];
        
$varNIV=$_SESSION["sessionNIV"];
    }
elseif (isset(
$_COOKIE["cookieUSR"])and $_COOKIE["cookieUSR"]!="")
    {
        
$varID=$_COOKIE["cookieID"];
        
$varUSR=$_COOKIE["cookieUSR"];
        
$varNIV=$_COOKIE["cookieNIV"];
        
$_SESSION["sessionID"]=$_COOKIE["cookieID"];
        
$_SESSION["sessionUSR"]=$_COOKIE["cookieUSR"];
        
$_SESSION["sessionNIV"]=$_COOKIE["cookieNIV"];
    }
else
    {
        if (isset(
$_POST["form_usuario"]))
            {
                
$varFusuario=$_POST["form_usuario"];
                
$varFpass=$_POST["form_password"];
                
$varFrecordar=$_POST["form_recordar"];
                
mysql_connect($varServidor,$varUser,$varPassword);
                
mysql_select_db($varBase);
                
$Qbuscar=mysql_query("select * from administradores where cuenta='$varFusuario'");
                
$Qbuscar_fila=mysql_fetch_array($Qbuscar);
                if (
$varFpass==$Qbuscar_fila["password"] and $varFusuario!="" and $varFpass!="")
                    {
                        
$varID=$Qbuscar_fila["adminID"];
                        
$varUSR=$Qbuscar_fila["nombre"];
                        
$varNIV=$Qbuscar_fila["nivel"];
                        
$_SESSION["sessionID"]=$varID;
                        
$_SESSION["sessionUSR"]=$varUSR;
                        
$_SESSION["sessionNIV"]=$varNIV;
                        if (
$varFrecordar=="true")
                            {
                                
setcookie("cookieID",$varID,time()+31536000);
                                
setcookie("cookieUSR",$varUSR,time()+31536000);
                                
setcookie("cookieNIV",$varNIV,time()+31536000);
                            }
                    }
                else
                    {
                        
$varID=0;
                        
$varUSR=$varNoreg;
                        
$varNIV=0;
                        
$varErrorlog=1;
                    }
                    
mysql_free_result($Qbuscar);
            }
        else
            {
                
$varID=0;
                
$varUSR=$varNoreg;
                
$varNIV=0;
            }
    }

If (
$varID==0){
// Mandas a la pagina de error
}
else
{
//Le das acceso


Espero que te sirva...
__________________
Manoloweb
  #3 (permalink)  
Antiguo 06/02/2003, 09:29
 
Fecha de Ingreso: enero-2002
Ubicación: Perez Zeledon Costa Rica
Mensajes: 1.009
Antigüedad: 22 años, 3 meses
Puntos: 11
Gracias amigo.
Pero no estoy usando multiples niveles de accesso, tampoco cookies.

Lo que deseo es echar a andar este script que funcionaba bien, pero ahora no.

Lo único que he cambiado es otra tabla que nada que ver con la de registración, es la tabla de comercios, pero nada que ver con esta pag. ¿Esto puede afectar?

  #4 (permalink)  
Antiguo 06/02/2003, 09:36
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
No, eso no debe afectar. (Lo de la otra tabla) pero...

Mira, alguna vez tuve un problema parecido construyendo un "SELECT", y lo solucioné cambiando esto:

$query = "Select * From Registration where username ='".$username."'";

Por esto:

$query="Select * From Registration where username=$username"

Pruebalo a ver si te sirve...
__________________
Manoloweb
  #5 (permalink)  
Antiguo 06/02/2003, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya q envias por POST tus variables .. y en un punto lo verificas via $HTTP_POST_VARS .. Usalo con todas las variabels .. Sobre todo si usas register_globals a OFF .. donde deberias usar mejor $_POST .. (PHP 4.1. en adelante) ...

El problema parece q lo tienes con el password y la condicional q haces (IF) .. una vez q obtienes el password de ese registro y lo comparas con el q te entra del formulario..

Código PHP:
$query "Select * From Registration where username ='".$HTTP_POST_VARS['username']."'";

if (
$dbpassword == $HTTP_POST_VARS['password']){ 
De todas formas .. con usar una consulta tipo:

Código PHP:
$query "Select * From Registration where username ='".$HTTP_POST_VARS['username']."' AND password='".$HTTP_POST_VARS['password']."'"
Luego solo cuentas si esa consulta te arroja un solo registro (con mysql_num_rows() .. y listo ..

Código PHP:
if (mysql_num_rows($result) ==1){
// Usuario correcto .. 
} else {
// falló el User no existe o el pass no es correcta.

Un saludo,

Última edición por Cluster; 06/02/2003 a las 10:39
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 22:51.