Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Своя форма регистрации связанная с стандартными компонентами (подтверждение почты)

Всем привет, очень нужна помощь начинающему, не получается разобраться. Наверное больше вопрос для гуру Джумлы)) Предыстория - создана своя форма регистрации, заполненные данные отправляются постом на проверку в фаил "/components/com_users/controllers/registration.php" и далее в фаил "/components/com_users/models/registration.php", где заносятся уже в БД.
В общем вот код /components/com_users/controllers/registration.php:
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
71
72
73
    public function givealiftregister() {
        
        JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
 
        // Валидация допустимых символов в поле логина и мин\макс длина.
        if(!preg_match("/^[A-Za-z]{3,}[0-9A-Za-z\-\_\.]{0,15}+$/",$_POST['username'])) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }  
        
        // Валидация длины символов в поле имейла.
        if(strlen($_POST['email']) < 8 or strlen($_POST['email']) > 30) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        } 
        
        // Валидация допустимых символов в поле имейла и корректного ввода.
        if(!preg_match("/[0-9a-zA-Z\_\.\-]+@[0-9a-zA-Z\_^\.]+\.[a-z]{2,4}/i",$_POST['email'])) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }
        
        // Валидация длины символов в поле пароля.
        if(strlen($_POST['password1']) < 8 or strlen($_POST['password1']) > 20) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }        
        
        // Валидация допустимых символов в поле телефона и длины.
        if(!preg_match("/^[0-9\+\(\)\-\s]{0,20}+$/",$_POST['phone'])) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }
        
        // Валидация допустимых символов в поле скайпа и длины ввода.
        if(!preg_match("/^[0-9A-Za-z\-\_\.]{0,30}+$/",$_POST['skype'])) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }         
        
        // If registration is disabled - Redirect to login page.
        if (JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
            return false;
        }
        
        // If data is empty - Redirect to registration.
        if (!$this->input->post->get('username', '', 'string') || !$this->input->post->get('email', '', 'string') || !$this->input->post->get('password1', '', 'string')) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }
        
        // If password is incorrect - Redirect to registration.
        if ($this->input->post->get('password1', '', 'string') != $this->input->post->get('password2', '', 'string')) {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }
        
        $app = JFactory::getApplication();
        $model = $this->getModel('Registration', 'UsersModel');
        
        $return = $model->newUser($this->input->post);
 
        if ($return) {
            $this->setRedirect($return);
            return true;
        } else {
            $this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
            return false;
        }
 
    }
}
И код /components/com_users/models/registration.php
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
    
    public function getCategories() {
        
        $db = $this->getDbo();
        $query = $db->getQuery(true);
        
        $query->select('*')
            ->from('#__givealift_categories');
        $categories = $db->setQuery($query)->loadObjectList();
        $query->clear();
        
        return $categories;
    }
    
    public function getRegions() {
        
        $db = $this->getDbo();
        $query = $db->getQuery(true);
        
        $query->select('*')
            ->from('#__givealift_regions');
        $regions = $db->setQuery($query)->loadObjectList();
        $query->clear();
        
        return $regions;
    }
    
    public function newUser($data) {
        
        $params = JComponentHelper::getParams('com_users');
        
        $useractivation = $params->get('useractivation');
        $sendpassword = $params->get('sendpassword', 1);
        
        // Check if the user needs to activate their account.
        if (($useractivation == 1) || ($useractivation == 2)) {
            $newData['activation'] = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
            $newData['block'] = 1;
        }    
 
        $usertype = $data->get('usertype', '', 'int');
        $newData['username'] = $newData['name'] = $data->get('username', '', 'string');
        $newData['password'] = JUserHelper::getCryptedPassword($data->get('password1', '', 'string'));
        $newData['email'] = JStringPunycode::emailToPunycode($data->get('email', '', 'string'));
        $newData['phone'] = $data->get('phone', '', 'string');
        $newData['skype'] = $data->get('skype', '', 'string');
        $newData['registerDate'] = date("Y-m-d H:i:s", time());      
        
        //Отдельно обработаем фотографию и перемести ее в соответствующую директорию
        $avatar = $data->get('avatar', '', 'string');
        if (JFile::exists('images/files/' . $avatar)) {
            JFile::move('images/files/' . $avatar, 'images/users/avatars/' . $avatar);
            JFile::move('images/files/thumbs/' . $avatar, 'images/users/avatars/thumbs/' . $avatar);
            $newData['avatar'] = $avatar;
        }
        
        //Защищаемся от подмены группы пользователя
        if (!in_array([2, 3], $usertype))
            $usertype == 3;
        
        if ($usertype == 2) {
            $categories = $data->get('categories', '', 'array');
            $newData['region'] = $data->get('region', '', 'string');
            
            $cars = json_decode($data->get('cars', '', 'string'));
            if (count($cars)) {
                foreach ($cars as $car) {
                    JFile::move('images/files/' . $car, 'images/users/cars/' . $car);
                    JFile::move('images/files/thumbs/' . $car, 'images/users/cars/thumbs/' . $car);
                }
                $newData['cars'] = json_encode($cars);
            }
        }
        
        $db = $this->getDbo();
        $query = $db->getQuery(true);
        
        $query->select('username, email')
            ->from('#__users')
            ->where('`email` = ' . $db->quote($newData['email']), 'OR')
            ->where('`username` = ' . $db->quote($newData['username']));
        $userIsExist = $db->setQuery($query)->loadObjectList();
        $query->clear();
        
        //If user is exist - redirect to registration
        if ($userIsExist)
            return false;
        
        //Create new user        
        foreach ($newData as $k => $v) {
            $columns[] = $k;
            $values[] = $db->quote($v);
        }
        
        $query->insert($db->quoteName('#__users'))
                ->columns($db->quoteName($columns))
                ->values(implode(',', $values));
        $db->setQuery($query)->execute();
        $query->clear();
        
        $userId = $db->setQuery($query->select('LAST_INSERT_ID()'))->loadResult();
        $query->clear();
        
        $columns = ['user_id', 'group_id'];
        $values = [(int)$userId, (int)$usertype];
        
        $query->insert($db->quoteName('#__user_usergroup_map'))
                ->columns($db->quoteName($columns))
                ->values(implode(',', $values));
        $db->setQuery($query)->execute();
        $query->clear();
        
        if (!empty($categories)) {
            $columns = ['user_id', 'category_id'];
            $query->insert($db->quoteName('#__user_categories'))
                    ->columns($db->quoteName($columns));
            
            foreach ($categories as $category)
                $query->values(implode(',', [(int)$userId, (int)$category]));
            
            $db->setQuery($query)->execute();
            $query->clear();
        }
            
        return JRoute::_('index.php?option=com_users&view=login&popup=registration', false);
        
    }
}
В конце фаила стандартного сделал свою функцию обработки своей формы и в форме регистрации прописал
PHP
1
<form action="<?= JRoute::_('index.php?option=com_users&task=registration.givealiftregister'); ?>" method="post">
Далее отправляется на запись во второй фаил. Где также сделана своя функция в конце. Мне нужно свою форму регистрации связать с админкой и сделать, чтобы работало подтверждение имейла введеного.
PHP
1
2
3
4
5
6
7
8
9
10
$params = JComponentHelper::getParams('com_users');
        
        $useractivation = $params->get('useractivation');
        $sendpassword = $params->get('sendpassword', 1);
        
        // Check if the user needs to activate their account.
        if (($useractivation == 1) || ($useractivation == 2)) {
            $newData['activation'] = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
            $newData['block'] = 1;
        } 
Первой строкой запрашиваю настройки сделанные в админке, следующими проверяю активацию и если включено подтверждение почты, то блокирую учетку и в БД делаю запись токена активации. Проблема возникла с отправкой почты с токеном активации. Я копирую код проверки и отправки почты из стандартной регистрации Джумлы register($temp) и вставляю в свою, правлю переменные. Но ничего не выходит. На хостинге в почте отправленных нет, значит не отправляет. Ошибки были, но после присвоения вроде бы правильных переменных исчезли. Регистрация проходит без ошибок, учетка блокируется, токен активации тоже присваивается и без проблем по этому токену активация происходит. Но проблема в том, что на почту письмо с токеном не отправляется.
Брал эту часть кода в свою функцию:
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
$config = JFactory::getConfig();
        $db = $this->getDbo();
        $query = $db->getQuery(true);
 
        // Compile the notification mail values.
        $data = $user->getProperties();
        $data['fromname'] = $config->get('fromname');
        $data['mailfrom'] = $config->get('mailfrom');
        $data['sitename'] = $config->get('sitename');
        $data['siteurl'] = JUri::root();
 
        // Handle account activation/confirmation emails.
        if ($useractivation == 2) {
            // Set the link to confirm the user email.
            $uri = JUri::getInstance();
            $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
            $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
 
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY_NOPW', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username']
                );
            }
        } elseif ($useractivation == 1) {
            // Set the link to activate the user account.
            $uri = JUri::getInstance();
            $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
            $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
 
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY_NOPW', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username']
                );
            }
        } else {
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_BODY', $data['name'], $data['sitename'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_BODY_NOPW', $data['name'], $data['sitename'], $data['siteurl']
                );
            }
        }
 
        // Send the registration email.
        $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
Игрался с переменными, но так ничего и не вышло. В общем нужна помощь((
ЗЫ Прошу прощения, если очень очевидные вещи написал, хотел как можно подробней изложить все.
Ответ:
Сообщение от Poznakomlus
Пользователи - Менеджер пользователей - справа вверху настройки Активация нового пользователя. Что там у вас?
Этот параметр не работал. Хоть отключено, хоть включено, регистрация всегда проходила без всяких подтверждений и активаций.
Я в контроллер регистрации добавил код:
PHP
1
2
3
4
5
6
7
8
9
10
$params = JComponentHelper::getParams('com_users');
        
        $useractivation = $params->get('useractivation');
        $sendpassword = $params->get('sendpassword', 1);
        
        // Check if the user needs to activate their account.
        if (($useractivation == 1) || ($useractivation == 2)) {
            $newData['activation'] = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
            $newData['block'] = 1;
        } 
После чего начало работать. Если отключаю активацию, то как и было. Если включаю подтверждение админом, то только админом. Если включаю самоподтверждение, то как уже выше писал все как положено, новому пользователю в поле активации записывает код токена для активации и блокирует его, пока не активируется учетку. Нужно дописать теперь, чтобы отправляло на почту ссылку для активации. Вот на этом и возникли проблемы. Представление имею как сделать, если не получится по образцу стандартной регистрации, но вот знаний не хватает)
А по поводу плагинов, с ними ничего не получится из-за того, что "уже довели движок", т.е. выход только один, дописать имеющееся)
Устанавливать другой компонент не выход, т.к. тогда нужно будет сносить и вырезать ту регистрацию, которую сделали, что очень проблематично из-за того, что делали программисты-велосипедисты )))
С плагином как уже выше написал не вариант из-за не стандартных решений.
Поэтому на много проще путь, не переделывая все и не создавая новых багов на сайте просто дописать функцию отправки на почту письма.
По сути, я так думаю, что можно реализовать просто обычную отправку PHP почты, которая будет брать токен из БД в таблицы юзеров в столблце "activation" и отправлять только что заругавшемуся пользователю. Проблема только в том, что знаний не хватает, как все это сделать более правильно ) Понимаю, что можно взять на просторах интернета какой-то пример реализации отправки почты с подтверждением имейла и дописать туда что-то типа:
PHP
1
 JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], 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
