http://code.phpbb.com/svn/phpbb/branche ... l_hash.php
Код: Выделить всё
* @PHP dev team: no, a hexdec() applied to it does not solve the issue. And please document it.Код: Выделить всё
* @PHP dev team: no, a hexdec() applied to it does not solve the issue. And please document it.
А какая связь между этими событиями?Dudarik писал(а):по разному генерируется поле "username_clean", на домашнем компе и на хостиге. В следствии чего пользователи не могут восстановить свой пароль.
Код: Выделить всё
$sql = 'SELECT user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason
FROM ' . USERS_TABLE . "
WHERE user_email_hash = '" . $db->sql_escape(phpbb_email_hash($email)) . "'
AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"; Код: Выделить всё
$username_clean = $db->sql_escape(utf8_clean_string($value));
echo $key."==".$username_clean . '<br />';
$sql = 'UPDATE ' . USERS_TABLE . " SET username_clean = '" . $username_clean . "' WHERE user_id = $key";
$db->sql_query($sql); Код: Выделить всё
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
require($phpbb_root_path . 'includes/functions_module.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$my_upd = array();
$sql = 'SELECT user_id, username, username_clean, user_email, user_email_hash
FROM ' . USERS_TABLE . "
WHERE 1;";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
if ( $row['username_clean'] != utf8_clean_string($row['username'])){
$my_upd['username_clean'][$row['user_id']] = utf8_clean_string($row['username']);
}
if ( $row['user_email'] != strtolower($row['user_email'])){
$my_upd['user_email'][$row['user_id']] = strtolower($row['user_email']);
}
if ( $row['user_email_hash'] != phpbb_email_hash($row['user_email'])){
$my_upd['user_email_hash'][$row['user_id']] = phpbb_email_hash($row['user_email']);
}
}
$db->sql_freeresult($result);
if ( $my_upd['username_clean'] ){
foreach ($my_upd['username_clean'] as $uk => $uu){
print ("<br/>");
print
$sql = 'UPDATE ' . USERS_TABLE . " SET username_clean = '" . $db->sql_escape($uu) . "' WHERE user_id = $uk;";
$db->sql_query($sql);
}
print ("<br/>");print ("<br/>");print ("<br/>");
}
if ( $my_upd['user_email'] ){
foreach ($my_upd['user_email'] as $uk => $ue){
print ("<br/>");
print
$sql = 'UPDATE ' . USERS_TABLE . " SET user_email = '" . $db->sql_escape($ue) . "', user_email_hash = '" . $db->sql_escape(phpbb_email_hash($ue)) . "' WHERE user_id = $uk;";
$db->sql_query($sql);
}
print ("<br/>");print ("<br/>");print ("<br/>");
}
elseif ( $my_upd['user_email_hash'] ){
foreach ($my_upd['user_email_hash'] as $uk => $ueh){
print ("<br/>");
print
$sql = 'UPDATE ' . USERS_TABLE . " SET user_email_hash = '" . $db->sql_escape($ueh) . "' WHERE user_id = $uk;";
$db->sql_query($sql);
}
print ("<br/>");print ("<br/>");print ("<br/>");
}
//print_r($my_upd);
?>