Foros del Web » Programando para Internet » PHP »

Validacíón de Login

Estas en el tema de Validacíón de Login en el foro de PHP en Foros del Web. Bueno tengo el siguiente codigo para un login: <? session_start(); if(isset($SESSION)){ header("location:user.php"); /* Si ha iniciado la sesion, vamos a user.php */ } else { ...
  #1 (permalink)  
Antiguo 11/11/2009, 11:00
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Validacíón de Login

Bueno tengo el siguiente codigo para un login:

<?
session_start();
if(isset($SESSION)){
header("location:user.php"); /* Si ha iniciado la sesion, vamos a user.php */
} else {
/* Cerramos la parte de codigo PHP porque vamos a escribir bastante HTML y nos será mas cómodo así que metiendo echo's */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Spark Boy :: Carpeta de Contenidos :: Login</title>
<link href="../../css/folders/form.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="centrante">
<div id="cinturon_1"></div>
<div id="cinturon_2"></div>
<div id="contenedor">
<div id="superior">
<img src="../../box/imagenes/logo_spark.png" id="logo">
</div>
<h1>Carpeta de Contenidos <span class="gris">- Login</span></h1>
<form action="comprueba.php" method="POST" class="miform">
<li>Login:</li> <input type="text" name="login" id="texfield1"/><br>
<li>Password:</li> <input type="password" name="pass" id="texfield2"/><br><br>
<input type="submit" value="Entrar" id="button" class="boton">
</form>
<?
if (isset($_POST[login]) && $_POST[login]!="") {
echo "Hola $_POST[login]";
}
else {
if (isset($_POST[login])) {
echo "Rellena los campos";
}
}
?>
</div>
</div>
</body>
</html>
<?
} /* Y cerramos el else */
?>

Y con el siguiente codigo (comprueba.php) controlo y conecto a la base datos. El tema es que me estoy iniciando en PHP, y saque estos codigos de internet. Capte un error en su seguridad, ya que si el usuario no introduce nada en los campos login y password ingresa igual a la pagina privada. Supongo que debo utilizar la función isset() dentro del siguiente codigo, pero hasta ahora intente y no lo pude resolver... ahi les va el codigo al cual llamo con el form:

<?php
session_start();
// modificacion de codigo Xombra (www.xombra.com) 21/03/2009 para sectorweb.net
include("config.php");
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass']))); // encriptamos en MD5 para despues comprar (Modificado)
// $query="SELECT * FROM usuarios WHERE login='$login'"; Antes
$link=mysql_connect($server,$dbuser,$dbpass);

$query = sprintf("SELECT usuarios.login,
usuarios.nombre,
usuarios.apellido,
usuarios.empresa,
usuarios.email
FROM usuarios WHERE usuarios.login='%s' && usuarios.password = '%s'", // Ahora
mysql_real_escape_string($login),mysql_real_escape _string($pass));
$result=mysql_db_query($database,$query,$link);
// if(mysql_num_rows($result)==0){ // antes
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password

$array=mysql_fetch_array($result);
// if($array["password"]==crypt($pass,"semilla") ){ // Antes
/* Comprobamos que el password encriptado en la BD coincide con el password que nos han dado al encriptarlo. Recuerda usar semilla para encriptar los dos passwords. */
$_SESSION["login"]=$array["login"];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["apellido"]=$array["apellido"];
$_SESSION["empresa"]=$array["empresa"];
$_SESSION["email"]=$array["email"]; // Agrgado Nuevo
header("Location:user.php");
} else {
echo "Login o Password Incorrectos"; // Ahora
}

?>
  #2 (permalink)  
Antiguo 12/11/2009, 08:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Validacíón de Login

Te sugiero que en vez de usar isset, uses la función de empty para verificar si esta vacio, tambien usa trim para borrar los espacios extras.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 14:55.