$config = JFactory::getConfig();
        $db = $this->getDbo();
        $query = $db->getQuery(true);
 
        // Compile the notification mail values.
        $data = $user->getProperties();
        $data['fromname'] = $config->get('fromname');
        $data['mailfrom'] = $config->get('mailfrom');
        $data['sitename'] = $config->get('sitename');
        $data['siteurl'] = JUri::root();
 
        // Handle account activation/confirmation emails.
        if ($useractivation == 2) {
            // Set the link to confirm the user email.
            $uri = JUri::getInstance();
            $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
            $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
 
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY_NOPW', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username']
                );
            }
        } elseif ($useractivation == 1) {
            // Set the link to activate the user account.
            $uri = JUri::getInstance();
            $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
            $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
 
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY_NOPW', $data['name'], $data['sitename'], $data['activate'], $data['siteurl'], $data['username']
                );
            }
        } else {
            $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS', $data['name'], $data['sitename']
            );
 
            if ($sendpassword) {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_BODY', $data['name'], $data['sitename'], $data['siteurl'], $data['username'], $data['password_clear']
                );
            } else {
                $emailBody = JText::sprintf(
                        'COM_USERS_EMAIL_REGISTERED_BODY_NOPW', $data['name'], $data['sitename'], $data['siteurl']
                );
            }
        }
 
        // Send the registration email.
        $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
В нем у меня вопросы возникают в том, правильно ли эти строчки:
PHP
1
 $data = $user->getProperties();
и
PHP
1
2
$uri = JUri::getInstance();
            $base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
Ну это вроде вопросов не вызывает, вроде все логично:
PHP
1
2
// Send the registration email.
        $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
В общем, что не так в этом коде? Почему не отправляет почту после регистрации с ссылкой для активации?) Я этого хочу добиться) Плагины и другие дополнение к сожалению не вариант. Изначально хотел так сделать, но пришел к тому, что нужно доработать то, что есть. Введу больших исправлений, если убирать то, что наделали "велосипедисты")

Добавлено через 2 часа 43 минуты
Нашел причину не работы скрипта, теперь нужна помощь в исправление:
PHP
1
2
// Send the registration email.
        $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
Дело в начале скрипта. При тупом вписывание сюда "$data['email']" своей почты, после регистрации приходит на мою почту письмо с правильной темой и всеми остальными настройками правильными из "$config = JFactory::getConfig();", нет логина, пароля и токена. Т.е. эта строчка "$data = $user->getProperties();" не работает. Не берутся нужны параметры юзера и не подставляются в нужные места, соответсвенно, поэтому и почта не отправляется. Как поступить? Получается "$user = new JUser;" не подходит. Нужно как-то узнать почту и остальные нужные данные только что зареганного пользователя, чтобы подставить их в эту форму и отправить в письме.

Добавлено через 1 час 32 минуты
В общем таким способом добился отправки на мейл зарегистрированного: (подставил в поле почтиы $_POST['email'])
PHP
1
2
// Send the registration email.
        $return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $_POST['email'], $emailSubject, $emailBody);
А таким способом добился подстановки токена нужного: (подставил в поле токена $newData['activation'])
PHP
1
2
$data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $newData['activation'], false);
 
Но есть еще другие переменные, с логином, паролем и т.п... Можно конечно к каждому подобрать нужное и подставить с помощью того же поста или других уже имеющихся переменных в коде. Но хотелось бы сделать по правильному. В общем все еще не откажусь от помощи, с меня плюсик)

Добавлено через 5 часов 34 минуты
Poznakomlus, спасибо за попытку помочь. Разобрался сам, все разрешилось банально и просто.
Сделал так и все заработало:
PHP
1
2
3
4
5
6
7
8
9
10
11
$config = JFactory::getConfig();        
        
        // Compile the notification mail values. 
        $data2['name'] = $data->get('username', '', 'string');
        $data2['username'] = $data->get('username', '', 'string');  
        $data2['password_clear'] = $data->get('password1', '', 'string');
        $data2['email'] = $data->get('email', '', 'string');
        $data2['fromname'] = $config->get('fromname');
        $data2['mailfrom'] = $config->get('mailfrom');
        $data2['sitename'] = $config->get('sitename');
        $data2['siteurl'] = JUri::root();
Вопрос: Форма регистрации на сайте

Всем доброго время суток! Вопрос скорее всего не по теме, но как то этот раздел мне больше импонирует, вообщем не пинайте сильно. Хочу сделать на сайте форму регистрации, думаю с этим проблем не возникнет, но я хочу еще добавить в форму 4 кнопки соцсетей как альтернативную регистрацию, для ленивых. Кнопки тоже не проблема добавить. Вопрос - а что требуется для того, что бы при нажатии на кнопку он регистрировался на сайте через соцсеть? Заранее благодарен!
Ответ: Нужно изучить ( прочитать доку ) хотя бы к одной соц сети о том как происходит регистрация.
Вкратце дело обстоит так: вы регистрируете приложение в соц сети, далее указываете ссылку для входа на вашем сайте, человек "переходит" на выбранную соц сеть и ваше приложение запрашивает у него данные какие-то ( имя, пол и т.п. ), чел-к нажимает "войти" и на ваш сайт на указанный при регистрации приложения ссылку приходит ПОСТ запрос ( или ГЕТ, зависит от соц. сети и т.п. ) с данными о пользователе + access token ( опять таки в приложении или при запросе странице можно указать сколько этот access token будет дествителен ) например на сутки, вы сохраняете эти данные как у себя в базе. Далее, если чел-к вышел он нажимает на ту-же соц сеть и запрос повторяется, но теперь вы можете найти его по id из ПОСТ данных пользователя ( или имени и т.п. ) и выдать уже существующий аккаунт, а не создавать новый.
+ с этим access token по ходу ( тут я 100% не уверен ) такая фигня, что если он закончился, то чел авто выходит из аккаунта вашего сайта и ему нужно опять входить, дабы обновить этот токен. ( но обычно ставят на всю жизнь и не парятся ).

Примерно так работает авторизация через соц. сети.
Вопрос: Как вывести форму регистрации на страницу?

Кто-нибудь знает, как вывести форму регистрации, и этого плагина регистрации в частности, на страницы?
..
Везде инфа только про настройки полей, а как вывести на страницу нигде не сказано.
Кто знает?
Спасибо

Добавлено через 2 часа 23 минуты
Тему можно закрывать. Плагин сам выводит все.
Ответ: скопировать название формы и добавить на страницу
Вопрос: Как в WORDPRESS подключить форму регистрации?

Подскажите пожалуйста как в WORDPRESS подключить форму регистрации своей темы?
Хотелось бы, чтобы эта форма не перекидывала на стандартную форму WORDPRESS, а просто открывала бы закрытую часть сайта.
Ответ: Попробуйте [login_widget] ( разменяется на странице с помощью редактора текста)

Добавлено через 31 секунду
[forgot_password] это для формы восстановления на сколько я помню
Вопрос: Помогите найди ошибку в форме регистрации

Доброго времени суток. Хочу создать форму регистрации.


Задача такая: при выборе из списка страны без перезагрузки страницы в список должны подгружаться города из БД.
Пытаюсь связать PHP + SQL + JQUERY

Код JQUERY, который реагирует на выбор страны в списке
$('.country').change(function(){
	$.ajax({
		type: "POST",
		url: "get_city_db.php",
		data: "country="+$(this).val(),
		success: function(data){
        	$.each(data, function(i,val) {
            	alert(val);
                $('#cities').append("<option value='"+val+"'>");
            });
		}
	});
});


