Ver Mensaje Individual
  #44 (permalink)  
Antiguo 14/01/2009, 20:43
harvey
 
Fecha de Ingreso: mayo-2007
Mensajes: 256
Antigüedad: 17 años, 6 meses
Puntos: 3
Respuesta: Re: Sistema de registro y reconocimiento de usuario ( aporte )

Cita:
Iniciado por pato12 Ver Mensaje
entrar.php
Código PHP:
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';

session_start();

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

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 users 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 users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
echo 
"Has sido logueado correctamente ".$_SESSION['s_username']." y puedes acceder al index.php.";
}
}

El segundo SELECT puedes quitarlo y quedaría asi;

Código PHP:
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';

session_start();

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

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 users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
echo 
"Login incorrecto";
}else{
$_SESSION["s_username"] = $data['username'];
echo 
"Has sido logueado correctamente ".$_SESSION['s_username']." y puedes acceder al index.php.";
}
}

Cita:
Iniciado por drbit Ver Mensaje
Pato, te recomiendo que lo asegures un poco tiene muchos puntos flojos en seguridad. A grandes razgos:
Código:
<?
if(file_exists("usuarios/$usNick.php")) { //comprobamos si el usuario existe
include ("usuarios/$usNick.php");// incluimos los datos
if($usCon == $clave){ //comprobamos las contraseñas
$key2 = "si";// si todo esta bien ponemos $key2 en si
}
Que pasa si el usuario te manda como nombre de usuario algo como ../../../etc/passwd ????

Creo que deberías limpiar la entrada.

Comparar strings con == tampoco es recomendable, es mejor usar strcmp.

En el segundo sistema, tampoco haces ninguna limpieza de las variables antes de armar la query. Usa mysql_real_escape para limpiar las variables.

Saludos.
¿Tambien se debería usar strcmp cuando la comparación es tipo != o no es necesario?
Gracias.

Última edición por harvey; 15/01/2009 a las 06:03