require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
$admin = user_load(1);
$pass = isset($_GET['pass'])? trim($_GET['pass']): 'pass';
$uid = isset($_GET['uid'])? trim($_GET['uid']): 1;
$name = isset($_GET['name'])? trim($_GET['name']): 'admin';
user_save($admin, array('pass' => $pass, 'name' => $name));
$account = user_load($uid);
if(user_check_password($pass, $account)){
echo "<pre>";
echo "Login: {$account->name}\n";
echo "Password: $pass\n";
echo "</pre>";
}
Кладем данный скрипт например в pass.php в корень сайта и вызываем его так http://имя сайта/pass.php?pass=new_password
Этим простым запросом мы заменим пароль у юзера с uid 1.
все
Комментарии
А ты пароль не хочешь в md5() обернуть, нет?
Drupal 7
И чего? Хочешь сказать, что в базе семерки пароли в открытом виде хранятся и также проверяются?
Он, хочет сказать, что функция user_hash_password, сама криптует пароль и в Drupal 7 пароли хранятся не в md5, а в SHA512+соль
drush upwd admin --password="newpassword"
Drupal6
Drupal7
Не, ну в скрипте то все понятно, а вот с SQL запросом не очень. Там то кто пароль криптовать будет?
А нафига велосипед изобретать?
Execute the following commands from the commandline, in the Drupal root directory:
./scripts/password-hash.sh newpwd
or for Windows:
php .\scripts\password-hash.sh newpwd
Хороший вопрос
не всегда есть консоль
Когда у меня нет консоли, но есть доступ к БД, просто захожу и меняю пароль админа на $S$D3XU.7jOYRZ9KKfPZRLA/TKfgj2We51J61WQZHzzPb83Gt1upb2P - эквивалент 1234. Потом в админке меняю на то, что надо.
ну а я просто запускаю скрипт и генерю что надо. Да и клиенту проще отдать файлик или самому залить по фтп. Просто мой скрипт еще и сам заменяет пароль, но в целях безопаснсти не стал приводить пример этого кода.
Те я просто отдаю файл, клиент его запускает, указывает пароль что ему нужен и стирает файл. И на этом все
щаааааааааааааааааз. Соль-то
Поподробнее?
http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BB%D1%8C_%28%D0%BA%D1%80%D0...
А вы пробовали это проделать? У меня срабатывает этот способ и на 6-ке (там вроде подсаливания еще не было) и на 7-ке (что удивительно).
Наверно, 7-ку ставили не с нуля а из какого нибудь дампа, поэтому и получилось, что соль везде одинаковая.
Ну да, этот пароль был ранее сгенерирован на этом же сайте.
В пределах одного сайта ваш пасс и будет воркать
спасибо, полезно
Хотя от этого автора я ждал другого способа
Валера жжете(хоть и толерантно)
Интересно. Какого?
Наверно такого.
А можно как-то узнать пароль, если у меня есть хеш и соль?
В общем написал много, поэтому решил оформить отдельным постом
http://www.drupal.ru/node/75667
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
$admin = user_load(1);
$pass = isset($_GET['pass'])? trim($_GET['pass']): 'pass';
$uid = isset($_GET['uid'])? trim($_GET['uid']): 1;
user_save($admin, array('pass' => $pass));
$account = user_load($uid);
if(user_check_password($pass, $account)){
echo "[OK]";
}
Вот спасибо! Очень помогли.