/**
* Drupal 7 Programmatically user Login
*/
function hook_menu(){
$itmes['user/form'] = array(
'title' => t('Example Form'),
'description' => 'Drupal Example Form',
'page callback' => 'drupal_get_form',
'page arguments' => array('example_form'),
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
);
return $itmes;
}
function otp_login_form($form, &$form_state){
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#description' => t('Enter your @site_name username.',
array('@site_name'=> variable_get('site_name'))),
'#required' => TRUE,
'#size' => 60,
'#maxlength' => 60,
'#weight' => 2,
);
$form['password'] = array(
'#type' => 'password',
'#title' => t('Password'),
'#description' => t('Enter the password that accompanies your username.'),
'#required' => TRUE,
'#size' => 60,
'#maxlength' => 60,
'#weight' => 3,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Login'),
'#weight' => 4,
);
return $form;
}
function otp_login_form_submit($form, &$form_state){
if(user_authenticate($form_state['values']['name'], $form_state['values']['password'])) {
$user_obj = user_load_by_name($form_state['values']['name']);
$form_state['uid'] = $user_obj->uid;
user_login_submit($form,$form_state);
return true;
}
else {
form_set_error('name', t('Sorry, unrecognized username or password.'));
watchdog('user', 'Login attempt by unregistered user %user.', array('%user' => $form_state['values']['name']));
}
}
Cevabınız için çok teşekkürler. Bir düzenleme göndermeyi denedim ancak çok az sayıda karakter vardı - bunu işe almak için "$ login_array" öğesinden geçmek zorunda kaldım (yani "user_login_finalize (& $ login_array);"). Tekrar teşekkürler! – doubleswirve
Hey, @Ken, Bu kodu fonksiyona koydum ve hook_menu(), hook_boot(), page.tpl kullanarak aramayı denedim ama benim için çalışmıyor. Ya bana mesajsız boş bir sayfa gösteriyorum ya da sayfaya giriş yaptım (hook_menu() ile oluşturuldu) ancak diğer sayfalar için otomatik olarak çıkışım var. Lütfen bana yardım edebilir misin? –
@DineshSubhashPatil - mesajsız boş bir sayfa (efsanevi WSOD) neredeyse bir sunucu hatası olduğu anlamına gelir. Neyin yanlış gittiğini görmek için web sunucusu günlüklerinizi kontrol edin. Ayrıca bazı hata kontrolleri ekleyebilirsiniz; Özellikle, 'user_login_finalize' çağrılmadan önce, '$ user' öğesinin geçerli bir nesne olduğundan emin olun. İkinci sorun daha az anlaşılabilir, ancak PHP oturumundaki bir problemden kaynaklanabilir mi? WSOD hatasını izlerseniz, sorunu çözeceğinizi sanıyorum. – Ken