вопрос
Как мы знаем, изменение информации о пользователе происходит на странице:
index.php?subaction=userinfo&user=username
Я решил сделать возможность изменения e-mail адреса (а за одно и настройки получения писем) не только на этой странице но и дополнительно на другой:
index.php?subaction=userinfo&user=username&a=settings
Соответственно, в PHP файле engine/modules/profile.php я внёс такие изменения:
Вместо:
Вопрос. Как сделать так, чтобы данные ячейки не сбрасывались?
P.S. Изменение настроек на отдельной странице делал по этой инструкции.
P.S.2. Разумеется, вышеперечисленные изменения не единственные, внесённые в код, но о них я не сказал, т.к. они хоть и касаются данного вопроса, но к сути не существенны.
index.php?subaction=userinfo&user=username
Я решил сделать возможность изменения e-mail адреса (а за одно и настройки получения писем) не только на этой странице но и дополнительно на другой:
index.php?subaction=userinfo&user=username&a=settings
Соответственно, в PHP файле engine/modules/profile.php я внёс такие изменения:
Вместо:
if( strlen( $password1 ) > 0 ) {Идёт это:
$db->query( "UPDATE " . USERPREFIX . "_social_login SET password='" . md5( $password1 ) . "' WHERE uid='{$id}'" );
$password1 = md5( md5( $password1 ) );
$sql_user = "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', land='$land',{$mailchange} info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', timezone='$timezone' WHERE user_id = '{$id}'";
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', land='$land',{$mailchange} info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', timezone='$timezone' WHERE user_id = '{$id}'";
}
if ($_REQUEST['a'] == 'settings' ) {Информация обновляется, но есть одно НО. Вся остальная информация: fullname, land etc. сбрасывается, т.е. в базе данных эти поля становятся пустыми. Это странно, так как в SQL запросе мы обновляем конкретные ячейки БД, остальные даже не упоминаем.
$sql_user = "UPDATE " . USERPREFIX . "_users SET {$mailchange} allow_mail='$allow_mail' WHERE user_id = '{$id}'";
} else {
if( strlen( $password1 ) > 0 ) {
$db->query( "UPDATE " . USERPREFIX . "_social_login SET password='" . md5( $password1 ) . "' WHERE uid='{$id}'" );
$password1 = md5( md5( $password1 ) );
$sql_user = "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', land='$land',{$mailchange} info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', timezone='$timezone' WHERE user_id = '{$id}'";
} else {
$sql_user = "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', land='$land',{$mailchange} info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', timezone='$timezone' WHERE user_id = '{$id}'";
}
}
Вопрос. Как сделать так, чтобы данные ячейки не сбрасывались?
P.S. Изменение настроек на отдельной странице делал по этой инструкции.
P.S.2. Разумеется, вышеперечисленные изменения не единственные, внесённые в код, но о них я не сказал, т.к. они хоть и касаются данного вопроса, но к сути не существенны.
Решил проблему следующим образом.
$_REQUEST отказывается работать должным образом при изменении настроек, поэтому я вернул приведенную мной выше часть кода в первозданный вид, но в коде перед проверкой на заполненность полей прописал:
и по аналогии со всеми остальными полями, перечисленными в SQL запросе.
$_REQUEST отказывается работать должным образом при изменении настроек, поэтому я вернул приведенную мной выше часть кода в первозданный вид, но в коде перед проверкой на заполненность полей прописал:
if ( !$email ) $email = $row['email'];
и по аналогии со всеми остальными полями, перечисленными в SQL запросе.