Foros del Web » Programando para Internet » PHP »

login para pagina web

Estas en el tema de login para pagina web en el foro de PHP en Foros del Web. holas estoy aprendiendo y busco un tuto de logging pero quisiera algo no muy complicado de desarrollar pero con el encriptador de pass para la ...
  #1 (permalink)  
Antiguo 18/06/2009, 16:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Exclamación login para pagina web

holas estoy aprendiendo y busco un tuto de logging pero quisiera algo no muy complicado de desarrollar pero con el encriptador de pass para la base de datos XD
  #2 (permalink)  
Antiguo 18/06/2009, 16:41
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: login para pagina web

hacer un loging es muy sencillo aunque hay que tener mucho cuidado por los temas de seguridad.....

simplemente haces un formulario con los capos de usuario y contraseña
te vas hacia otra pagina PHP donde recibes esos datos....

y lo que haces es hacer un select mas o menos como el siguiente

Código PHP:
<?php
    $usr 
$_GET["usuario"];
    
$pass md5($_GET['password']);
    
/* la funcion md5 es la que encripta el password para verificarlo en la BD
    ya que en la BD tambien esta encriptado el password */
    
$query "SELECT * FROM tabla WHERE usuario='.$usr.' AND password='.$pass.'";
    
$result mysql_query($query);
    
$numResults mysql_num_rows($result);
    
//lo que hace mysql_num_rows es contar cuantos regitros genero mysql_query 
    
if($numResults==1){
            
//creamos las SESSION o COOKIESy todo eso......
    
}else{
                                           
// el usuario no existe 
                
}
?>
ese es un codigo un poco burdo y sin nada de seguridad :P ahi ya te queda el de hacer las validaciones de si se recibieron los campos del formulario.... que no esten en blanco "parsearlo" para revisar que el usuario no haya escrito caracteres extraños (por motivos de seguridad!!!)... y tambien ahi de investigacion un poco el uso de SESSIONS o COOKIES o.O pero basicamente eso es :P

saludos :]
  #3 (permalink)  
Antiguo 18/06/2009, 16:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Respuesta: login para pagina web

ok pero como creo la tabla por comando para el password, yo la hise:

Cita:
DROP TABLE IF EXISTS `user`;
CREATE TABLE IF NOT EXISTS `user` (
`ID` int(8) unsigned NOT NULL auto_increment,
`username` varchar(25) default NULL,
`password` varchar(30) default NULL,
`nombre` varchar(30) default NULL,
`apellido` varchar(30) default NULL,
`telefono` varchar(30) default NULL,
`email` varchar(50) default NULL,
`GM` varchar(1) default '0',
PRIMARY KEY (`ID`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
  #4 (permalink)  
Antiguo 18/06/2009, 17:02
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: login para pagina web

si asi esta bien la tabla aunque seria mejor que especificaras NOT NULL esos campo...

me imagino que tu duda va algo por.... como es que va a quedar encriptados los passwords....
eso se hace al momento de agregar un nuevo registro a la tabla... lo que haces es que, lo que el usuario haya escrito en el campo de password lo encriptas usando la funcion md5() asi al momento de guardarlo ya quedara encriptado en la BD...

a ver si le pegue a tu duda xD

saludo :]
  #5 (permalink)  
Antiguo 18/06/2009, 17:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Respuesta: login para pagina web

ya creo que ya te entiendo
entonces agregar tanto a la creacion del cuenta la encriptacion como al loggin XD
  #6 (permalink)  
Antiguo 18/06/2009, 18:21
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: login para pagina web

Cita:
Iniciado por arcanisgk1 Ver Mensaje
ya creo que ya te entiendo
entonces agregar tanto a la creacion del cuenta la encriptacion como al loggin XD
asi es :]

y recuerda siempre revisar todo lo que el usuario escribe... me refiero a examinar la cadena de caracteres en busca de algun caracter extraño como /#%&'" esto para cuestiones de seguridad (la mas comun SQL Injection o.O) esto hazlo siempre que el usuario tenga que escribir algo en alguna parte de tu sitio web


saludos y espero te sirva :]
  #7 (permalink)  
Antiguo 19/06/2009, 00:04
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: login para pagina web

hola en ese formulario si usas ' OR 1=1 OR 1=' entraria como usuario logeado sin tener que registrarme ahora imaginate que eso sea para el adminstrador que crees que puedo hacer ? bueno saludos espero que esta funcion te ayude a filtrar la basura del usuario mi lema.

1 nunca confies en el usuario
2 valida la informacion
3 vuelve a preguntarte la primera

Código PHP:
  
     
// Limpiar toda la basura del usuario
    
public function limpiar($value){
     
    if( 
get_magic_quotes_gpc() ){

          
$value stripslashes(trim($value ));
    }
   
    
    return 
$value;
   
   }

//modo de uso

$campo =   limpiar($_POST['campo']); 
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #8 (permalink)  
Antiguo 19/06/2009, 00:07
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: login para pagina web

y cuando pudas haz un debug basico

print_r($_POST);
echo '<BR>'.$sql;
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #9 (permalink)  
Antiguo 19/06/2009, 03:45
 
Fecha de Ingreso: abril-2009
Ubicación: En dust 2
Mensajes: 149
Antigüedad: 15 años
Puntos: 2
Respuesta: login para pagina web

utiliza siempre el mysql_real_escape_string en las secuencias sql
  #10 (permalink)  
Antiguo 19/06/2009, 09:08
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: login para pagina web

Cita:
Iniciado por eddwinpaz Ver Mensaje
hola en ese formulario si usas ' OR 1=1 OR 1=' entraria como usuario logeado sin tener que registrarme ahora imaginate que eso sea para el adminstrador que crees que puedo hacer ? bueno saludos espero que esta funcion te ayude a filtrar la basura del usuario mi lema.

