修改用户当前密码流程(调用系统表单)

本文深入探讨了用户密码管理的重要性和实现方法,详细解释了如何通过Drupal框架中的my_form_menu和change_user_pass函数来创建一个用户密码修改功能,包括用户界面设计、访问控制、表单验证以及密码保存过程。通过实际代码示例,展示了如何在网站上提供一个安全、易用的密码修改功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function my_form_menu() {

  $items['user/%user/password'] = array(
    'title' => '修改密码',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('change_user_pass',1),
    'access callback' => 'user_edit_access',
    'access arguments' => array(1),
    'weight' => 0,
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function change_user_pass($form, &$form_state, $account) {
  $category = 'account';

  if (!isset($form_state['user'])) {
    $form_state['user'] = $account;
  }
  else {
    $account = $form_state['user'];
  }
  $form['#user'] = $account;
  $form['#user_category'] = $category;

  user_account_form($form, $form_state);
  $langcode = entity_language('user', $account);
  
  unset($form['account']['current_pass']['#description']);
  unset($form['account']['pass']['#description']);
  $form['account']['mail']['#access'] = FALSE;

  $form['actions'] = array('#type' => 'actions');
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );

  return $form;
}

function  change_user_pass_submit($form, &$form_state) {

  $account = $form_state['user'];
  $edit_user = array(
     'pass' => $form_state['values']['pass'],
    );
  $account_unchanged = clone $account;

  user_save($account_unchanged, $edit_user);
  $form_state['redirect'] = 'user/'.$form_state['user']->uid.'/password';
  drupal_set_message('密码修改成功');
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值