/**
* 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']));
}
}
Nguồn
2017-12-20 10:35:28
Cảm ơn rất nhiều vì câu trả lời. Tôi đã cố gắng để gửi một chỉnh sửa nhưng nó là quá ít ký tự - tôi đã phải vượt qua trong '$ login_array' bằng cách tham khảo để có được điều này để làm việc (vì vậy' user_login_finalize (& $ login_array); '). Cảm ơn một lần nữa! – doubleswirve
Hey, @Ken, tôi đã đặt mã này trong chức năng và đã cố gắng gọi nó bằng cách sử dụng hook_menu(), hook_boot(), trong page.tpl nhưng nó không làm việc cho tôi. Hoặc là tôi đang hiển thị một trang trống không có thông báo hoặc tôi đã đăng nhập trên trang (được tạo thông qua hook_menu()) nhưng sau đó đối với các trang khác, tôi tự động đăng xuất. Bạn có thể giúp tôi không? –
@DineshSubhashPatil - một trang trống không có thông báo (WSOD huyền thoại) gần như chắc chắn có nghĩa là có lỗi máy chủ. Kiểm tra nhật ký máy chủ web của bạn để xem có gì không ổn. Ngoài ra bạn có thể thêm một số kiểm tra lỗi; đặc biệt, trước khi gọi 'user_login_finalize', hãy chắc chắn' $ user' là một đối tượng hợp lệ. Vấn đề thứ hai khó hiểu hơn, nhưng có thể do vấn đề với phiên PHP? Tôi nghi ngờ rằng nếu bạn theo dõi lỗi WSOD, bạn sẽ giải quyết được vấn đề. – Ken