1 nunca confies en el usuario
2 valida la informacion
3 vuelve a preguntarte la primera

Código PHP:
  
     
// Limpiar toda la basura del usuario
    
public function limpiar($value){
     
    if( 
get_magic_quotes_gpc() ){

          
$value stripslashes(trim($value ));
    }
   
    
    return 
$value;
   
   }

//modo de uso

$campo =   limpiar($_POST['campo']); 
si eso fué lo que le dije... que aun asi tenia que tener cuidado por los problemas de seguridad xD obviamente ese formulario es lo mas inseguro que pueda existir en el mundo :P (SQL Injection :P lo de 'or '1' ........)

Pero si es importante ser paranoico y nunca confiar en lo que el usuario escribe :P
  #11 (permalink)  
Antiguo 22/06/2009, 19:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Respuesta: login para pagina web

ok revisare el codigo que utilisara y pondre tanto el php como el html ah prueba lo subo a ver su opinion sobre el codigo.

Última edición por arcanisgk1; 24/06/2009 a las 00:09
  #12 (permalink)  
Antiguo 22/06/2009, 19:52
Avatar de p3rikl3s  
Fecha de Ingreso: febrero-2009
Ubicación: Valencia
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 9
Respuesta: login para pagina web

No hay nada mejor que conocer al enemigo. Por eso te recomiendo leer mas acerca de inyección SQL, robo de cookies, envenenamiento de url, "man in the middle", etc. Puedes consultar aquí:

http://www.owasp.org/index.php/Spain


Así podrás aprender las más comunes vulnerabilidades en una web para que puedes evitarlas.


Saludos.
__________________
También me hago llamar Tropiburguer. Sígueme en twitter: @tropiburguer
  #13 (permalink)  
Antiguo 28/06/2009, 04:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Exclamación Respuesta: login para pagina web

ok este es el sistema que estabu usando sin el md5:

loggin
Código PHP:
<?
// Configura los datos de tu cuenta
include("config/config.php");
session_start();
// ya puedes acceder a la seccion de ".'<a href="members.php">Miembros</a>'."
// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');

if (
$_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if (
$password==NULL) {
echo 
"La password no fue enviada";
}else{
$query mysql_query("SELECT username,password FROM user WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
echo 
"Login incorrecto";
}else{
$query mysql_query("SELECT username,password FROM user WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
echo (
"Bienvenido <strong>".$_SESSION['s_username']." </strong> no hay partida en estos momentos pero ");
print 
"<a href='http://127.0.0.1/juego.html'>entra a tu a la sesion</a>";
}
}
}
?>
config/config.php
Cita:
<?
$dbhost='127.0.0.1';
$dbusername='root';
$dbuserpass='beta';
$dbname='ged';
?>
tube problemas con la creacion de cuentas:

no se cambiar este codigo:

Código PHP:
$link mysql_connect("127.0.0.1","root","beta");
mysql_select_db("ged",$link); 
por este otro:

Código PHP:
include("config/config.php");
session_start();
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos'); 
completo aqui esta el que uso

crear cuenta
Código PHP:
<?//Primero comprovamos datos que no esten vacion
if(isset($_POST['username']) && !empty($_POST['username']) &&
isset(
$_POST['password']) && !empty($_POST['password']) &&
isset(
$_POST['nombre']) && !empty($_POST['nombre']) &&
isset(
$_POST['apellido']) && !empty($_POST['apellido']) &&
isset (
$_POST['telefono']) && !empty($_POST['telefono']) &&
isset (
$_POST['email']) && !empty($_POST['email'])) {

//entrando a la base de datos
$link mysql_connect("127.0.0.1","root","beta");
mysql_select_db("ged",$link);

// con esta sentencia insertamos los datos en la base de datos XD
mysql_query("INSERT INTO user (username,password,nombre,apellido,telefono,email)
VALUES ('{$_POST['username']}','{$_POST['password']}','{$_POST['nombre']}','{$_POST['apellido']}','{$_POST['telefono']}','{$_POST['email']}')"
,$link);

// Ahora comprobaremos que todo ha ido correctamente
$my_error mysql_error($link);

if(!empty(
$my_error)) {

echo 
"Ha habido un error al insertar los valores. $my_error"

} else {

echo 
"Los datos han sido introducidos satisfactoriamente";
echo (
"Bienvenido no hay partida en estos momentos pero ");

}

} else {

echo 
"Error, no ha introducido todos los datos";

}

?>
revisen a ver que opinan en cuanto a la seguridad, estubebuscando validadores de php y no encontre a ver si me hacen alguna sugerencia de alguno bueno o me dan algun ejemplo como pintaria mejor el loggin
haora revisando lo la creacion de cuentas me manda error;
intente aumentar la seguridad

Última edición por arcanisgk1; 28/06/2009 a las 05:14
  #14 (permalink)  
Antiguo 28/06/2009, 05:48
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: login para pagina web

Fijate en www.colotephp.com.ar hay un ejemplo sencillo !!!

Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #15 (permalink)  
Antiguo 28/06/2009, 16:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Respuesta: login para pagina web

y es seguro ese loggin??

por que yo la verdad no se que aya que modificarle para que entra a la base de datos que ya yo tengo XD

www.colotephp.com.ar
tambien noto que en el codigo de iniciar la secion pide estos archivos dehoja de estylo:

<link rel="stylesheet" type="text/css" media="all" href="css/full.css" />
<script type="text/javascript" src="tabular.js"></script>


y no estan XD
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 20:45.