Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Problema para obtener password al fallar login

Estas en el tema de Problema para obtener password al fallar login en el foro de WordPress en Foros del Web. Hola a todos, Actualmente estoy trabajando en el siguiente plugin: Código PHP: remove_filter (  'authenticate' ,  'wp_authenticate_username_password' ,  20 ,  3  ); add_filter (  'authenticate' ...
  #1 (permalink)  
Antiguo 06/12/2010, 11:24
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 10 años
Puntos: 0
Pregunta Problema para obtener password al fallar login

Hola a todos,

Actualmente estoy trabajando en el siguiente plugin:

Código PHP:
remove_filter'authenticate''wp_authenticate_username_password'20);
add_filter'authenticate''dr_email_login_authenticate'20);
add_action('wp_login_failed''login_failed_func');

function 
login_failed_func($email){
    
$errors = new WP_Error();
    
// Validar formato de email
    
if ( ! is_email$email ) ) {
        return 
$errors->add'invalid_email'__'<strong>ERROR</strong>: The email address isn’t correct.' ) );
    
// Validar que el email no existe en la BD
    
} elseif ( get_user_by_email($email) ) {
        return 
$errors->add'email_exists'__'<strong>ERROR</strong>: This email is already registered, please choose another one.' ) );
    }
    
    echo 
'Usuario no existe';
    
}

function 
dr_email_login_authenticate$user$username$password ) {
    
$user get_user_by_email$username );
    if ( 
$user ) {
            
$username $user->user_login;
        } 
    return 
wp_authenticate_username_passwordnull$username$password );

Como pueden ver me permite logear con el email y la contraseña, el problema es que uno de los requerimientos es que si el email no existe en la BD que automaticamente se registre el usuario en la BD con el email y la contraseña que se escribio en el formulario.

Puedo llegar al punto en el que valido si el email existe, pero el action wp_login_failed solo me pasa el usuario (o email en este caso) y no la contraseña, y necesito ambos para hacer el registro automatico.

Trate utilizando $_REQUEST['user_pass'] pero no me muestra nada...

Alguno sabe que puedo hacer para obtener el password??

Saludos y gracias de antemano!
  #2 (permalink)  
Antiguo 07/12/2010, 07:42
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 9 años, 11 meses
Puntos: 15
Respuesta: Problema para obtener password al fallar login

pregunta:
haz una consulta de busqueda en la base de datos si existe el email.
si existe, te detienes, y verifica si ese ID en que te detuviste, tiene el campo password con contenido (digo esto porque cuando comentan sin ser usuarios registrdos, WP guarda el correo de esa persona CREO que junto a los demas correos)
si no lo tienes registrada a esa personas, puedes mandar los datos que utilizo al form de registros o insertarlos al final de la base de datos (esto ultimo des-aconsejo por el hecho que pueden quedar datos sin guardar o wp puede requerir cierto "proceso" para agregar un usuario nuevo al sistema)

salu2

eso serviria?
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #3 (permalink)  
Antiguo 07/12/2010, 08:24
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema para obtener password al fallar login

Cita:
Iniciado por pleter Ver Mensaje
pregunta:
si no lo tienes registrada a esa personas, puedes mandar los datos que utilizo al form de registros o insertarlos al final de la base de datos (esto ultimo des-aconsejo por el hecho que pueden quedar datos sin guardar o wp puede requerir cierto "proceso" para agregar un usuario nuevo al sistema)

salu2

eso serviria?
Esta es la parte que no puedo hacer, necesito registrar el usuario con la contraseña que escribio en el formulario, no con una contraseña automatica que se envia por correo como es por defecto en wordpress, el problema es que luego de enviar el formulario de login no se como obtener el campo de la contraseña solo el username
  #4 (permalink)  
Antiguo 07/12/2010, 10:36
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 9 años, 11 meses
Puntos: 15
Información Respuesta: Problema para obtener password al fallar login

entonces te recomiendo que para "registrarlo" yo haria lo siguiente:
1) verificaria si existe el usuario
1-A) Si existe se loguea
1-B) si no existe, valla al final de la lista de registrados, con ID incrementado en 1 al final (para que sea siempre el ultimo y no sobrescriba ninguno) crearia una insercion manual (con una consulta SQL normal, un insert normal, donde completas los datos de forma estipulada manualmente)

recuerda los siguientes campos en la tabla *users (donde * representa el prenombre que le diste al instalar tu WP, usualemnte seria wp_users):
ID = id de usuario registrado, debe ser unico
user_login = usuario (aca coloca algo tanto como para hacerlo unico, pude ser un contador incrementado del tipo UNIQUE, total.. tu no mostraras su nombre imagino)
user_pass = aca tienes dos opciones
A) proporcionas un password standar en MD5 (por ejemplo e10adc3949ba59abbe56e057f20f883e que es la contraseña: 123456 )
B) consigues un script que codifique la contraseña que inserto a MD5 e insertas ese MD5 que te dio como resultado.
user_email = el email que uso el usuario
use_url = este campo lo puedes dejar en blanco, es la url que usan los usuarios en sus "comentarios" cuando haces click en sus nombres.
user_registered = hora y fecha de registro. el formato es: 2010-09-16 14:35:57
user_activation_key = esto se usa cuando se manda un correo para que "active" su cuenta ( osea.. registro normal) yo esto lo tengo en blanco, porque los admin que cree, los hice por el panel de control de WP y entonces no necesito esto ;)
user_status = nivel del usuario. ejemplo: 0 para administrador
display_name = nombre a mostrar (por ejemplo.. cuando comenta)


ejemplo:
Supongamos que agrego la persona "4" con la contraseña "123456" porque ya tengo 3 registrados... el SQL seria:
Código:
INSERT INTO `nombre_basededatos`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('4', '4', 'e10adc3949ba59abbe56e057f20f883e', '4', '[email protected]', '', '2010-12-15 11:42:04', '', '0', '4');
y en php, si no me equivoco... seria asi:
Código PHP:
$sql "INSERT INTO `nombre_basededatos`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES (\'4\', \'4\', \'e10adc3949ba59abbe56e057f20f883e\', \'4\', \'[email protected]\', \'\', \'2010-12-15 11:42:04\', \'\', \'0\', \'4\');"
donde bueno... tu tendras que crear las variables y "cosas" automaticas para que valla auto incrementando o funcione a tu gusto y necesidad.

Espero poder haberte dado una idea.

salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #5 (permalink)  
Antiguo 08/12/2010, 11:48
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 10 años
Puntos: 0
Respuesta: Problema para obtener password al fallar login

Hola, creo que no me explique muy bien, todo el proceso que has descrito lo tengo claro, pero no sabia como capturar el valor de la contraseña que escribió el usuario, afortunadamente lo solucioné utilizando $_POST['pwd']. Muchas gracias igualmente!!

Etiquetas: login, plugin
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 09:41.