Foros del Web » Programando para Internet » PHP »

usuario y contraseña, sql

Estas en el tema de usuario y contraseña, sql en el foro de PHP en Foros del Web. Hola a todos, necesito ayuda, estoy empezando en esto y tengo un problema, tengo el códido de autentificacion de base de datos con usuario y ...
  #1 (permalink)  
Antiguo 29/03/2004, 01:44
 
Fecha de Ingreso: diciembre-2003
Mensajes: 29
Antigüedad: 14 años
Puntos: 0
Pregunta usuario y contraseña, sql

Hola a todos, necesito ayuda, estoy empezando en esto y tengo un problema, tengo el códido de autentificacion de base de datos con usuario y contraseña a una bd en mysql, el caso es que solo me funciona con el primer registro de la base, por que pasa esto, muchas gracias de antemano.

<?php

// hacemos una conexion a la bd
$conexion = mysql_connect('localhost','base_de_datos','contras eña');

// seleccionamos la Bd
mysql_select_db ("base_de_datos", $conexion);

//realizamos una consulta a la bd
$query = mysql_query("SELECT * FROM bdusuarios", $conexion);

//definimos un array
$array = mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayusuario = ($array["usuario"]);
$arraypassword = ($array["pasword"]);

//vemos si el usuario y contraseña es váildo
//llamamos los arrays en las siguiente linea.
if ($_POST["us"]=="$arrayusuario" && $_POST["pas"]=="$arraypassword")
{
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: sitio_2.htm");
}else {
//si no existe le mando otra vez a la portada
header("Location: sitio.htm?errorusuario=si");
}
?>
<html>
</html>

Última edición por malpurgis; 29/03/2004 a las 03:38
  #2 (permalink)  
Antiguo 29/03/2004, 06:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te sucede por qué con mysql_fetch_array() como lo usas (sin un bucle) estás obteniendo el primer registro de tu BD por la consulta SQL que haces que NO es condicional (bajo ninguna condición que deba cumplir tus campos de tus registros ..)

Debes hacer una consulta condicional tipo:
Código PHP:
$query mysql_query("SELECT * FROM bdusuarios WHERE usuario=$usuario AND password=$pass"$conexion); 
Con esa consulta SQL .. si coincide el usuario/contraseña te arrojará un registro (ese mismo) y si no hay coincidencias no te arrojará ningún registro ..

El nº de registros que te arroja una consulta lo puedes obtener con la función:

mysql_num_rows()

o mejor todavía para este caso con Más SQL:

Código PHP:
$query mysql_query("SELECT COUNT(*) FROM bdusuarios WHERE usuario=$usuario AND password=$pass"$conexion);
$total=mysql_result($query,0);
if (
$total !=){
// Usuario o contraseña no valido
} else {
// Usuario y contraseña Valido

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 29/03/2004 a las 06:52
  #3 (permalink)  
Antiguo 29/03/2004, 09:14
 
Fecha de Ingreso: diciembre-2003
Mensajes: 29
Antigüedad: 14 años
Puntos: 0
php

Muchas gracias por contestar
$query = mysql_query("SELECT * FROM bdusuarios WHERE usuario=$usuario AND password=$pass", $conexion);

una ultima aclaracion, seria dejar el codigo tal cual?, solo modificacndo el $query?, y usuario=campo de la tabla
password=campo de la tabla, aqui no se le indica el $_post["us"] y $_post["pas"]

us y pas son el nombre de los campos en el formulario, gracias de nuevo.
  #4 (permalink)  
Antiguo 29/03/2004, 10:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno ... el código que puse de ejemplo no se puede usar tal cual .. pero era para darte la idea de que lo que debes hacer es una consulta SQL adecuada . en tu caso condicional y que emplees en lo posible SQL en lugar de tanto PHP cuando sea posible ..

Podrías usar la sentencia SQL que comento con el COUNT() y añadir un poco más de seguridad a tus variables externas usando mysql_escape_string() .. y no estaría de más también validar el rango de esos valores (si son sólo caracteres o números o alfanumérico .. etc).

Código PHP:
$query mysql_query("SELECT COUNT(*) FROM bdusuarios WHERE usuario='".mysql_escape_string($_POST['us'])."' AND password='".mysql_escape_string($_POST['pas'])."'"$conexion); 
$total=mysql_result($query,0);
if (
$total !=){
// Usuario o contraseña no valido
} else {
// Usuario y contraseña Valido

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:17.