Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 23.02.2016
Сообщений: 23

Апдейт данных пользователя

09.03.2019, 23:37. Показов 561. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте. Дела обстоят следующим образом.
Во первых: данные в таблице обновляются (у всех пользователей, одновременно, но не суть), но новые переменные, не присваивают значение старым переменным. Не знаю, с чем связано, ибо данные обновляются, но переменные, которые по умолчанию хранили эти значения, их не меняют. К примеру, пароль - в таблице изменился, но по факту остался старым.
Во вторых: как хешировать пароль, в UPDATE? При регистрации, он хешируется, но при изминении - он не хешируется. Хотя, в проверке я присвоил этому полю значение, с использованием функции, для хеширования. (стоит "==", ибо с "=" оно ругается).
В третьих: как изменять данные, только у одного пользователя, а не у всех, одновременно?
Помогите. Буду очень, и очень благодарен.

Данные апдейчу, в том же файте, что и форма.


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php 
$link = mysqli_connect("localhost", "root", "", "table");
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
$data = $_POST;
$hash = $_SESSION['logged_user']->password;
if (isset($data['edit'])){
$errors = array();
    if ($data['new_email'] == $_SESSION['logged_user']->email) 
    {
        $errors[] = 'Текущий email';
    }
    if (!(password_verify($data['cur_password'], $hash)))
    {
        $errors[] = 'Не верный текущий пароль';
    }
 
    if (!($data['new_password'] == ''))
    {
        $data['new_password'] == password_hash($data['new_password'], PASSWORD_DEFAULT);
    }
    
    if (empty($errors)) 
    {
        $sql = NULL;
        $sql2 = NULL;
        if ($data['new_email'] == ''){}
        else
        {
        $sql = "UPDATE users 
                SET email='$data[new_email]' 
                WHERE id=id";   
        }
        if ($data['new_password'] == ''){}
        else{
        $sql2 = "UPDATE users 
                 SET password='$data[new_password]' 
                 WHERE id=id";  
        }
        
        if(mysqli_query($link, $sql)){
             echo '<div style="color: green; font-family: FreeMono, monospace; font-weight:bold;; position: relative; left: 
             45%;">Информация обновлена</div><hr>';
        } else {
             echo '<div style="color: red; font-family: FreeMono, monospace; font-weight:bold;; position: relative; left: 45%;">Не 
             удалось обновить информацию</div><hr>';
        }
 
        if(mysqli_query($link, $sql2)){
             echo '<div style="color: green; font-family: FreeMono, monospace; font-weight:bold;; position: relative; left: 
             45%;">Информация обновлена</div><hr>';
        } else {
             echo '<div style="color: red; font-family: FreeMono, monospace; font-weight:bold;; position: relative; left: 45%;">Не 
             удалось обновить информацию</div><hr>';
        }
 
    }else{
        echo '<div style="color: red; font-family: FreeMono, monospace; font-weight:bold; position: relative; left: 45%;">'
                .array_shift($errors).'</div><hr>';
          }
    }       
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<form action="profile.php" method="POST">
        <table>
            <tr>
                <td>Ваш логин:</td>
                <td><?php echo $_SESSION['logged_user']->login; ?></td>
            </tr>
            <tr>
                <td>Ваш email:</td>
                <td><?php echo $_SESSION['logged_user']->email; ?></td>
            </tr>
            <tr>
                <td>Сменить email:</td>
                <td><input type="email" name="new_email"></td>
            </tr>
            <tr>
                <td>Сменить пароль:</td>
                <td><input type="password" name="new_password"></td>
            </tr>
            <tr>
                <td>Текущий пароль:</td>
                <td><input type="password" name="cur_password"></td>
            </tr>
        </table>        
        
        <button type="submit" name="edit">Сменить</button>
    </form>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2019, 23:37
Ответы с готовыми решениями:

MVVM. Апдейт данных в Listbox
Реализую паттерн MVVM. Проблема - листбокс не отображает измененные данные. Model: public class Person : INotifyPropertyChanged ...

Хранение данных пользователя(инф-ию,ограничений,разрешений) в Базе Данных, нужен совет
Здравствуйте, подскажите пожалуйста в какой форме лучше хранить в БД информацию о пользователях, их ограничения и разрешения на...

Апдейт
Наблюдаю изменения позиций в серпе. Опять апдейт што ли?