Собственно PHP файл ("get_city_db.php"), который будет вызван после выбора страны.

<?php
    require_once('/classes/db_connect.class.php');
    $db = new database();
    $db->dbConnect();//Установка соединения с БД
    $resault = $db->selectRowWhere('id_country','countries','country_name','=',$_REQUEST['country'],'char');
    $row = mysql_fetch_assoc($db->dataSet);
    $resault = $db->selectWhere('cities','id_country','=',$row['id_country'],'int');
    $rowSet = array();
    while($row = mysql_fetch_assoc($db->dataSet)){
        $rowSet[] = $row['city_name'];
    }
    echo $rowSet;
?>


Результат который возвращает get_city_db.php (см. выше) показан на рис. ниже



Но после возврата массива городов ничего не происходит (отладку jquery в ide netbeans настроить не удалось). В чем может быть ошибка и почему не срабатывает даже alert?
Ответ:
Сообщение от laimas
Этого не будет, так как в данном случае, при приеме именно этого запроса в нем будут данные POST запроса, так как даже при наличии одновременно и GET данных, POST данные их перепишут, и это определяется порядком обработки данных определенных в variables_order.
Я и не говорил, что там могут быть одновременно и POST и GET данные, просто скрипт с $_REQUEST может быть единым обработчиком для многих форм и ajax запросов. Возможно он так и планирует его использовать.
Вопрос: Создать форму регистрации Игрока в он-лайновой браузерной игре

Люди помогите с заданием горю.
Созданная в данной работе форма должна содержать следующие поля:
1. однострочное текстовое поле
2. поле ввода пароля (password)
3. переключатели (3-4 элемента)
4. радио кнопка (3-4 элемента)
5. многострочное поле ввода
6. меню выбора (3-4 пункта)

Также форма должна иметь кнопки:
1. «Отправить» (данных форма)
2.«Очистить» (данных формы)

Графическое оформление формы.
1. Внутри формы должно быть размещено несколько разных изображений в качестве иллюстраций созданных полей.
2. Дополнительно внутри формы должна быть размещена GIF-анимация.
3. В работе можно использовать графические файлы.

Кто-нибудь помогите девушки. У меня с этим предметом полный.... а сдать надо. Буду очень благодарна
Ответ: Вот пример формы:
Код 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
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
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Форма регистрации</title>
<style>
</style>
</head>
<body>
<header>
<div id="header">
<h2>Регистрация</h2>
</div>
</header>
<div id="form_reg_container">
<form action="" method="POST" onreset="return confirm('Очистить форму, вы уверены?');">
<p>
<img src="login.gif">
<label for="login">Логин</label>
<input type="text" id="login" name="login" value="" maxlength="60">
</p>
<p>
<img src="password.gif">
<label for="password">Пароль</label>
<input type="password" id="password" name="password" value="" maxlength="60">
</p>
<p>
<img src="select_sity.gif">
<label for="sity">Ваш город</label>
<select id="sity" name="sity">
<option value="1">Москва</option>
<option value="2">Санкт-Петербург</option>
</select>
</p>
<fieldset>
<legend>Ваш пол</legend>
<label for="sx_m">male</label>
<input type="radio" id="sx_m" name="sx[]">
<br>
<label for="sx_f">female</label>
<input type="radio" id="sx_f" name="sx[]">
<img src="select_sx.gif">
</fieldset>
<p>
<img src="about.gif">
<label for="about">Расскажите о себе</label>
<textarea id="about" name="about" maxlength="5000" cols="70" rows="4"></textarea>
</p>
<fieldset>
<legend>Любимые напитки</legend>
<label for="tea">Чай</label>
<input type="checkbox" id="tea" name="tea">
<label for="coffee">Кофе</label>
<input type="checkbox" id="coffee" name="coffee">
<img src="n.gif">
</fieldset>
<p>
<input type="submit" id="submit" name="submit" value="Отправить">
<input type="reset" id="reset" value="Очистить">
</p>
</form>
</div>
</body>
</html>
Вопрос: Как на странице вывести форму регистрации

