Foros del Web » Programando para Internet » PHP »

ayuda en PHP (reconocimento de usuarios)

Estas en el tema de ayuda en PHP (reconocimento de usuarios) en el foro de PHP en Foros del Web. Hola, queria pedri una ayuda: Tengo en mi base de datos SQL, usuarios cadastrados de manera en que cada linea es un usuario... y en ...
  #1 (permalink)  
Antiguo 31/05/2004, 08:10
 
Fecha de Ingreso: diciembre-2003
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
ayuda en PHP (reconocimento de usuarios)

Hola,

queria pedri una ayuda: Tengo en mi base de datos SQL, usuarios cadastrados de manera en que cada linea es un usuario... y en esas lineas esta la columna nickname y la columna password.

Bien, lo que quiero es lo siguiente: que el usuario vaya a ingresar en una seccion de la web, y antes de ingresar, le pida que rellene los campos nick y password... cundo el ponga un nick y un password, el sistema busque si el nick que ha puesto en el campo nick esta en la base de datos. Si no esta, diga, nick inexistente.. si esta, compruebe si la contraseña que ha puesto en el campo password es la misma que esta en la columna password de la linea de su nick. Si no esta, diga password incorrecto, si esta, ejecute el formulario donde estaban los campos nick y password (que acaba de rellenar).

Es decir, que verifique si existe el usuario y si lo existe, que el password es correcto.

No tengo idea de como hacerlo... me podeis ayudar? seria interesante si me lo dierais hecho (se que no es la idea de este foro).. pero lo agradeceria muchisimo

Salu2

Fred
  #2 (permalink)  
Antiguo 31/05/2004, 08:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ejecuta una sentencia SQL tipo:

Código PHP:
<?
// conectas a tu BD .. etc ...
$sql="SELECT COUNT(*) FROM tabla WHERE nick='".$_POST['nick']."' AND password='".$_POST['password']."'";
$resultado=mysql_query($sql) or die(mysql_error());
$total=mysql_result($resultado,0);
if (
$total == 1){
// procesas tu formulario ..
} else {
// tu formulario de "login" nuevamente con error "password o usuairo incorrecto"...
// Y resto de formulario? .. si lo deseas.
}
COUNT() de Msyql obtiene el nº de registros que arroje esa consulta SQL "condicional" bajo el campo "nick" y el "passwor" que ha de coincidir con el que tu mandas en tu formulario (puse método POST .. cambialo a lo que requieras).

Suponiendo que en tu BD sólo tienes a un usuario con ese password y nick .. Si existe 1 .. en $total veras 1 .. así que puedes procesar tu formulario .. y sino, le muestras otra vez el formulario y le dás el mensaje de error en consecuencia.

Un saludo,

PD: Lo ideal en este tipo de sistemas es que invites a tu usuario a iniciar una "sesión" (hacer el "login" ) al entrar a tu sistema -> autentificas a tu usuario y le creas una variable de sesión. El resto de iteracciones con tu sistema quedarán "validados" por esa variable de sesión que creastes al pasar el proceso de autentificación .. así no pides más veces el "usuario/password" si tuvieses más formularios/zona restringida que usar ese usuario.
  #3 (permalink)  
Antiguo 31/05/2004, 08:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
debo substituir las lineas

// procesas tu formulario ..
// tu formulario de "login" nuevamente con error "password o usuairo incorrecto"...
// Y resto de formulario? .. si lo deseas.

por algo.. que.. el html del formulario?

gracias
  #4 (permalink)  
Antiguo 31/05/2004, 10:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si .. tu Formulario HTML donde pidas ese usuario/password (campos input de tu formulario).

Un saludo,
  #5 (permalink)  
Antiguo 01/06/2004, 11:13
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
ahora me toca..
disculpen estaba viendo su post y bueno como yo tengo el mismo problema decidi intentar y cuando lo hice el script no me deja pasar.
porque sera, si los usuarios existen y tambien las contraseñas pero no me deja pasar.. e aqui el codigo

