Foros del Web » Programando para Internet » PHP »

Fallo en formulario de "login"

Estas en el tema de Fallo en formulario de "login" en el foro de PHP en Foros del Web. La situación es la siguiente. Tengo un formulario simple con "Introducir usuario" e "Introducir contraseña". Previamente, en la Base de datos he creado un Tabla ...
  #1 (permalink)  
Antiguo 30/05/2009, 07:55
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Fallo en formulario de "login"

La situación es la siguiente. Tengo un formulario simple con "Introducir usuario" e "Introducir contraseña". Previamente, en la Base de datos he creado un Tabla "usuarios" con dos campos "user" y "pwd".

Tengo el siguiente código:

Código:
<form method="post">
    <table>
        <tr><td><div style="color:#FFFFFF">Nombre de usuario:</div></td>
               <td><input name="user" type="text"></td>
        </tr>
        <tr>
            <td>Contraseña</td>
            <td><input name="pwd" type="password"></td>
        </tr>
        <tr><td align="center">
            	<?php
			$user == $_POST["user"];
			$pwd == $_POST["pwd"];
                
                if ($conex=mysql_connect ($hostname, $user, $pwd))
                {
                    if (mysql_select_db("akira", $conex))
                    {
                        $rs = mysql_query ('SELECT * FROM usuarios WHERE user = "'.$user.'" AND pwd = "'.$pwd.'"',$conex);
						if (mysql_num_rows($rs) > 0)
						{
							?>
                            <script type="text/javascript">
					document.location.href = 'privado.php';
			    </script>
                            <?php
                        }else{
							?>
                            <script type="text/javascript">
			          alert("Usuario o contraseña incorrecta");
			    </script>
                            <?php
						}
                    }else{
                        echo"No existe la Base de Datos en el servidor";
                    }
                }else{
                    echo "No se ha podido conectar con el servidor";
                    
                }
                ?>
                <input type="submit" value="Acceder">
                <input type="reset" value="Borrar">
            </td>
      </tr>
    </table>
  </form>
Mi idea es que al introducir el usuario y contraseña correcta te desvíe a privado.php, y si no, aparezca el popup del alert avisando que has introducido mal los datos. El caso es que nada más cargar la página ya ejecuta el alert avisando que son incorrectos. Escribo los datos (correctamente, comprobado) e igualmente aparece el alert.
¿En qué fallo? Llevo días quebrandome la cabeza con esto.

Gracias adelantadas.
  #2 (permalink)  
Antiguo 30/05/2009, 08:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

Lo que sucede que cuando entras tu estas verificando si aparece la inforamacion de

Código PHP:
<?PHP
$user 
== $_POST["user"];
$pwd == $_POST["pwd"];

$rs mysql_query ('SELECT * FROM usuarios WHERE user = "'.$user.'" AND pwd = "'.$pwd.'"',$conex);
if (
mysql_num_rows($rs) > 0){
...
else{
    
?>
        <script type="text/javascript">
     alert("Usuario o contraseña incorrecta");
     </script>
<?php
}
?>
Cuando carga la pagina por primera vez sale ese aviso ya que no tiene informacion
$user == $_POST["user"];
$pwd == $_POST["pwd"];
  #3 (permalink)  
Antiguo 30/05/2009, 08:10
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

¿Debería meter los $_POST a pelo en la consulta SQL? Así al no definirlos como variables al comienzo, no las verificará como vacío, ¿verdad?

Gracias por la rápida respuesta, abimaelrc.
  #4 (permalink)  
Antiguo 30/05/2009, 08:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

Debes verificar primero si la variable fue declarada en algun momento si. La variable no fue declarada anteriormente es que la persona esta entrando por primera vez. Mi sugerencia es que hagas todo aparte de HTML y luego en HTML solo colocar los valores. Colocas arriba el PHP y abajo el HTML y luego en html vas verificando con javascript. Otra cosa lo mejor no es usar ese tipo de alert. Lo mejor es poner un texto en la pagina. Ya que cansa el tratar de loguearse y te salga un aviso tener que darle click y luego volver a seleccionar el campo es como pasar doble trabajo para la persona que trata de conectarse.

Solo te indico esto como una recomendacion

<?PHP

?>

<html>
</html>

Si quieres ve seperando el codigo de PHP y cuando lo tengas separado haz la prueba y si te sale errores pon el codigo nuevo y te diremos
  #5 (permalink)  
Antiguo 30/05/2009, 08:58
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

Hice como me recomendaste, separé PHP de HTML. El código (lo pongo completo) quedó del siguiente modo:

Código:
<?php
	include("conf.php");
?>

<?php
	$user == $_POST["user"];
	$pwd == $_POST["pwd"];
                
    if ($conex=mysql_connect ($hostname, $user, $pwd))
    {
        if (mysql_select_db("akira", $conex))
        {
             $rs = mysql_query ('SELECT * FROM usuarios WHERE user = "'.$user.'" AND pwd = "'.$pwd.'"',$conex);
			 if (mysql_num_rows($rs) > 0)
			 {
             //header("Location: privado.php");
			 ?>
             
             <script type="text/javascript">
				document.location.href = 'privado.php';
			 </script>
             
             <?php echo "notok"; ?>
             <?php
             }else{
			  ?>
                 <!--
                 <script type="text/javascript">
					alert("Usuario o contraseña incorrecta");
				 </script>
                 -->
                 
              <?php echo "notok"; ?>
              <?php
			  }
          }else{
          echo"No existe la Base de Datos en el servidor";
          }
    }else{
       echo "No se ha podido conectar con el servidor";
    }
?>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Acceso privado</title>
</head>

<body background="img/bg.gif">

<div style="width:100%; background-color:#000066; z-index:1; height:100px; margin-top:100px; border:double; border-color:#000000;">
<center><img src="img/2candado.png" style="z-index:5;" align="middle"></center>
</div>

<div align="center" style="background-image:url(img/cuadro.png); background-repeat:no-repeat; background-position:center; margin-top:100px; padding:50px;">
  <form method="post">
    <table>
        <tr>
            <td>
                <div style="color:#FFFFFF">Nombre de usuario:</div>
            </td>
            <td>
                <input name="user" type="text">
            </td>
        </tr>
        <tr>
            <td>
                <div style="color:#FFFFFF">Contraseña:</div>
            </td>
            <td>
                <input name="pwd" type="password">
            </td>
        </tr>
        <tr>
            <td align="center">
                
                <input type="submit" value="Acceder">
                <input type="reset" value="Borrar">
            </td>
      </tr>
    </table>
  </form>
</div>
<br><br><br><br><br><br>
<div "style="color:#FFFFFF" align="center";>&copy; Akira Kazama Asagi</div>

</body>
</html>
Debe estar bien ahora, pues no me tira ningún error de BD ni PHP, y no aparece el mensaje de error de login al introducir los datos. Sin embargo, está recargando mi página de nuevo (no me enlaza a privado.php).

¿Podría estar mal el JavaScript?

De nuevo gracias, abimaelrc.
  #6 (permalink)  
Antiguo 30/05/2009, 09:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

Vamos a empezar por esto
$user == $_POST["user"];
$pwd == $_POST["pwd"];

No es con doble == es sencillo =

$user = $_POST["user"];
$pwd = $_POST["pwd"];

El doble se usa para comparacion el sencilllo para asignar valor
  #7 (permalink)  
Antiguo 30/05/2009, 09:14
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

Cita:
Iniciado por abimaelrc Ver Mensaje
Vamos a empezar por esto
$user == $_POST["user"];
$pwd == $_POST["pwd"];

No es con doble == es sencillo =

$user = $_POST["user"];
$pwd = $_POST["pwd"];

El doble se usa para comparacion el sencilllo para asignar valor
¡Tienes razón! Menudo fallo más torpe.


Ahora que he corregido ese fallo, me aparece el siguiente error:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'apache'@'192.168.0.61' (using password: NO) in /home/webcindario/a/k/akira/admin/index.php on line 9
No se ha podido conectar con el servidor


En la línea 9 de index.php (el archivo en el que estamos trabajando) aparece la siguiente línea:

Código PHP:
if ($conex=mysql_connect ($hostname$user$pwd)) 
Debe estar fallando algún dato en la configuración del host. ¿no?
Tengo la web alojada en miarroba.

Siento repetirme, pero gracias otra vez por tu paciencia y ayuda.
  #8 (permalink)  
Antiguo 30/05/2009, 09:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

OK por lo general cuando se instala por primera vez php y mysql y apache el codigo para conectarse si no pusiste password en Mysql es

if ($conex=mysql_connect ("localhost", "root", ""))

En el caso tuyo mysql no tiene password asi que no le ingreses password
  #9 (permalink)  
Antiguo 30/05/2009, 09:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

Te sugiero que le pongas password ya que va a estar publica la informacion.
  #10 (permalink)  
Antiguo 30/05/2009, 09:25
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

Hice como me dijiste pero sigue apareciendo el mismo mensaje de error:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'apache'@'192.168.0.63' (using password: NO) in /home/webcindario/a/k/akira/admin/index.php on line 9
No se ha podido conectar con el servidor


He probado de cambiar el user por "root" y lo mismo. ¿Podría estar fallando el Hostname? Tuve dudas pues la mysql está alojada en miarroba.
  #11 (permalink)  
Antiguo 30/05/2009, 09:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

Disculpa no me lei el error completo :S

es asi

if ($conex=mysql_connect ("192.168.0.63", "apache", ""))
  #12 (permalink)  
Antiguo 30/05/2009, 09:41
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

No te preocupes, la ayuda está sirviendo de mucho.

Ahora aparece el siguiente error:

Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server during query in /home/webcindario/a/k/akira/admin/index.php on line 9
No se ha podido conectar con el servidor


Interpreto que algo pasa con la consulta SQL. ¿o me equivoco? estoy algo verde en bases de datos...

¿Qué crees que ocurre?

Muchas gracias de nuevo.
  #13 (permalink)  
Antiguo 30/05/2009, 09:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

vas a tener que hablar con el administrador del servidor que estas pasando el php para que te diga el username y el hostname de la base de datos, lo que si sabemos es que la base de datos no tiene password conforme al error que vimos hace un tiempo. Como trataste de conectar la primera vez? o sea la información para pegarse a la base de datos trata de poner la que tenias al principio pero sin password
  #14 (permalink)  
Antiguo 30/05/2009, 10:01
Avatar de AkiraKazama  
Fecha de Ingreso: mayo-2009
Mensajes: 40
Antigüedad: 15 años
Puntos: 2
Respuesta: Fallo en formulario de "login"

Yo al principio puse el usuario y la contraseña que utilizaba para acceder a phpmyadmin en miarroba. Pero si lo pongo (aunque sea sin password) me da el error que hemos visto más arriba.

¿Debería ponerme en contacto conel administrador de miarroba para facilitarme los datos o existe alguna otra solución?

Mil gracias por paciencia, abimaelrc.
  #15 (permalink)  
Antiguo 30/05/2009, 10:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Fallo en formulario de "login"

contacta el administrador para poder conectarte a la base de datos,

me dejas saber como te fue
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 05:22.