На странице нам нужно вывести форму регистрации. Чтобы оптовики могли регистрироваться на сайте и получать доступ к прайс-листу.В форме должны быть поля: Имя, Email, Телефон, ОГРН. Обязательные к заполнению только первые три.
обычная форма регистрации имеется
может еще какой то модуль нужно установить чтобы в определенном месте это работало....
или код
Ответ:
Вопрос: Сравнение паролей в форме регистрации

Доброго времени суток.
Сделал небольшую форму регистрации. Вопрос в том, как сделать сравнение полей пароль и подтверждение пароля, и, если они разные, выводить сообщение об ошибке?
<!DOCTYPE html>
<html>
	<head>
		<title>Форма регистрации</title>
		<meta charset="utf-8">
		<link rel="stylesheet" href="style.css" />
	</head>
	<body>
		<form class="form" action="address.txt" method="get">
			<input id="name" name="name" type="text" placeholder="Логин" pattern="[a-zA-Zа-яА-ЯёЁ0-9]{4,90}" title="Имя должно состоять от 4 до 90 символов. Допускаются только цифры, буквы русского и латинского алфавита" required>
			<input id="email" name="email" type="email" placeholder="E-mail" title="" required>
			<input id="password" name="password" type="password" placeholder="Пароль" pattern="[a-zA-Zа-яА-ЯёЁ0-9]{6,90}" title="Пароль должен состоять от 6 до 90 символов. Допускаются только цифры, буквы русского и латинского алфавита" required>
			<input id="password-check" name="password-check" type="password" placeholder="Подтверждение пароля" title="" required>
			<input id="pediki" name="pediki" type="text" placeholder="Поле, необязательное для заполнения">
			<input id="submit" name="submit" type="submit" value="Создать аккаунт">
		</form>
		<script>

		</script>
	</body>
</html>


Код:
.form { 
	background-color: rgb(238,238,238); margin: 50px auto; width: 335px; padding: 20px 10px 10px; border-radius: 10px;
    box-shadow: 0 0 10px #ccc;
}
.form input { padding: 10px; margin: 0px 5px 5px; width: 300px; box-sizing: padding-box; }
.form .submit { width: 200px; }
Ответ: Как сделать, чтобы в случае несовпадения пароля поле определялось как invalid?
Вопрос: Ajax Получение кода по клику в форме регистрации

Здравствуйте, уважаемые форумчане!
Есть задача: в форме регистрации есть поля логин, почта, телефон, поле проверочный код и две кнопки.
1) При нажатии на первую проверяется заполненность полей "логин" "телефон" и если все заполнено на сервере это записывается в базу данных и формируется проверочный код, который отправляется по смс. Процесс отправки происходит с помощью Ajax
2) При нажатии на вторую проверяются все поля и происходит процесс регистрации.

Я уже извелся, плохо у меня с js. Начиная от того, как сделать две кнопки одной формы перенаправляющие на разные action, заканчивая правильной отправкой на сервер. Прошу помощи.
Ответ:
Сообщение от yourmaze
Да, спасибо!)
Лучше бы в карму.
Вопрос: Форма регистрации, надежна ли форма ?

Добрый день уважаемые. Вот решил попрактиковаться в создании форм регистрации,(На чистом JS редко пишу). тут можно посмотреть что из этого вышло => Вопрос, можно ли признать такую форму надежной, есть ли ещё способы по её улучшению ?
Ответ:
Сообщение от Rasy
Однозначно нет. Поля нужно валидировать на сервере в обязательном порядке.
Не ну это то понятно, но во всех пабликах пишут что до отправки сообщения их тоже было б не плохо почистить от лишнего. (Я тоже читал что люди могут отключить JS перед отправкой)