Código:
<?php
$conexion = mysql_connect('localhost','root','');
mysql_select_db ("archivo", $conexion);
$sql="SELECT COUNT(*) FROM usuarios WHERE usuario='".$_POST['usuario']."' AND pass='".$_POST['contrasena']."'";
$resultado=mysql_query($sql) or die(mysql_error());
$total=mysql_result($resultado,0);
if($total == 1){
    session_start();
    session_register("autentificado");
    $autentificado = "SI";
    header ("Location: aplicacion.php");
}else {
    header("Location: index.php?errorusuario=si");
}
mysql_close($conexion);
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #6 (permalink)  
Antiguo 01/06/2004, 12:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
GeoAvila ..

En tu caso particular te faltá poner el código del formulario HTML que usas .. supongo que el method del mismo será "POST" y que usas PHP 4.1.0 en adelante para poder acceder a los arrays superglobales $_POST.

Por otro lado .. el $total de resultado ha de ser 1 .. suponiendo que ese par: usuario/contraseña es único .. si hay dos o más resultados ( o menor) pues ya no se cumple la condición.

Ejecuta la sentencia SQL que ahí se muestra en tu phpMyadmin o GUI de Mysql que uses con datos de prueba y observa que te resultados te devuelve.

Un saludo,
  #7 (permalink)  
Antiguo 01/06/2004, 14:54
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
hola mira mi version de php es la siguiente
PHP Version 4.3.6
y lo que no comprendo es parte donde dicesque el usuario debe ser igual a 1, porque yo veo que esta igual que 1

help..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #8 (permalink)  
Antiguo 01/06/2004, 15:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 13 años, 8 meses
Puntos: 406
se refiere a que si solo existe un solo registro en tu tabla, si no, cuando hay mas de un registro tu sentecia deja de funcionar, para ello tienes que utilizar el WHERE para que le digas a la sentencia sql que usuario quieres comprobar el password
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 01/06/2004, 15:15
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
un ejemplo por favor
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #10 (permalink)  
Antiguo 01/06/2004, 15:22
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 13 años, 8 meses
Puntos: 406
podrias utilizar algo asi

Código PHP:
$conexion mysql_connect('localhost','root','');
mysql_select_db ("tu_db"$conexion);
$resultado mysql_query("SELECT * FROM usuarios WHERE usuario = '$nick'"$conexion) or die (mysql_error());
$array mysql_fetch_array($resultado);
$usuario = ($array["usuario"]); 
$password = ($array["password"]);
if (
$nick=="$usuario" && $pass=="$password") {
//aqui lo que tengas que hacer, cono inciar una session o crear una cookie
}
?> 
ahora solo le tienes que dar valor a $nick y a $pass ya sea desde un formulario (POST) o link (GET)
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 01/06/2004 a las 15:25
  #11 (permalink)  
Antiguo 01/06/2004, 16:08
Avatar de The_Dark_Roy  
Fecha de Ingreso: enero-2004
Mensajes: 218
Antigüedad: 13 años, 10 meses
Puntos: 0
tomando el post del fbosch

el codigo anterior te serviria bastante (si es que no has encontrado la solucion) modificandola sentencia if de esta manera:

Código PHP:
if ($nick=="$usuario") {
    if(
$pass=="$password"){
           
header("Location: pagina_miembros.php");
     }
     else{
           
header("Location: formulario.php?error=1");
     }
}
else{
    
header("Location: formulario.php?error=2"); 

claro estas que tienes que procesar lo errores con mensajes en este cqaso en la pagina formulario.php donde para mi:
error=1 seria que el password esta mal escrito y el nick esta presente en la base de datos y
error=2 que el nick esta mal escrito o no esta registrado
ojala te ayude
__________________
ojala te hayas quitado la venda

http://www.surire.cl
http://www.uta.cl
  #12 (permalink)  
Antiguo 01/06/2004, 16:16
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
hola ya creo haber encontrado el problema de todo esto ahora solo falta ver quien tiene la respuesta.

cuando hago la consulta a el Mysql al parecer lo hace todo bien pero al momento de dar la conctraseña da un numero:

el siguiente numero
"56d20f8529fae677b86f853d2ec285c8"
cuando el pasword es
"Avila"

lo que estoy haciendo es cerrar la secion por aquello de sustos que sea algo de la conexion pero no me lo corrige.

porque me devuelbe un Numero enbez de Letras

y este es el codigo que estoy coloando.

Código PHP:
<?php

// hacemos una conexion a la bd

$conexion mysql_connect('localhost','root','');
mysql_select_db ("archivo"$conexion);
$nick $_POST['usuario'];
$pass $_POST['contrasena'];
$resultado mysql_query("SELECT * FROM usuarios WHERE usuario = '$nick'"$conexion) or die (mysql_error());
$array mysql_fetch_array($resultado);
$usuario = ($array['usuario']);
$password = ($array['pass']);
 
//echo $password;
if ($nick=="$usuario") {
    if(
$pass=="$password"){
           
session_start();
           
session_register("autentificado");
           
$autentificado "SI";
           
header ("Location: aplicacion.php");
     }
     else{
          
header("Location: index.php?errorusuario=si");
     }
}
else{
   
header("Location: index.php?errorusuario=si");
}
mysql_free_result($resultado);
mysql_close($conexion);
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #13 (permalink)  
Antiguo 01/06/2004, 16:25
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 13 años, 8 meses
Puntos: 406
es muy facil, lo que pasa es que esa password esta encriptada, todo el scrip esta bien, solo que el password que esta en la db esta encriptada, su es tas utilizando md5 no podras desencriptarla, lo que puedes hacer es preguntarle a md5 la password (volver a encriptar) y compararlas

Código PHP:
$nick=md5($_POST["nick"]); //si bienen de un formulario con method POST
$nick=md5($_GET["nick"]); //si biene de un link o un formulario con method GET 
espero que con esto ya te funcione, a mas que la password sea encriptda de otro modo
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 01/06/2004, 16:32
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
mil gracias!!!!!!!!!!!!!!!!!!!!!!!!!!

le haz dado solucion a mi problema aqui esta codigo terminado.

Código PHP:
<?php

// hacemos una conexion a la bd

$conexion mysql_connect('localhost','root','');
mysql_select_db ("archivo"$conexion);
$nick $_POST['usuario'];
$pass md5($_POST['contrasena']);
$resultado mysql_query("SELECT * FROM usuarios WHERE usuario = '$nick'"$conexion) or die (mysql_error());
$array mysql_fetch_array($resultado);
$usuario = ($array['usuario']);
$password = ($array['pass']);
 
//echo $password;
if ($nick=="$usuario") {
    if(
$pass=="$password"){
           
session_start();
           
session_register("autentificado");
           
$autentificado "SI";
           
header ("Location: aplicacion.php");
     }
     else{
          
header("Location: index.php?errorusuario=si");
     }
}
else{
   
header("Location: index.php?errorusuario=si");
}
mysql_free_result($resultado);
mysql_close($conexion);
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #15 (permalink)  
Antiguo 02/06/2004, 11:11
Avatar de The_Dark_Roy  
Fecha de Ingreso: enero-2004
Mensajes: 218
Antigüedad: 13 años, 10 meses
Puntos: 0
te has preguntado que pasa si en el formulario envian un nick y un password en blanco?
__________________
ojala te hayas quitado la venda

http://www.surire.cl
http://www.uta.cl
  #16 (permalink)  
Antiguo 02/06/2004, 11:18
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 14 años
Puntos: 53
si claro y ya lo probe y te envia a una pagina de error.......... esta comprado, pero gracias por tu observaicon me habias puesto en que pensar, pero si funciona como debería, me envia a la pagina de inicio..

gracias y nos vemos
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
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:51.