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

Подтверждение смены почты

24.11.2015, 02:47. Показов 1462. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть в профиле инпут с отображением имейла текущего. Хочу, чтобы при его изменение и отправки формы в этом поле оставался старый имейл, который и был, но в таблицу users в столбец activation записывался токен. И соответственно высылалось на почту письмо с информацией на какой имейл хотят сменить и ссылкой для перехода, после перехода естественно старый имейл заменялся новым. А также, если вдруг пользователь ввел неверный имейл для смены, то при повторном вводе, чтобы токен перезаписывался и новое письмо отправлялось для подтверждения смены уже с другим имейлом.
Конечно гуглом умею пользоваться... Но те варианты реализации, которые находил, не совсем подходили к моей задаче. Да и связать имеющейся контроллер с кодом не выходит, что-то не так делаю... В общем нужна помощь в этом, хотя бы в том, как начать\с чего начать... А точнее как перехватить ПОСТ в контроллере на перезапись имейла и реализовать то, что выше написал, хотя бы с этим нужна помощь, чтобы устроить себе дальнейший мозговой штурм Просто понимаю, что задача не такая уж маленькая и не в 1 строчку кода и не у всех может быть есть время\желание мне разъяснять и тем более писать полный код, как это сделать в моем случае. Поэтому, кто чем может...))
Вот контроллер первый:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function updateUser() {
        
        JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
        
        // If data is empty - Redirect to edit profile.
        if (!$this->input->post->get('username', '', 'string') || !$this->input->post->get('email', '', 'string')) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit', false));
            return false;
        }
        
        $model = $this->getModel('Profile', 'UsersModel');
        $return = $model->updateUser($this->input->post);
 
        if ($return) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit', false));
            return true;
        } else {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=profile&layout=edit', false));
            return false;
        }
 
    }
И вот второй контроллер, в который передаются данные с первого:
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
65
66
67
68
69
70
public function updateUser($data) {
        
        $user = JFactory::getUser();
 
        $newData['username'] = $newData['name'] = $data->get('username', '', 'string');
        $newData['email'] = JStringPunycode::emailToPunycode($data->get('email', '', 'string'));
        $newData['phone'] = $data->get('phone', '', 'string');
        $newData['skype'] = $data->get('skype', '', 'string');
 
        if (in_array(2, $user->groups)) {
            $categories = $data->get('categories', '', 'array');
            $newData['region'] = $data->get('region', '', 'string');
        }
        
        $db = $this->getDbo();
        $query = $db->getQuery(true);
                
        //Обновляем сессию с изображениями
        $query->select('cars')
            ->from('#__users')
            ->where('id = ' . (int)$user->id);
        $cars = $db->setQuery($query)->loadResult();
        $query->clear();
        $user->set('cars', $cars);
        
        $query->select('*')
            ->from('#__users')
            ->where('(`username` = ' . $db->quote($newData['username']) . ' OR `email` = ' . $db->quote($newData['email']) . ')')
            ->where('id != ' . (int)$user->id);
        $emailExist = $db->setQuery($query)->loadObject();
        $query->clear();
        
        //If email is exist - redirect to edit profile
        if ($userIsExist)
            return false;
 
        //Update user        
        foreach ($newData as $k => $v) {
            $fields[] = $db->quoteName($k) . ' = ' . $db->quote($v);
            $user->set($k, $v);
        }
        $conditions = ['id=' . (int)$user->id];
 
        $query->update($db->quoteName('#__users'))
            ->set($fields)
            ->where($conditions);
        $db->setQuery($query)->execute();
        $query->clear();
        
        //Перезаписываем категории пользователя
        if (!empty($categories)) {
            //Сначала удалим старые записи
            $query->delete('#__user_categories')->where('user_id = ' .(int)$user->id);
            $db->setQuery($query)->execute();
            $query->clear();
            
            //А дальше просто записываем по новой все категории
            $columns = ['user_id', 'category_id'];
            $query->insert($db->quoteName('#__user_categories'))
                    ->columns($db->quoteName($columns));
            
            foreach ($categories as $category)
                $query->values(implode(',', [(int)$user->id, (int)$category]));
            
            $db->setQuery($query)->execute();
            $query->clear();
        }
 
        return true;
    }
На сколько понимаю, реализовывать нужно во втором контроллере
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2015, 02:47
Ответы с готовыми решениями:

Подтверждение смены электронного ящика
Доброго времени! Есть у меня одна проблема, не знаю как реализовать подтверждения url на электроной ящик о смене электронного ящика, знаю...

Подтверждение почты
Прошу помощи знающих, имеется код отправки писем на почту с ссылкой для подтверждения почты. $login = $_POST; $activ =...

Подтверждение входа кодом из почты
Всем привет. Пытаюсь организовать двухфакторную аутентификацию, не могу найти готовых примеров, по аналогичному запросу выдает гугл...

1
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 10
26.11.2015, 19:33  [ТС]
апну темку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2015, 19:33
Помогаю со студенческими работами здесь

Подтверждение регистрации (отправка почты с токеном)
Всем привет, уже как видно из названия темы, речь пойдет о отправке письма. Нужна помощь в этой части. Есть такой код в контроллере...

Подтверждение почты
Добрый день! Я сделал что при регистрации генерируется случайный набор символов, ну и отправляется естественно в виде ссылке на...

Восстановление пароля/подтверждение почты
Добрый день. Установил Yii2 версию advanced. Там есть готовый сброс пароля. Авторизация и регистрация работает,но когда пытаюсь сбросить...

Переподключение 3G/4G-модема для смены IP-адреса и подтверждение подключение к интернету
Здравствуйте. Помогите решить вопрос. Нужно сделать так, что бы при перезагрузке модема и нового подключения, он выдал в какой...

Своя форма регистрации связанная с стандартными компонентами (подтверждение почты)
Всем привет, очень нужна помощь начинающему, не получается разобраться. Наверное больше вопрос для гуру Джумлы)) Предыстория - создана своя...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru