Foros del Web » Programando para Internet » PHP »

Login PHP contra MySQL

Estas en el tema de Login PHP contra MySQL en el foro de PHP en Foros del Web. Estimados, Soy nuevo en la programación Web. He leido, pero llego a este medio por que realmente no logro darme cuenta sobre mis errores. Paso ...
  #1 (permalink)  
Antiguo 01/07/2013, 12:16
 
Fecha de Ingreso: julio-2013
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 2
Información Login PHP contra MySQL

Estimados,

Soy nuevo en la programación Web. He leido, pero llego a este medio por que realmente no logro darme cuenta sobre mis errores.

Paso a explicar. Estoy haciendo un sitio en Bootstrap. Quedo hermoso, de hecho, logre varias cosas. Ahora estoy con el Login, que me sera necesario. He seguido algunos How To. Y saque, para mi básico entender, lo mas sencillo.

1ro.

Cree la tabla usuarios. Con los campos;

1. idusuario
2. usuario
3. password

Sobre el index.html paso por POST el user y el password.

Todo se envia a login.php, el mismo obviamente incluye el conexion.php. Hasta aqui, todo bien. Hago la consulta al MySQL sin problemas.



Mis problemas radican en el ISSET_SESSION.

No logro ingresar al ISSET, negado. No Se si tengo que inicializar la variable en FALSE o de otro manera. Espero puedan darme una pequeña ayuda!

Saludos.

Código PHP:
Ver original
  1. <?php
  2. include_once "conexion.php";
  3.  
  4. $user = $_POST['user'];
  5. $password = $_POST['password'];
  6. $userid = FALSE;
  7.  
  8. if(!isset($_SESSION['userid'])){
  9.     if(isset($_POST['login'])){
  10.         if (verificar_login($user,$password,&$result)==1){
  11.             echo 'LLEGUE!';
  12.             $_SESSION['userid'] = $result->idusuario;
  13.             header("location:index.html");
  14.         }
  15.         else{
  16.  
  17.             echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</div>';
  18.         }
  19.     }
  20. } else {
  21.     echo 'Su usuario ingreso correctamente.';
  22.     echo '<a href="logout.php">Logout</a>';
  23. }
  24.  
  25.  
  26. function verificar_login($user,$password,&$result)
  27.     {
  28.         $sql = "SELECT * FROM usuarios WHERE usuario = '$user' and password = '$password'";
  29.         $rec = mysql_query($sql);
  30.         $count = 0;
  31.         while($row = mysql_fetch_object($rec))
  32.         {
  33.             $count++;
  34.             $result = $row;
  35.         }
  36.         if($count == 1)
  37.         {
  38.             echo 'HAY USUARIO!!!!!!';
  39.             return 1;
  40.         }
  41.         else
  42.         {
  43.             echo 'NO HAY USUARIO!!!!!!';
  44.             return 0;
  45.         }
  46.     }
  47.  
  48. ?>

Si es necesario un codigo mas, me avisan.

Lo que hago es fijarme si hay sesión y luego si el botón con etiqueta login fue presionado.

Espero no estar metiendo mucho la pata!

Muchas gracias!
  #2 (permalink)  
Antiguo 01/07/2013, 13:16
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Login PHP contra MySQL

No logro ingresar al ISSET utiliza var_dump($_SESSION) para ver que hay en el array, desde alli puedes continuar.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 01/07/2013, 13:48
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Login PHP contra MySQL

Cual es el error que te manda?

a simple vista el unico error que veo es que invocas la función 'verificar_login' antes de definirla, debes recordar que PHP es interpretado y que es leido linea a linea, y cuando llega a la linea 11 busca algo que no existe (porque esta definido hasta la linea 27).

Postea los errores que te manda, y de entrada sube la función antes del código operativo (mueve de la 27 a la 8)
__________________
No todo lo que se hace en segundo plano es AJAX
  #4 (permalink)  
Antiguo 01/07/2013, 13:58
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Login PHP contra MySQL

iandrade: si bien php se puede considerar "lineal" en su ejecución, para correr un script php primero verifica todo el script, para revisar que su sintáxis, cargar sus elementos etc. Por lo que hacer algo como

Código PHP:
Ver original
  1. <?php
  2.  
  3. echo hola();
  4.  
  5. function hola(){
  6.     return "hola mundo";
  7. }

Y funcionará perfectamente.
  #5 (permalink)  
Antiguo 01/07/2013, 16:13
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Login PHP contra MySQL

ocp001a: gracias, lo que comenté fue porque me paso y continuó pasando a la mayoría de programadores que he capacitado :).
__________________
No todo lo que se hace en segundo plano es AJAX
  #6 (permalink)  
Antiguo 02/07/2013, 12:43
 
Fecha de Ingreso: julio-2013
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Login PHP contra MySQL

Antes que nada gracias a todos

Como les decía, chicos...

Logro ingresar a la consulta, de SQL...Y responde bien si es usuario o no...

El tema es para despues...necesito hacer la Re dirección...al index.html o avisar que es erróneo...

iandrade no se como decirte, el error, por que no se debbugear...Solo programe en C, C++ y Visual Studio aplicaciones Desktop...

Estoy haciendo mis primeras armas con esto!
  #7 (permalink)  
Antiguo 02/07/2013, 13:13
Avatar de thedaket  
Fecha de Ingreso: junio-2011
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Login PHP contra MySQL

Hola, te paso un código bastante funcional.

Código PHP:
Ver original
  1. if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
  2. {
  3.    // Se puede utilizar la funcion para eliminar algun caracter en especifico
  4.    $usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
  5.    
  6.    $password = $_POST["password"];
  7.    
  8.    $result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'',$conexion);
  9.    if($row = mysql_fetch_array($result)){
  10.       if($row["password"] != $password){
  11.          echo "Contraseña incorrecta";
  12.       }else{
  13.  
  14.          $_SESSION['k_username'] = $row['usuario'];
  15.          echo 'Bienvenido '.$_SESSION['k_username'].' <p>';
  16.          echo '
  17.              <script type="text/javascript">
  18.                 location.href="bienvenida.php";
  19.              </script>
  20.          ';
  21.       }
  22.    }else{
  23.       echo $_POST["usuario"].' no está registrado  en la base de datos';
  24.    }
  25.    mysql_free_result($result);
  26. }

Es las etiquetas script colocas la acción que quieras location.href="url" y listo recuerda que sería bueno que uses algún algoritmo de seguridad para las contraseñas, si quieres ayuda avísame saludos.
__________________
Sí AJAX quieres usar jQuery debes agregar...
  #8 (permalink)  
Antiguo 02/07/2013, 16:44
 
Fecha de Ingreso: julio-2013
Mensajes: 19
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Login PHP contra MySQL

Quedo genial!

Ya puedo pasar al proximo escalon.



Ya el usuario esta "Autenticado", después veré la seguridad...Imaginate thedaket que es la primera aplicación Web.

Necesito recomendaciones, de como quedarme con el usuario, para manejarlo...En que variable queda? Algo para leer, que recomiendes de eso?

En cuanto a seguridad, que opinas? Algun Hash? Semilla de encriptacion? Es un sitio, que no va a usar nadie...Es practica....

Mil gracias! Solo tuve que cambiar el POST que era user en vez de Usuario y $conexion por $con que era el nombre que tenia ese objeto!

No sabes lo que te agradezco..encima entendi la sentencia! ja!
  #9 (permalink)  
Antiguo 03/07/2013, 07:30
Avatar de thedaket  
Fecha de Ingreso: junio-2011
Mensajes: 55
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Login PHP contra MySQL

Para seguridad sería usar funciones propias de PHP y MySQL, como el ya conocido MD5, SHA1 etc...

Para leer las sesiones es muy fácil, toda la información se guarda en en un Array llamado $_SESSION en el ejemplo que te pasé después de que inicie sesión.

Puedes usar: echo 'Usuario: '.$_SESSION['k_username'];

Y una sencilla validación para ver si hay una sesión:

echo isset($_SESSION['k_username']) ? 'No se ah iniciado sesion' : 'Ya se inicio una sesion';

Suerte y cualquier duda aquí estamos.
__________________
Sí AJAX quieres usar jQuery debes agregar...
  #10 (permalink)  
Antiguo 21/12/2015, 14:03
 
Fecha de Ingreso: diciembre-2015
Ubicación: Veracruz
Mensajes: 7
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Login PHP contra MySQL

bueno mi problema es que si me logea, pero a la hora de mostrar mi nombre de usuario, no

lo muestra, solo lo muestraa despues de que me intento logear dos veceso antes de iniciar

sesion le oprima el boton logout, entonce si lo muestra. Ya lo he probado reiniciando el navegador para descartar que alla alguna sesión abierta o algo asii..ayuda

<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0">
<title>Inicio</title>
<!-- Estilos CSS vinculados -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/estilos.css" rel="stylesheet">
</head>

<body>
<div class="container">
<div class="page-header">
<div class="row">
<div class="col-md-11"><h1>Sistema <small> </small></h1></div>
<div class="col-md-1"><a href="logout.php">Salir</a></div>
</div>
</div>

<?php

session_start();
include_once"abrir_conexion.php";

function verificar_login($user,$password,&$result) {
$sql = "SELECT usuario FROM usuarios WHERE usuario = '$user' and password =

'$password'";
$rec = mysql_query($sql);

if(mysql_num_rows($rec)>0)
{

$row = mysql_fetch_object($rec);//dado que solamente espera un registro no es

necesario un while
return true;
}
else
{
return false;
}
}

if(!isset($_SESSION['userid']))
{
if(isset($_POST['login']))
{
if(verificar_login($_POST['user'],$_POST['password'],$result) )
{

echo $_SESSION['userid']=$_POST['user'];

echo $_SESSION['recinto']=$_POST['recinto'];
echo '<meta http-equiv="refresh" content="0;url=menu.php" />';

}
else
{
echo '<div class="error">Su usuario es incorrecto, intente nuevamente.</div>';
}
}
?>

<style type="text/css">
*{
font-size: 14px;
}
body{
background:#aaa;
}
form.login {
background: none repeat scroll 0 0 #F1F1F1;
border: 1px solid #DDDDDD;
font-family: sans-serif;
margin: 0 auto;
padding: 10px;
width: 328px;
box-shadow:0px 0px 30px black;
border-radius:10px;
}

.error{
color: red;
font-weight: bold;
margin: 10px;
text-align: center;
}
</style>

<form action="" method="post" class="login form-horizontal">
<div class="form-group input-sm" id="grupo_usuario ">
<label class="control-label col-md-4 ">Usuario </label>
<div class="col-md-8">
<input name="user" type="text" class="form-control input-sm" required>
</div>
</div>
<div class="form-group input-sm" id="grupo_contraseña">
<label class="control-label col-md-4">contraseña</label>
<div class="col-md-8">
<input name="password" type="password" class="form-control input-sm"

required>
</div>
</div>
<div class="form-group input-sm" id="grupo_recinto">
<label class="control-label col-md-4">Recinto</label>
<div class="col-md-8">
<select name="recinto" type="text" id="inputrecinto" class="form-control input-

sm" >
<option></option>
<option value="01"><b>01 </b></option>
<option value="02"><b>02</b></option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-9 col-md-3">
<input name="login" type="submit" value="Entrar">
</div>
</div>
</form>
<?php
}else{
echo "B i e n ven ido, " .$_SESSION["userid"]; ?> <br><br>
<!-- Js vinculados -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="js/responsive.js"></script>
<script src="js/bootstrap.min.js"></script>
<?php
}
?>

</div>
</body>
</html>

Etiquetas: login, mysql
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:49.