5
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
10.03.2019, 00:47
Цитата Сообщение от DeUSER Посмотреть сообщение
переменные, которые по умолчанию хранили эти значения, их не меняют
Переменные не должны меняться при изменении БД.

Цитата Сообщение от DeUSER Посмотреть сообщение
как хешировать пароль, в UPDATE?
Пропустить через password_hash().

Цитата Сообщение от DeUSER Посмотреть сообщение
стоит "==", ибо с "=" оно ругается
= присваивание, == сравнение. На что именно ругается, какой текст ошибки?

Цитата Сообщение от DeUSER Посмотреть сообщение
как изменять данные, только у одного пользователя
Цитата Сообщение от DeUSER Посмотреть сообщение
WHERE id=id
Подставлять id юзера в запрос.
0
1312 / 1004 / 232
Регистрация: 01.10.2018
Сообщений: 3,907
10.03.2019, 10:55
Делайте перенаправление после любого изменения.

Цитата Сообщение от DeUSER Посмотреть сообщение
Данные апдейчу, в том же файте, что и форма.
Зачем? Это два разных, хотя и связанных действия. Но привязать их к одному и тому же адресу - хорошая идея. Если у вас нет механизма разделения действий по методам в едином каркасе, можете сделать это в вашем файле, подключая дополнительные файлы в зависимости от метода запроса или хотя бы один такой файл (с формой или POST-обработчиком, выполняя другое действие в текущем файле).
0
1 / 1 / 0
Регистрация: 23.02.2016
Сообщений: 23
10.03.2019, 12:47  [ТС]
Первую проблему, с изменением данных значений, решил банальным присвоение, после UPDATE:
Меняет как в таблице, так и значение самой переменной.
PHP
1
2
3
4
$sql = "UPDATE users 
                SET email='$data[new_email]' 
                WHERE id=id";   
        $_SESSION['logged_user']->email = $data['new_email'];
Во вторых, в прошлый раз, почему-то ругалось на "=", но опять сделав присвоение - все заработало.

Остается, только, открытым вопрос, как изменять данные конкретного пользователя, а не всех одновременно...?
По обыкновенной id, конкретного пользователя, не прокатит, ибо это, якобы "личный кабинет", и изменяя там данные, он должен менять их только для себя, а не для всех
0
1312 / 1004 / 232
Регистрация: 01.10.2018
Сообщений: 3,907
10.03.2019, 15:26
Ну, возьмите значение id из сессии и подставьте в условие запроса.

Добавлено через 1 минуту
Вам уже про это написали, а вы опять пишете WHERE id=id

Добавлено через 4 минуты
И правильно так:
Code
1
'{$data['new_email']}'
Причем значение обязательно предварительно проверяем/экранируем.

Добавлено через 4 минуты
И зачем вам в сессии полный профиль пользователя держать?
PHP
1
$_SESSION['logged_user']->email = $data['new_email'];
0
1 / 1 / 0
Регистрация: 23.02.2016
Сообщений: 23
10.03.2019, 17:17  [ТС]
Все. Решил как записывать данные, для одного пользователя. Не понятно, зачем создавал тему
Интересно то, что нельзя было присвоить значение "сесси", id*шке.
Я сначало обьявил переменную, которой присвоил значение "сессионного id", а потом, передал эту переменную в UPDATE.

PHP
1
$id   = $_SESSION['logged_user']->id;
PHP
1
WHERE id='$id'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2019, 17:17
Помогаю со студенческими работами здесь

Апдейт PR
по статистике: http://www.seologs.com/google-updates.html сегодня апдейт PR! на всех моих сайтах (в зоне ru) обновили PR ...

АПДЕЙТ 24.03
кто че в нем понял? я вообще не могу одуплиццо че произошло, все поскакало кто куда b-(

Апдейт 17.03
Делюсь впечатлениями от сегодняшнего апдейта: Один ключевик напрочь за 50 вылетел По другому немного вверх +2 По остальным от -3 до...

Апдейт
Доброго времени суток господа! Проблемка з апдейтом. Вродь бы простенький, но так не особо агугу аксес, то прошу помощи. Сообственно...

Апдейт
Сегодня наблюдаю изменение позиций по всем мониторимым запросам в Гугле. Есть мнение, что в формирование выдачи подмещан коэффициент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru