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

Регистрация после соглашения

17.07.2013, 12:10. Показов 2215. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Хотел у вас попросить помощи, ибо сам уже не могу ничего придумать.
Есть некая форма регистрации и есть страница с правилами. Как сделать так, чтобы после нажатия кнопки "я согласен", на странице с правилами, пользователя переводило на страницу с формой регистрации. Но если пользователь введет ссылку на страницу с регистрацией, без согласия с правилами, ему выводи "сначала нужно согласится с правилами".
Подскажите пожалуйста как реализовать данную задумку, т.к. моих познаний в php не достаточно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2013, 12:10
Ответы с готовыми решениями:

Скрыть кнопки вход/регистрация после входа
Приветствую! Есть 3 кнопки, вход, регистрация, выход, на всех страницах сайта. Необходимо скрыть кнопки (войти/регистрация) после входа...

Слетела регистрация-авторизация после переноса с Denwera на хостинг
Всем привет! Не первый раз переношу сайт с денвера на хостинг, но в этот раз авторизация заканчивается выводом сообщения о неуспешной...

Регистрация на форуме после забанивания
Здравствуйте, друзья!!! У меня такая проблема. Меня забанили на форуме (удалили мою учетную запись) за то, что я создал там несколько...

32
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 12:31
Ну так при согласии можно просто хранить в сессии, согласился юзер или нет. А на странице формы првоерять, если нет то ошибка.

PHP
1
2
3
if (empty($_SESSION['agree']) {
    // не согласился
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 13:40  [ТС]
DrobyshevAlex,
PHP
1
2
3
4
5
6
session_start();
                            $_SESSION['agreement'] = agree;                     
                            if(empty($_SESSION['agreement'])) {
                            echo 'Для начала вы должны согласится с правилами,<a href="index.html">здесь</a>';
                            }
                            else {
Такого типа на странице формы?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 14:07
Если сразу на страницу переадресация то можно без сессий.

PHP
1
2
3
if (empty($_POST['agree'])) {
    // не приняли
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 14:22  [ТС]
DrobyshevAlex,
Я вас не понимаю

На странице с правилами у меня:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                                                if(isset($_POST['agree'])){
                            session_start();
                                $_SESSION['agree'] = agree;
                            }
                            
 
                            
                            if(isset($_SESSION['agree'])){
                            
                            }
                            else {
                            echo'<правила>
                            <form action="vote.html" method="post" id="agree"> 
                            <div id="agree">
                                <input type="submit" value="Я согласен" name="agree"> 
                            </div>
                            </form>';
 
                            }
Мне просто потом параметр соглашения нужно ввести в БД.
А как теперь сделать, чтобы нельзя было зайти на страницу "vote.html" пока не согласишься с правилами?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 14:40
На странице правил у вас должна быть кнопка принятия, названная agree

этот код
Цитата Сообщение от Surrprissed Посмотреть сообщение
PHP
1
2
3
4
if(isset($_POST['agree'])){
* * * * * * * * * * * * * * session_start();
* * * * * * * * * * * * * * * * $_SESSION['agree'] = agree;
* * * * * * * * * * * * * * }
вообще сотрите
а это на страницу формы регистрации
PHP
1
2
3
if(isset($_SESSION['agree'])){
                            
                            }
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 14:50  [ТС]
DrobyshevAlex,
Нажимаю кнопку "я согласен" - переводит на страницу с формой где написано "для начала нужно ознакомится с правилами". И так по кругу.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 14:53
PHP
1
2
3
4
5
if ( isset( $_SESSION['agree'] ) ) {
    // нужно ознакомится
} else {
    // форма
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 14:56  [ТС]
DrobyshevAlex, пропускает без соглашения
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 15:00
ой, ну сессион от первого варианта от копипаста осталось.

PHP
1
2
3
4
5
if ( isset( $_POST['agree'] ) ) {
    // нужно ознакомится
} else {
    // форма
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 15:16  [ТС]
DrobyshevAlex, не помогло
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 15:20
Можете показать код отправки формы и вывода формы
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 15:24  [ТС]
Отправка:
HTML5
1
2
3
4
5
<form action="vote.html" method="post" id="agree"> 
                            <div id="agree">
                                <input type="submit" value="Я согласен" name="agree"> 
                            </div>
                            </form>
PHP
1
2
3
4
if(isset($_POST['agree'])){
                                session_start();
                                    $_SESSION['agree'] = agree;
                            }
Там где страница ввода
PHP
1
2
3
4
5
6
if ( isset( $_POST['agree'] ) ) {
                            echo 'Для начала вы должны согласится с правилами,<a href="index.html">здесь</a>';
                            }
                            {
//форма
}
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 15:26
Цитата Сообщение от Surrprissed Посмотреть сообщение
PHP
1
2
3
4
if(isset($_POST['agree'])){
* * * * * * * * * * * * * * * * session_start();
* * * * * * * * * * * * * * * * * * $_SESSION['agree'] = agree;
* * * * * * * * * * * * * * }
я же писал, уберите этот код вообще.

Цитата Сообщение от Surrprissed Посмотреть сообщение
vote.html
эта страница должна быть с кодом
PHP
1
2
3
4
5
6
if ( isset( $_POST['agree'] ) ) {
                            echo 'Для начала вы должны согласится с правилами,<a href="index.html">здесь</a>';
                            }
                            {
//форма
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 15:34  [ТС]
DrobyshevAlex, при нажатии на кнопку "я согласен" выводит на - "Для начала вы должны согласится...".
При простом открывании страницы "vote.html" в браузере выдает форму.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 15:37
ну так поставьте просто ! перед isset
Или измените isset на empty
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 15:50  [ТС]
DrobyshevAlex, теперь не выполняется внос данных в БД и проверки. Да и выдача текста, о положительном результате, также пропала. Выводит на страницу с текстом "Для начала вы должны согласится...".
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 15:57
Я не вижу всего вашего кода. Ну поставьте сами куда нужно.

isset - проверка на существование
empty - проверка на пустоту

Нажатие кнопки передаётся в переменной $_POST['agree']

Проверяйте, если она есть (или не пустая), значит кнопку нажали, выводите и делайте всё, что нужно при нажатии.
Если не нажали, значит её нет, или она пуста, делайте что нужно при открытии без нажатия на кнопку.

Если у Вас обработчик регистрации в той же странице, то либо добавляйте переменную agree в скрытое поле формы, либо вообще не проверяйте наличие $_POST['agree'] при отправки формы с регистрационными данными.

PHP
1
2
3
4
5
6
7
8
9
if (передана форма регистрации) {
  // вносим данные
} else {
  if (нажата кнопка) {
    // выводим форму
  } else {
    // кнопка не нажата
  }
}
0
0 / 0 / 1
Регистрация: 15.07.2013
Сообщений: 38
17.07.2013, 16:28  [ТС]
DrobyshevAlex, Вот код, только тут не регистрация, но тот же принцип и ошибка получается, что если отправляю данные, переносит на "Для начала вы должны согласится с правилами...".
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
                            
                            if (!isset( $_POST['agree'] ) ) {
                            echo 'Для начала вы должны согласится с правилами,<a href="index.html">здесь</a>';
                            }
                            else {      echo'<form action="" method="post" id="poll"> 
                                    <p>Укажите свой игровой ник и свой е-mail:</p><br>
                                    <div class="account">
                                        <input id="a" type="text" name="gname" placeholder="Ваш ник" required />
                                    </div>
                                    <div class="email">
                                        <input id="e" type="text" name="email" placeholder="Ваш е-mail" required />
                                    </div><br>
                                    <div class="realm">
                                        <select name="realm" size=1 >
                                        <option>Fun</option>
                                        <option>Standart</option>
                                        </select>
                                    </div><br>
                                    <p>Укажите пожалуйста ники игроков, соответственно позиций, которые вы им отдаете:</p><br>
                                    <div class="p1">
                                        <input id="p1" type="text" name="p1" placeholder="Первая позиция" required />
                                    </div>
                                    <div class="p2">
                                        <input id="p2" type="text" name="p2" placeholder="Вторая позиция" >
                                    </div>
                                    <div class="p3">
                                        <input id="p3" type="text" name="p3" placeholder="Третья позиция" >
                                    </div>
                                    <div class="p4">
                                        <input id="p4" type="text" name="p4" placeholder="Четвертая позиция" >
                                    </div>
                                    <div class="p5">
                                        <input id="p5" type="text" name="p5" placeholder="Пятая позиция" >
                                    </div>
                                    <div id="key_vote">
                                        <input id="vote" type="submit" value="Проголосовать" name="submit"> 
                                    </div><br><br>
                                    </form> ';
                                    
                                if(isset($_POST['submit'])){
                                
                                $ip = $_SERVER["REMOTE_ADDR"];
                                    
                                $gname = $_POST['gname'];
                                $email = $_POST['email'];
                                $p1 = $_POST['p1'];
                                $p2 = $_POST['p2'];
                                $p3 = $_POST['p3'];
                                $p4 = $_POST['p4'];
                                $p5 = $_POST['p5'];
                                $realm = $_POST['realm'];       
                                        
                                $e_email = $_POST['email'];
                                $e_p1 = $_POST['p1'];
                                $e_p2 = $_POST['p2'];
                                $e_p3 = $_POST['p3'];
                                $e_p4 = $_POST['p4'];
                                $e_p5 = $_POST['p5'];
                                $e_gname = $_POST['gname'];
                                
                                $agree = $_SESSION['agreement'];
                                        
                                $query = "SELECT count(*) FROM `users` WHERE `email` = '$e_email' LIMIT 1";
                                $checkResult = mysql_fetch_row(mysql_query($query));
                                    if ($checkResult[0] > 0){
                                        $c_e = true;
                                    }
                                        
                                $query = "SELECT count(*) FROM `users` WHERE `name` = '$e_gname' LIMIT 1";
                                $checkResult = mysql_fetch_row(mysql_query($query));
                                    if ($checkResult[0] > 0){
                                        $c_n = true;
                                    }
                                        
                                $query = "SELECT count(*) FROM `users` WHERE `ip` = '$ip' LIMIT 1";
                                $checkResult = mysql_fetch_row(mysql_query($query));
                                    if ($checkResult[0] > 0){
                                        $c_i = true;
                                    }
                                        
                                if (($c_e == true) OR ($c_n == true) OR($c_i == true)) {
                                    if($c_e == true){
                                        echo '<span class="error">Простите, данный e-mail уже использовали, попробуйте ввести другой.</span><br>';
                                        }
                                            
                                    if($c_n == true){
                                        echo '<span class="error">Простите, данный игровой ник уже использовали, попробуйте ввести другой.</span><br>';
                                        }
                                            
                                    if($c_i == true){
                                        echo '<span class="error">Простите, но с вашего компьютера уже голосовали.</span><br>';
                                        }
                                            
                                    } 
                                    else 
                                    {
                                        
                                    if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
                                        {
                                        echo '<span class="error">Пожалуйста, введите корректный E-mail!</span><br>';
                                        }
                                                
                                    if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
                                        {
                                        echo "<br><p><a href=index.html>Вернуться к заполнению формы</a></p><br>";
                                        }
                                        else
                                        {
                                            $to = "underwowtop100@ukr.net";
                                            $headers = "Content-type: text/plain; charset = utf-8";
                                            $subject = "Under-WoW Top 100";
                                            $subject = "=?utf-8?B?".base64_encode($subject)."?=";
                                            $message = "
                                            \r\nИгровой персонаж: $gname!
                                            \r\nИгровой мир: $realm
                                            \r\nE-mail: $email
                                            \r\n1. $p1
                                            \r\n2. $p2
                                            \r\n3. $p3
                                            \r\n4. $p4
                                            \r\n5. $p5";
                                            $mess = "=?utf-8?B?".base64_encode($mess)."?=";
                                            $send = mail ($to, $subject, $message, $headers);
                                        }
                                    if ($send == 'true')
                                        {
                                            echo '<span class="success">Спасибо за участие в голосовании!</span><br>';
                                            echo "<p><a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу</p>";
                                            $query = mysql_query("INSERT INTO users VALUES('','$gname','$realm','$ip','$agree','$email','$p1','$p2','$p3','$p4','$p5')") or die(mysql_error());
                                    
                                            if($realm == 'Fun'){
                                            //Рейтинг первой позиции
                                            $query = "SELECT count(*) FROM `FUN` WHERE `Name` = '".$e_p1."' LIMIT 1";
                                            $checkResult = mysql_fetch_row(mysql_query($query));
                                            if (empty($p1))
                                                {
                                                }
                                                else
                                                {
                                                    if ($checkResult[0] > 0){
                                                    mysql_query("UPDATE FUN  SET point=point+10 WHERE `Name`='$e_p1'") or die(mysql_error());
                                                    }else{      
                                                    $query = mysql_query("INSERT INTO FUN VALUES ('','$p1','10')" ) or die (mysql_error());
                                                    }
                                                }
                                            //Рейтинг второй позиции
                                            $query = "SELECT count(*) FROM `FUN` WHERE `Name` = '".$e_p2."' LIMIT 1";
                                            $checkResult = mysql_fetch_row(mysql_query($query));
                                            if (empty($p2))
                                                {
                                                }
                                                else
                                                {
                                                    if ($checkResult[0] > 0){
                                                    mysql_query("UPDATE FUN  SET point=point+8 WHERE `Name`='$e_p2'") or die(mysql_error());
                                                    }else{      
                                                    $query = mysql_query("INSERT INTO FUN VALUES ('','$p2','8')" ) or die (mysql_error());
                                                    }
                                                }
                                            //Рейтинг третей позиции
                                            $query = "SELECT count(*) FROM `FUN` WHERE `Name` = '".$e_p3."' LIMIT 1";
                                            $checkResult = mysql_fetch_row(mysql_query($query));
                                            if (empty($p3))
                                                {
                                                }
                                                else
                                                {
                                                    if ($checkResult[0] > 0){
                                                    mysql_query("UPDATE FUN  SET point=point+6 WHERE `Name`='$e_p3'") or die(mysql_error());
                                                    }else{      
                                                    $query = mysql_query("INSERT INTO FUN VALUES ('','$p3','6')" ) or die (mysql_error());
                                                    }
                                                }
                                            //Рейтинг четвертой позиции
                                            $query = "SELECT count(*) FROM `FUN` WHERE `Name` = '".$e_p4."' LIMIT 1";
                                            $checkResult = mysql_fetch_row(mysql_query($query));
                                            if (empty($p4))
                                                {
                                                }
                                                else
                                                {
                                                    if ($checkResult[0] > 0){
                                                    mysql_query("UPDATE FUN  SET point=point+4 WHERE `Name`='$e_p4'") or die(mysql_error());
                                                    }else{      
                                                    $query = mysql_query("INSERT INTO FUN VALUES ('','$p4','4')" ) or die (mysql_error());
                                                    }
                                                }
                                            //Рейтинг пятой позиции
                                            $query = "SELECT count(*) FROM `FUN` WHERE `Name` = '".$e_p5."' LIMIT 1";
                                            $checkResult = mysql_fetch_row(mysql_query($query));
                                            if (empty($p5))
                                                {
                                                }
                                                else
                                                {
                                                    if ($checkResult[0] > 0){
                                                    mysql_query("UPDATE FUN  SET point=point+2 WHERE `Name`='$e_p5'") or die(mysql_error());
                                                    }else{      
                                                    $query = mysql_query("INSERT INTO FUN VALUES ('','$p5','2')" ) or die (mysql_error());
                                                    }
                                                }   
                                                
                                            }
                                        }
                                    }
                                        
                                }
                
                            }
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
17.07.2013, 16:32
Ну правлиьно всё переносит, я вам выше показал два способа решения:
1) добавить в форму скрытое поле hidden с именем agree
2) переставить условия
то есть либо вначале проверку $_POST['submit'] с занесением данных в бд
либо просто добавить в первое условие !isset($_POST['agree']) && !isset($_POST['submit'])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2013, 16:32
Помогаю со студенческими работами здесь

Регистрация аккаунта разработчика после блокировки
В общем мне полгода назад прилетел бан. Доступа к панели разработчика нет. Подумываю на другого человека зарегать новый аккаунт. И тут...

После модификации БД перестала работать регистрация
после небольшого пересмотра своей бд у меня возникли небольшие трудности, пришлось ее переделать, и у меня появилась проблема не могу...

Регистрация (пустая страница после ввода данных)
Доброго времени суток. Суть проблемы: При попытке регистрации после ввода данных и нажатия на кнопку &quot;Отправить&quot; - ничего не...

После обновления движка до версии 10.5 перестала работать регистрация
Пишет, мол: Администрация запретила регистрацию&quot;, хотя регистрация разрешена в админпанели. Фиг его знает, что делать. Разве что снова...

Соглашения о вызовах.
Соглашения о вызовах.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru