Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795

регистрация.

11.09.2011, 16:12. Показов 2539. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, не могу понять где у меня ошибка,
Пишет что такой пользователь уже есть , а его нет...

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
<?
$peremennaya_1 = "medinfos.dyndns.org";
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $Login = trim($_POST['Login']);
   $password1 = trim($_POST['Password']);
   $passwordR = trim($_POST['PasswordR']);
   $Email = trim($_POST['Email']);
   $Vopros = trim($_POST['Vopros']);
   $Otvet  = trim($_POST['Otvet']);
   if ($Login == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"Логин"</font> не заполнено.</font></code><br />');
   // Логин может состоять из букв, цифр и подчеркивания
   }elseif (!preg_match("/[-_[:blank:]0-9a-zа-я]+/i", $Login)) {
      die('<code><font color="#006600">В поле <font size="6" color="red">"Логин"</font> введены недопустимые символы.</font></code><br />');
   }
   if ($Email == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"E-mail"</font> не заполнено. </font></code><br />');
 
   // Проверяем e-mail на корректность
   }elseif (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $Email)) {
      die('<code><font color="#006600">Указанный <font size="6" color="red">"E-mail"</font> имеет недопустимый формат. </font></code><br />');
   }
   if ($password1 == '' || $passwordR == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"Пароль"</font> не заполнено. </font></code><br />');
   }elseif($password1 !== $passwordR) {
      die('<code><font color="#006600">Поля <font size="6" color="red">"Пароль"</font> и <font size="6" color="red">"Повтор пароля"</font> не совпадают.</font></code><br />');
   // Пароль может состоять из букв, цифр и подчеркивания
   }elseif(!preg_match("/[-_[:blank:]0-9a-zа-я]+/i", $password1)) {
      die('<code><font color="#006600">В поле <font size="6" color="red">"Пароль"</font> введены недопустимые символы. </font></code><br />');
   }
   
   // В базе данных у нас будет храниться md5-хеш пароля
   $mdPassword = md5($password1);
   // А также временная метка (зачем - позже)
   $time = time();
 
 
 // Подключаемся к БД
 $txt_host3 = file_get_contents( "../bd/txt/host.txt" );
 $txt_login3 = file_get_contents( "../bd/txt/login.txt" );
 $txt_password3 = file_get_contents( "../bd/txt/password.txt" );
 $txt_name_bd3 = file_get_contents( "../bd/txt/name_bd.txt" );
 
/* Соединяемся с базой данных */
$hostname = $txt_host3; // название/путь сервера, с MySQL
$username = $txt_login3; // имя пользователя (в Denwer`е по умолчанию "root")
$password = $txt_password3; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = $txt_name_bd3; // название базы данных
 
/* Создаем соединение */
$link = mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
 
      // Записываем в базу (не используем addslashes - экранировать нечего)
      mysql_query("INSERT INTO users (login, pass, email, timestamp)
                   VALUES ($Login, $mdPassword, $Email, $time)",$link);
      if (mysql_error($link) != "") {
         die("Пользователь с таким логином уже существует, выберите другой<br />\n");
      }
 
 
 
 
 
 
// Получаем Id, под которым юзер добавился в базу
$id = mysql_result(mysql_query("SELECT LAST_INSERT_ID()", $link), 0);
// Составляем "keystring" для активации
$key = md5(substr($Email, 0 ,2).$id.substr($Login, 0 ,2));
$date = time();
 
// Компонуем письмо
$title = 'Потвеждение регистрации на сайте '.$peremennaya_1;
$headers  = "Content-type: text/plain; charset=windows-1251\r\n";
$headers = "From: $peremennaya_1 Администрация  \r\n";
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($title, "w","k")).'?=';
$letter =  <<< LTR
 
          Здравствуйте!
   Уважаемый $Login. Ваш почтовый ящик, был использован при регистрации на сайте $peremennaya_1.
 
       Если вы не регистрировались на сайте $peremennaya_1, проигнорируйте это письмо.
       Если вы регистрировались, Перейдите по активационной ссылке, для активации вашего аккаунта.
 
  -------------------------------------------------------
   Ваши регистрационные данные:
      Логин: $Login
      Пароль: $password1
  -------------------------------------------------------
 
   Для активации аккаунта вам следует пройти по ссылке:
   http://$peremennaya_1/Registraciya/avtorizeciya/activation.php?login=$Login&key=$key
 
 
   Данная ссылка будет доступна в течении 5 дней.
  -------------------------------------------------------
   Администрация сайта: http://$peremennaya_1/index.php
   $date
LTR;
// Отправляем письмо
if (!mail($Email, $subject, $letter, $headers)) {
   // Если письмо не отправилось, удаляем юзера из базы
   mysql_query("DELETE FROM users WHERE login='".$login."' LIMIT 1", $link);
   echo '<code><font color="#006600">Произошла ошибка при отправке письма. Попробуйте зарегистрироваться еще раз. </font></code><br />';
}else {
   echo '<code><font color="#006600">Вы успешно зарегистрировались в системе. На указанный вами
           <font color="red">e-mail</font> было отправлено письмо, со ссылкой для активации аккаунта.
           <font color="#008000">У вас 5 дней!</font></font></code><br />';
}
 
 
 
      mysql_close($link);
}?>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2011, 16:12
Ответы с готовыми решениями:

Регистрация
скиньте ссилку или скажите как називаетса - a-zA-Z0-9_\. чтоби при регистрации пользователь немог написать знаки &lt; ; ' [ и тд тп??

Регистрация
Здравствуйте, у меня есть вопрос. Как сделать регистрацию на сайте? Знаю, что без php не обойтись, поэтому прошу всё разложить.

Регистрация на сайте
Проблема что в браузере криво отображает .php файлы ( не все конечно). На этой странице можно ввести логин и пароль и...

18
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
12.09.2011, 00:34
PHP
1
2
3
4
5
6
      // Записываем в базу (не используем addslashes - экранировать нечего)
      mysql_query("INSERT INTO users (login, pass, email, timestamp)
                   VALUES ($Login, $mdPassword, $Email, $time)",$link);
      if (mysql_error($link) != "") {
         die("Пользователь с таким логином уже существует, выберите другой<br />\n");
      }
Вам следует подругому искать есть такой логин или нет.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
12.09.2011, 01:49
PHP
1
$peremennaya_1 = "medinfos.dyndns.org";
Название переменной неинформативно. Название сайта будет меняться по мере прохождения по скрипту? Тогда почему оно не определено как константа?


PHP
1
2
3
4
5
6
$Login = trim($_POST['Login']);
   $password1 = trim($_POST['Password']);
   $passwordR = trim($_POST['PasswordR']);
   $Email = trim($_POST['Email']);
   $Vopros = trim($_POST['Vopros']);
   $Otvet  = trim($_POST['Otvet']);
Нет защиты от sql-inj. Пароли можно было захешировать прямо здесь.


PHP
1
2
$Vopros = trim($_POST['Vopros']);
   $Otvet  = trim($_POST['Otvet']);
Это, я так понял для восстановления пароля? А как вопрос будет отправлен пользователю? Безпробелов?


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if ($Login == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"Логин"</font> не заполнено.</font></code><br />');
   // Логин может состоять из букв, цифр и подчеркивания
   }elseif (!preg_match("/[-_[:blank:]0-9a-zа-я]+/i", $Login)) {
      die('<code><font color="#006600">В поле <font size="6" color="red">"Логин"</font> введены недопустимые символы.</font></code><br />');
   }
   if ($Email == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"E-mail"</font> не заполнено. </font></code><br />');
 
   // Проверяем e-mail на корректность
   }elseif (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $Email)) {
      die('<code><font color="#006600">Указанный <font size="6" color="red">"E-mail"</font> имеет недопустимый формат. </font></code><br />');
   }
   if ($password1 == '' || $passwordR == '') {
      die('<code><font color="#006600">Поле <font size="6" color="red">"Пароль"</font> не заполнено. </font></code><br />');
   }elseif($password1 !== $passwordR) {
      die('<code><font color="#006600">Поля <font size="6" color="red">"Пароль"</font> и <font size="6" color="red">"Повтор пароля"</font> не совпадают.</font></code><br />');
   // Пароль может состоять из букв, цифр и подчеркивания
   }elseif(!preg_match("/[-_[:blank:]0-9a-zа-я]+/i", $password1)) {
      die('<code><font color="#006600">В поле <font size="6" color="red">"Пароль"</font> введены недопустимые символы. </font></code><br />');
   }
Можно было, как минимум, оформить повторяющиеся шаблонные части в отдельную функцию, чтобы не захламлять код.


PHP
1
2
3
4
 $txt_host3 = file_get_contents( "../bd/txt/host.txt" );
 $txt_login3 = file_get_contents( "../bd/txt/login.txt" );
 $txt_password3 = file_get_contents( "../bd/txt/password.txt" );
 $txt_name_bd3 = file_get_contents( "../bd/txt/name_bd.txt" );
Ужоз! Директория, надеюсь, защищена хоть? Можно и нужно константы здесь


PHP
1
2
3
4
5
/* Соединяемся с базой данных */
$hostname = $txt_host3; // название/путь сервера, с MySQL
$username = $txt_login3; // имя пользователя (в Denwer`е по умолчанию "root")
$password = $txt_password3; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = $txt_name_bd3; // название базы данных
Из пустого в порожнее?


PHP
1
// Записываем в базу (не используем addslashes - экранировать нечего)
Откуда такая уверенность?


PHP
1
2
3
4
5
mysql_query("INSERT INTO users (login, pass, email, timestamp)
                   VALUES ($Login, $mdPassword, $Email, $time)",$link);
      if (mysql_error($link) != "") {
         die("Пользователь с таким логином уже существует, выберите другой<br />\n");
      }
Бе


PHP
1
$id = mysql_result(mysql_query("SELECT LAST_INSERT_ID()", $link), 0);
Уверенность в том, что последний айдишник на данный момент останется таким же, не 100%


PHP
1
$date = time();
Переменная с таким же значением создана на 36 строке кода.


PHP
1
2
3
4
   // Если письмо не отправилось, удаляем юзера из базы
   mysql_query("DELETE FROM users WHERE login='".$login."' LIMIT 1", $link);
   echo '<code><font color="#006600">Произошла ошибка при отправке письма. Попробуйте зарегистрироваться еще раз. </font></code><br />';
}
Легче было произвести вставку прямо здесь. Излишняя нагрузка на сервер БД.


В общем и целом -- неуд.
1
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
12.09.2011, 07:43  [ТС]
Спасибо за критику. php я только учу. Пытаюсь применять. Получается пока плохо.

Не по теме:

К сожелению, в инете мало информации, которая понятна самоучкам.. :(



короче говоря понял, надо переделывать.....
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
13.09.2011, 13:05  [ТС]
уважаемый Денис Н.
Пытаюсь переделать код, под ваши комментарии.
Цитата Сообщение от Денис Н. Посмотреть сообщение
PHP
1
2
3
4
*$txt_host3 = file_get_contents( "../bd/txt/host.txt" );
$txt_login3 = file_get_contents( "../bd/txt/login.txt" );
$txt_password3 = file_get_contents( "../bd/txt/password.txt" );
$txt_name_bd3 = file_get_contents( "../bd/txt/name_bd.txt" );
Ужоз! Директория, надеюсь, защищена хоть? Можно и нужно константы здесь
PHP
1
2
3
4
5
/* Соединяемся с базой данных */
$hostname = $txt_host3; // название/путь сервера, с MySQL
$username = $txt_login3; // имя пользователя (в Denwer`е по умолчанию "root")
$password = $txt_password3; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = $txt_name_bd3; // название базы данных
Из пустого в порожнее?
переделал так:
PHP
1
2
3
4
5
 /* Подключаемся к БД */
 define('hostname', file_get_contents( "../bd/txt/host.txt" ), true);  // название/путь сервера, с MySQL
 define('username', file_get_contents( "../bd/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
 define('password', file_get_contents( "../bd/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)  
 define('dbName', file_get_contents( "../bd/txt/name_bd.txt" ), true); // название базы данных
Добавлено через 5 минут
Цитата Сообщение от Денис Н. Посмотреть сообщение
PHP
1
2
3
4
5
6
$Login = trim($_POST['Login']);
$password1 = trim($_POST['Password']);
$passwordR = trim($_POST['PasswordR']);
$Email = trim($_POST['Email']);
$Vopros = trim($_POST['Vopros']);
$Otvet = trim($_POST['Otvet']);
Нет защиты от sql-inj. Пароли можно было захешировать прямо здесь.
попробовал сделать так:
PHP
1
2
3
4
if (isset($_POST['Login'])) { $Login = $_POST['Login']; if ($Login == '') { unset($Login);} }
if (isset($_POST['Password'])) { $password1 = $_POST['Password']; if ($password1 == '') { unset($password1);} }
if (isset($_POST['PasswordR'])) { $passwordR = $_POST['PasswordR']; if ($passwordR == '') { unset($passwordR);} }
if (isset($_POST['Email'])) { $Email = $_POST['Email']; if ($Email == '') { unset($Email);} }
что посоветуете?
Я прочитал, что для защиты sql-inj, нужно экранировать ковычками.
Но честно говоря не очень понял....
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
13.09.2011, 14:52
Цитата Сообщение от vasvas7775 Посмотреть сообщение
/* Подключаемся к БД */
PHP
1
2
3
4
 define('hostname', file_get_contents( "../bd/txt/host.txt" ), true); // название/путь сервера, с MySQL
 define('username', file_get_contents( "../bd/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
 define('password', file_get_contents( "../bd/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым) 
 define('dbName', file_get_contents( "../bd/txt/name_bd.txt" ), true); // название базы данных
Все таки так хочешь пароли забирать? Ну тогда к директории, где эти файлы лежат, доступ извне закрой.


Цитата Сообщение от vasvas7775 Посмотреть сообщение
попробовал сделать так:
Пробуем:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$login = ! empty($_POST['login']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['login']) ? $_POST['login'] : die('Login error');
$email = ! empty($_POST['email']) && preg_match('/[A-z0-9_\.-]+@[A-z0-9_-]+\.[A-z]{2,6}/', $_POST['email']) ? $_POST['email'] : die('Email error');
$password= ! empty($_POST['password']) ? md5($_POST['password']) : die('Empty password field');
$passwordR= ! empty($_POST['passwordR']) ? md5($_POST['passwordR']) : die('Empty repeat password field');
$check = $password == $passwordR ? true : false;
if(! $check)
    die('Passwords not matched');
else
{
    $q = "SELECT COUNT(*) FROM users WHERE login='".$login."'";
    $qw = mysql_query($q);
    if(mysql_result($qw, 0) < 1
        die('User has already exists');
    else
        // ADD_NEW_USER
}
1
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
13.09.2011, 15:48  [ТС]
Я в папку, где лежат txt файлы кинул .htaccess и прописал в нем deny from all.
по идее из вне к ним попасть нельзя. НАДЕЮСЬ. хотя....
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
13.09.2011, 15:50
Цитата Сообщение от vasvas7775 Посмотреть сообщение
deny from all.
к ним так даже сервак не попадет
Code
1
allow from 127.0.0.1
добавь
1
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
13.09.2011, 15:51  [ТС]
а пароли подключения к бд из txt, я подключаю.
потому, что эти файлы создаются, когда устанавливается БД. из файла инсталлятора.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
13.09.2011, 15:54
Цитата Сообщение от vasvas7775 Посмотреть сообщение
а пароли подключения к бд из txt, я подключаю.
потому, что эти файлы создаются, когда устанавливается БД. из файла инсталлятора.
Ну, если БД MySQL, то там по умолчанию:
Code
1
2
user: root
pass:
Зачем скрипт-то тормозить, если эти пароли итак известны?
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
13.09.2011, 17:21  [ТС]
Цитата Сообщение от Денис Н. Посмотреть сообщение
user: root
pass:
Зачем скрипт-то тормозить, если эти пароли итак известны?
Это они в денвере известны, а когда сайт будет скидываться на сервер.
А так он настраивается автоматически.
Может данные из этих файлов в сессию загрузить? а уже из нее подключить?

Добавлено через 5 минут
слушай Денис Н., я так понимаю
Цитата Сообщение от Денис Н. Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$login = ! empty($_POST['login']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['login']) ? $_POST['login'] : die('Login error');
$email = ! empty($_POST['email']) && preg_match('/[A-z0-9_\.-]+@[A-z0-9_-]+\.[A-z]{2,6}/', $_POST['email']) ? $_POST['email'] : die('Email error');
$password= ! empty($_POST['password']) ? md5($_POST['password']) : die('Empty password field');
$passwordR= ! empty($_POST['passwordR']) ? md5($_POST['passwordR']) : die('Empty repeat password field');
$check = $password == $passwordR ? true : false;
if(! $check)
* * die('Passwords not matched');
else
{
* * $q = "SELECT COUNT(*) FROM users WHERE login='".$login."'";
* * $qw = mysql_query($q);
* * if(mysql_result($qw, 0) < 1
* * * * die('User has already exists');
* * else
* * * * // ADD_NEW_USER
}
здесь сразу проверка ввода, и пароль переведен в хешь. а также сразу проверяет, есть ли такой пользователь или нет?
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
13.09.2011, 17:59
да, ты правильно понял
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
13.09.2011, 18:02  [ТС]
Слушай, Денис не получается.
Выдает ошибку
Code
1
Parse error: syntax error, unexpected T_EXIT in Z:\home\w0\www\avtorizaciya\registration.php on line 27
вот в этой строке
PHP
1
        die('User has already exists');
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
13.09.2011, 22:02
сори, вот так:
PHP
1
2
if(mysql_result($qw, 0) < 1)
    die('User has already exists');
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
14.09.2011, 07:31  [ТС]
денис слушай, сделал следующее,
подключение к БД, перенес в самое начало файла.

Добавил {} вот здесь:
PHP
1
2
3
4
    else
    {
        // ADD_NEW_USER
        }
целиком получилось так:
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
 
 /* Подключаемся к БД */
 define('myHost', file_get_contents( "../bd/txt/host.txt" ), true);  // название/путь сервера, с MySQL
 define('myName', file_get_contents( "../bd/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
 define('myPass', file_get_contents( "../bd/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)  
 define('myBD', file_get_contents( "../bd/txt/name_bd.txt" ), true); // название базы данных 
 
 /* Создаем соединение */
$link = mysql_connect(myHost,myName,myPass) or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db(myBD) or die (mysql_error());
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$login = ! empty($_POST['login']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['login']) ? $_POST['login'] : die('Login error');
$email = ! empty($_POST['email']) && preg_match('/[A-z0-9_\.-]+@[A-z0-9_-]+\.[A-z]{2,6}/', $_POST['email']) ? $_POST['email'] : die('Email error');
$password= ! empty($_POST['password']) ? md5($_POST['password']) : die('Empty password field');
$passwordR= ! empty($_POST['passwordR']) ? md5($_POST['passwordR']) : die('Empty repeat password field');
$check = $password == $passwordR ? true : false;
if(! $check)
    die('Passwords not matched');
else
{
    $q = "SELECT COUNT(*) FROM users WHERE login='".$login."' ";
    $qw = mysql_query($q);
    if(mysql_result($qw, 0) < 1)
       die('User has already exists');
    else
    {
    
      // Записываем в базу (не используем addslashes - экранировать нечего)
      mysql_query("INSERT INTO users (login, pass, email, timestamp)
                   VALUES ('$login', '$password', '$email', '$date')",$link);
     
    }       
}
 
и тд.....
но теперь, кргда регистрируешь нового пользователя, выдает:
Code
1
User has already exists
хотя такого нет......
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
14.09.2011, 14:30
ой, извини, видимо спать сильно хотелось очень. Вот эту строку:
PHP
1
2
if(mysql_result($qw, 0) < 1)
       die('User has already exists');
вот так надо, конечно же:
PHP
1
2
if(mysql_result($qw, 0) > 0)
       die('User has already exists');
Думаю, комментировать тут нечего
1
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
25.09.2011, 15:33  [ТС]
Опять проблема с файлом регистрации, вроде все работает,
Но в базу данных, не добавляет.
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
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   print registraciya();
}else{
    print 'Произошла Ошибка....';
}
 
 
// ------------------------------------------------------------------
// ------------------------   РЕГИСТРАЦИЯ   -------------------------
// ------------------------------------------------------------------
function registraciya() {
   /* Подключаемся к БД */
   define('myHost', file_get_contents( "../bd/txt/host.txt" ), true);  // название/путь сервера, с MySQL
   define('myUser', file_get_contents( "../bd/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
   define('myPass', file_get_contents( "../bd/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)  
   define('myBD', file_get_contents( "../bd/txt/name_bd.txt" ), true); // название базы данных 
    
 
   /* Создаем соединение */
   $connect = mysql_connect(myHost,myUser,myPass) or die ("Не могу создать соединение");
   /* Выбираем базу данных. Если произойдет ошибка - вывести ее */
   mysql_select_db(myBD) or die (mysql_error());
   
   $login = ! empty($_POST['login']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['login']) ? $_POST['login'] : die('Login error');
   $email = ! empty($_POST['email']) && preg_match('/[A-z0-9_\.-]+@[A-z0-9_-]+\.[A-z]{2,6}/', $_POST['email']) ? $_POST['email'] : die('Email error');
   $password= ! empty($_POST['password']) ? ($_POST['password']) : die('Empty password field');
   $passwordMd5 = md5($password);
   $passwordR= ! empty($_POST['passwordR']) ? md5($_POST['passwordR']) : die('Empty repeat password field');
   $check = $passwordMd5 == $passwordR ? true : false;
   if(! $check)
      die('Passwords not matched');
   else{
      $q = mysql_query("SELECT COUNT(*) FROM users WHERE login='".$login."' ");
         if(mysql_result($q, 0) > 0)
            die('User has already exists');
         else{        
            // Записываем в базу
            $infoSohranena = "INSERT INTO users SET login='$user', pass='$password', email='$email', time='$date', Data_registracii='$date' ";    
            $rr = mysql_query($infoSohranena, $connect);
            
            if($rr = true){
               print 'Данные, сохранены в Базу Данных...';
            } else {
               print 'c...';
            }             
         }           
   } 
}
Добавлено через 2 часа 34 минуты

проблему решил....
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
28.09.2011, 17:17  [ТС]
Файл обработчик регистрации, сделал пока так.
В денвере все работает нормально, проверяет ели пользователь с таким именем уже есть, говорит такой логин существует, если нет регистрирует.
Сбросил на в инет на хостинг, а там регистрации, один и тот же логин может бесконечно регистрировать. не пойму...

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
<?php
// ------------------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] == 'POST') {   
   connect();      // Подключаем function где:   узнаем данные для подключения к Бд. Подключаемся к БД.
   registraciya(); // Подключаем function где: 
   aktivaciya();   // Подключаем function где: 
   closed();       // Подключаем function где:   Разрываем соединение с БД. 
}else{
    print 'Произошла Ошибка....';
}
 
 
// ------------------------------------------------------------------
// ----------------   Подключаемся к базе данных   ------------------
// ------------------------------------------------------------------
function connect() {
   /* Подключаемся к БД */
   define('myHost', file_get_contents( "../bd/txt/host.txt" ), true);  // название/путь сервера, с MySQL
   define('myUser', file_get_contents( "../bd/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
   define('myPass', file_get_contents( "../bd/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)  
   define('myBD', file_get_contents( "../bd/txt/name_bd.txt" ), true); // название базы данных 
   
   /* Создаем соединение */
   $GLOBALS[connect] = mysql_connect(myHost,myUser,myPass) or die ("Не могу создать соединение");
   /* Выбираем базу данных. Если произойдет ошибка - вывести ее */
   mysql_select_db(myBD) or die (mysql_error());
}
 
 
// ------------------------------------------------------------------
// ------------------   Берем данные из формы   ---------------------
// ------------------------------------------------------------------
function login(){
   return $login = ! empty($_POST['login']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['login']) ? $_POST['login'] : die('Login error');
}
function email(){
   return $email = ! empty($_POST['email']) && preg_match('/[A-z0-9_\.-]+@[A-z0-9_-]+\.[A-z]{2,6}/', $_POST['email']) ? $_POST['email'] : die('Email error');
}
function sWopros(){
   return $sWopros = ! empty($_POST['Vopros']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['Vopros']) ? $_POST['Vopros'] : die('Vopros error');
}
function sOtwet(){
   return $sOtwet = ! empty($_POST['Otvet']) && preg_match('/[A-zА-я0-9_\s-]+/', $_POST['Otvet']) ? $_POST['Otvet'] : die('Otvet error');
}
function password(){
   return $password = ! empty($_POST['password']) ? ($_POST['password']) : die('Empty password field');
}
   function passwordMd5(){
      $password = password();
      return $passwordMd5 = md5($password );
   }
   function check(){
      $passwordMd5 = passwordMd5();
      $passwordR= ! empty($_POST['passwordR']) ? md5($_POST['passwordR']) : die('Empty repeat password field');
      return $check = $passwordMd5 == $passwordR ? true : false;
   }
 
// ------------------------------------------------------------------
// ------------------------   РЕГИСТРАЦИЯ   -------------------------
// ------------------------------------------------------------------
function registraciya() {
   $login = login();
   $email = email();
   $sWopros = sWopros();
   $sOtwet = sOtwet();
   $passwordMd5 = passwordMd5();
   $check = check();
   
   $date = time();
   
   if(! $check)
      die('Пароли не совпадают!');
   else{
      $q = mysql_query("SELECT COUNT(*) FROM users WHERE login='".$login."' ");
         if(mysql_result($q, 0) > 0)
            die('Логин '.'<font color="red" size="3">'.$login.'</font>'.' уже зарегистрирован, Попробуйте придумать другой!');
         else{        
            // Записываем в базу
            $info = "INSERT INTO users SET login='$login', pass='$passwordMd5', email='$email', sWopros='$sWopros', sOtwet='$sOtwet', time='$date', dataRegistracii='$date' ";    
            $enter = mysql_query($info, $GLOBALS[connect]);
            
            //$vaevodInfo = $enter == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
            //print $vaevodInfo;              
         }           
   }   
}
 
 
// ------------------------------------------------------------------
// ------------------------    АКТИВАЦИЯ    -------------------------
// ------------------------------------------------------------------
function aktivaciya() {
   $imyaDomena = $_SERVER['SERVER_NAME'];
   $login = login();
   $email = email();
   $password = password();
   
   $date = date("d.m.Y - H:i");
   
   $id = mysql_result(mysql_query("SELECT LAST_INSERT_ID()", $GLOBALS[connect]), 0);
   // Составляем "keystring" для активации
   $key = md5(substr($email, 0 ,2).$id.substr($login, 0 ,2));
   
   // Компонуем письмо
   $title = 'Потвеждение регистрации на сайте '.$imyaDomena;
   $headers  = "Content-type: text/plain; charset=windows-1251\r\n";
   $headers = "From: $imyaDomena Администрация  \r\n";
   $subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($title, "w","k")).'?=';
   $letter = <<<TEXT
 
          Здравствуйте!
   Уважаемый $login. Ваш почтовый ящик $email, был использован при регистрации на сайте $imyaDomena.
 
       Если вы не регистрировались на сайте $imyaDomena, удалите это письмо.
       Если вы регистрировались, Перейдите по активационной ссылке, для активации вашего аккаунта.
 
  -------------------------------------------------------
   Ваши регистрационные данные:
      Логин: $login
      Пароль: $password
  -------------------------------------------------------
 
   Для активации аккаунта вам следует пройти по ссылке:
   http://$imyaDomena/avtorizaciya/activation.php?login=$login&key=$key
 
 
   Данная ссылка будет доступна в течении 5 дней.
  -------------------------------------------------------
   Администрация сайта: http://$imyaDomena/index.php
   $date
TEXT;
// Отправляем письмо
if (!mail($email, $subject, $letter, $headers)) {
   // Если письмо не отправилось, удаляем юзера из базы
   mysql_query("DELETE FROM users WHERE login='$login' LIMIT 1", $GLOBALS[connect]);
   echo '<code><font color="#006600">Произошла ошибка при отправке письма. Попробуйте зарегистрироваться еще раз. </font></code><br />';
}else {
   echo '<code><font color="#006600">Вы успешно зарегистрировались в системе. На указанный вами
           <font color="red">email '.$email.'</font> было отправлено письмо, со ссылкой для активации аккаунта.
           <font color="#008000">У вас 5 дней!</font></font></code><br />';
   }
   
   //print "$login, $key";
}
 
 
// ------------------------------------------------------------------
// ---------------------   Разрываем соединение   -------------------
// ------------------------------------------------------------------
function closed() {
   mysql_close($GLOBALS[connect]);
}
?>
может что опять не так???
0
Обитатель
 Аватар для vasvas7775
539 / 317 / 42
Регистрация: 24.12.2010
Сообщений: 795
22.10.2011, 21:34  [ТС]
Ребят, вот так написал обработчик регистрации, авторизации, Активации профиля пользователя.
Взгляните пожалуйста.
Может какие ошибки допустил, или что не так сделал?
Что лучше исправить???
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
<?session_start();
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//                 Данный отрезок кода, проверяет поля формы регистрации на заполнение, и ошибки
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//Заносим в массив значение полей
$rForm = array(
   1=> $_POST['login'],       //логин
   2=> $_POST['password'],    //пароль
   3=> md5($_POST['password']),  //пароль в md5 хеше
   4=> $_POST['passwordR'],   //проверка пароля
   5=> md5($_POST['passwordR']),  //проверка пароля в md5 хеше
   6=> $_POST['email'],       //емайл
   7=> $_POST['Vopros'],      //вопрос для востановления пароля
   8=> $_POST['Otvet'],        //ответ для востановления пароля
   9=> $chek = md5($_POST['password']) == md5($_POST['passwordR']) ? true : false,
   Date => $date = date("d.m.Y - H:i"),
   Date2 => $date = date("d.m.Y"),
   
   //ФИО
   11 => $_POST['familiy'] == true,
   12 => $_POST['name'] == true,
   13 => $_POST['otchestvo'] == true,
   14 => $_POST['familiy'], //Фамилия
   15 => $_POST['name'], //Имя
   16 => $_POST['otchestvo'], //Отмество
   //ДАТА рождения
   17 => $_POST['chislo'] == true,
   18 => $_POST['mesyc'] == true,
   19 => $_POST['god'] == true,
   20 => $_POST['chislo'], //День
   21 => $_POST['mesyc'], //Месяц
   22 => $_POST['god'], //Год
   
   23 => $_POST['gorod'], //ваш город
   24 => $_POST['brauzer'], //Любимый браузер
   25 => $_POST['nomerICQ'], //ICQ
   26 => $_POST['skaype'], //skaype
   27 => $_POST['telefon'] //номер телефона
);
$acAvtorization = array(
   login => $_POST['avtorizaciya_Login'],
   password => $_POST['avtorizaciya_pass'],
   passwors => md5($_POST['avtorizaciya_pass'])
);
//Создалим функцию, Которая будет выводить ощибки и сообщения
function soobshenie(){
   global $rForm;
   $chek = $rForm[3] == $rForm[5] ? true : false;
   
      
   if(! $rForm[1]){
      define('text', "Вы не заполнели поле <font color='red'>Логин</font>");
   }else{
     if(preg_match('/^[a-zA-Z0-9]+$/', $rForm[1])){}else{
        define('text', "В поле <font color='red'>Логин</font> ввыдены недопустимые символы");
     }
   }
   if(! $rForm[2]){
      define('text', "Вы не заполнели поле <font color='red'>Пароль</font>");
   }
   if(! $rForm[4]){
      define('text', "Вы не заполнели поле <font color='red'>Повторите пароль</font>");
   }
   if(! $chek){
      define('text', "Пароли несовпадают.<br>Попробуйте еще раз");
   }
   if(! $rForm[6]){
      define('text', "Вы не заполнели поле <font color='red'>email</font>");
   }else{
     if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$|i", $rForm[6])){}else{
        define('text', "В поле <font color='red'>email</font> ввыдены недопустимые символы");
     }
   }
   if(! $rForm[7]){
      define('text', "Вы не заполнели поле <font color='red'>Вопрос, для востановления пароля</font>");
   }else{
     if(preg_match('/[A-zА-я0-9_\s-]+/', $rForm[6])){}else{
        define('text', "В поле <font color='red'>Вопрос, для востановления пароля</font> ввыдены недопустимые символы");
     }
   }
   if(! $rForm[8]){
      define('text', "Вы не заполнели поле <font color='red'>Ответ</font>");
   }else{
     if(preg_match('/[A-zА-я0-9_\s-]+/', $rForm[6])){}else{
        define('text', "В поле <font color='red'>Ответ</font> ввыдены недопустимые символы");
     }
   } 
   if($rForm[14]){
   if(preg_match('/^[a-zA-Zа-яА-я]+$/', $rForm[14])){
      if(strlen($rForm[14]) >= 3){}else{
         define('text', "В поле <font color='red'>Фамилия</font> Слишком мало букв");
      }
   }else{
      define('text', "В поле <font color='red'>Фамилия</font>. Введены недопустимые символы <font color='red'>$rForm[14]</font>");
   }}
   if($rForm[15]){
   if(preg_match('/^[a-zA-Zа-яА-я]+$/', $rForm[15])){
      if(strlen($rForm[15]) >= 3){}else{
         define('text', "В поле <font color='red'>Имя</font> Слишком мало букв");
      }
   }else{
      define('text', "В поле <font color='red'>Имя</font>. Введены недопустимые символы <font color='red'>$rForm[15]</font>");
   }}
   if($rForm[16]){
   if(preg_match('/^[a-zA-Zа-яА-я]+$/', $rForm[16])){
      if(strlen($rForm[16]) >= 3){}else{
         define('text', "В поле <font color='red'>Отчество</font> Слишком мало букв");
      }
   }else{
      define('text', "В поле <font color='red'>Отчество</font>. Введены недопустимые символы <font color='red'>$rForm[16]</font>");
   }}
   if(preg_match('/[A-zА-я0-9_\s-]+/', $rForm[23])){
      define('text', "В поле <font color='red'>Ваш город</font>. Введены недопустимые символы");
   }
   if(preg_match('/[A-zА-я0-9_\s-]+/', $rForm[24])){
      define('text', "В поле <font color='red'>Любимый браузер</font>. Введены недопустимые символы");
   }
   if(preg_match('/^(\+?\d+)?\s*(\(\d+\))?[\s-]*([\d-]*)$/', $rForm[25])){}else{
      define('text', "В поле <font color='red'>ICQ</font>. Введены недопустимые символы");
   }
   if(preg_match('/^(\+?\d+)?\s*(\(\d+\))?[\s-]*([\d-]*)$/', $rForm[26])){}else{
      define('text', "В поле <font color='red'>skaype</font>. Введены недопустимые символы");
   }
   if(preg_match('/^(\+?\d+)?\s*(\(\d+\))?[\s-]*([\d-]*)$/', $rForm[27])){}else{
      define('text', "В поле <font color='red'>Номер телефона</font>. Введены недопустимые символы");
   }
   
   define('text1', "Сообщение");
   define('adres1', "javascript:history.back(1)");
   define('knopka1', "<input id='KnopREG-2' type='submit' value='<< Назад' />");
   define('adres2', "");
   define('knopka2', "");
   include_once 'thems.php';
   print "<meta  http-equiv='Refresh' content='8; url=javascript:history.back(1)'>"; //Автопереход шаг назад
   exit();
}
 
function stranicaOtceta2($stranicaOtceta2){
   define('text1', "Сообщение");
   define('adres1', "$stranicaOtceta2");
   define('knopka1', "<input id='KnopREG-2' type='submit' value='<< Назад' />");
   define('adres2', "");
   define('knopka2', "");
   include_once 'thems.php';
}
function stranicaOtceta3_1($stranicaOtceta3_1){
   print "<meta  http-equiv='Refresh' content='8; url=$stranicaOtceta3_1'>"; //Автопереход шаг назад
   exit();
}
 
//Создаем функцию, задача которой, проверить данные формы РЕГИСТРАЦИЯ
function formRegProw(){
   global $rForm;
   
   function obrPole1($pole){
      if(! $pole){
         soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
      }else{
         if(preg_match('/^[a-zA-Z0-9]+$/', "$pole")){}else{
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
         }
      }
   }
   function obrPole2($pole){
      if(! $pole){
         soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
      }
   }
   function sverkaPass(){
      global $rForm;
      $chek = $rForm[3] == $rForm[5] ? true : false;
      if(!$chek){
         soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
      }
   }
   function obrPole3($pole){
      if(! $pole){
         soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
      }else{   
         if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$|i", $pole)){}else{  
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка 
         } 
      }
   }
   function obrPole4($pole){ 
      if(! $pole){
         soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
      }else{
         if(preg_match('/[A-zА-я0-9_\s-]+/', "$pole")){}else{
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
         }
      }
   }
   
   
   function FIO($pole){
      global $rForm;
      if($pole){
         if(preg_match('/^[a-zA-Zа-яА-я]+$/', $pole)){
            if(strlen($pole) >= 3){
               if($rForm[11] != true){
                  define("text", "Надо заполнить все три поля <font color='red'>Фамилия, Имя, Отчество</font>");
                  stranicaOtceta2('javascript:history.back(1)');
                  stranicaOtceta3_1('javascript:history.back(1)');
               }elseif($rForm[12]!= true){
                  define('text', "Надо заполнить все три поля <font color='red'>Фамилия, Имя, Отчество</font>");
                  stranicaOtceta2('javascript:history.back(1)');
                  stranicaOtceta3_1('javascript:history.back(1)');
               }elseif($rForm[13] != true){
                  define('text', "Надо заполнить все три поля <font color='red'>Фамилия, Имя, Отчество</font>");
                  stranicaOtceta2('javascript:history.back(1)');
                  stranicaOtceta3_1('javascript:history.back(1)');
               }
            }else{
               soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
            }
         }else{
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
         }
      }
   }
   function data($pole){
      global $rForm;
      if($pole){
         if($rForm[17] != true){
            define('text', "Поле дата рождения, при заполнении, должна выглядить примерно так: <font color='red'>1.января.2011</font>");
            stranicaOtceta2('javascript:history.back(1)');
            stranicaOtceta3_1('javascript:history.back(1)');
         }elseif($rForm[18] != true){
            define('text', "Поле дата рождения, при заполнении, должна выглядить примерно так: <font color='red'>1.января.2011</font>");
            stranicaOtceta2('javascript:history.back(1)');
            stranicaOtceta3_1('javascript:history.back(1)');
         }elseif($rForm[19] != true){
            define('text', "Поле дата рождения, при заполнении, должна выглядить примерно так: <font color='red'>1.января.2011</font>");
            stranicaOtceta2('javascript:history.back(1)');
            stranicaOtceta3_1('javascript:history.back(1)');
         }
      }
   }
   function info1($pole){
      if($pole){
         if(preg_match('/[A-zА-я0-9_\s-]+/', $pole)){}else{
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
         }
      }
   }
   function info12($pole){
      if($pole){
         if(preg_match('/^(\+?\d+)?\s*(\(\d+\))?[\s-]*([\d-]*)$/', $pole)){}else{
            soobshenie(); //Вызываем функцию сообщения, если произошра ошибка
         }
      }
   }
   
   obrPole1($rForm[1]); //Прооверяем login
   obrPole2($rForm[2]); //Прооверяем password
   obrPole2($rForm[4]); //Прооверяем passwordR
   sverkaPass();
   obrPole3($rForm[6]); //Проверяем email
   obrPole4($rForm[7]); //Прооверяем vopros
   obrPole4($rForm[8]); //Прооверяем Otvet
   
   FIO($rForm[14]);
   FIO($rForm[15]);
   FIO($rForm[16]);
   data($rForm[20]);
   data($rForm[21]);
   data($rForm[22]);
   info1($rForm[23]);
   info1($rForm[24]);
   info12($rForm[25]);
   info12($rForm[26]);
   info12($rForm[27]);
}
 
 
 
 
//Создаем функцию, задача которой, проверить данные формы АВТОРИЗАЦИЯ ПОЛЬЗОВАТЕЛЕЙ
function formRegProw2(){
   global $acAvtorization;
   
   function obrPole($pole){
      if(! $pole){
         define('text', "Вы не заполнели поле <font color='red'>Логин</font>");
         stranicaOtceta2('javascript:history.back(1)');
         stranicaOtceta3_1('javascript:history.back(1)');
      }else{
         if(preg_match('/^[a-zA-Z0-9]+$/', $pole)){}else{
            define('text', "В поле <font color='red'>Логин</font> ввыдены недопустимые символы");
            stranicaOtceta2('javascript:history.back(1)');
            stranicaOtceta3_1('javascript:history.back(1)');
         }
      }
   }
   function obrPole2($pole){
      if(! $pole){
         define('text', "Вы не заполнели поле <font color='red'>Пароль</font>");
         stranicaOtceta2('javascript:history.back(1)');
         stranicaOtceta3_1('javascript:history.back(1)');
      }
   }
   
   obrPole($acAvtorization[login]); //Прооверяем login
   obrPole2($acAvtorization[password]); //Прооверяем Пароль
}
 
 
 
 
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//                                   Данный отрезок кода, отвечает за подключение к базе данных
//**********************************************************************************************************************************
//**********************************************************************************************************************************
   define('myHost', file_get_contents( "../includes/txt/host.txt" ), true);  // название/путь сервера, с MySQL
   define('myUser', file_get_contents( "../includes/txt/login.txt" ), true); // имя пользователя (в Denwer`е по умолчанию "root")
   define('myPass', file_get_contents( "../includes/txt/password.txt" ), true); // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
   define('myBD', file_get_contents( "../includes/txt/name_bd.txt" ), true); // название базы данных
 
   /* Создаем соединение */
   $connectReg = @mysql_connect(myHost,myUser,myPass) or die ("Не могу создать соединение");
   if($connectReg == true){}else{
       define('text', "Ошибка соединения с сервером");
       stranicaOtceta2('javascript:history.back(1)');
       stranicaOtceta3_1('javascript:history.back(1)');
   }
   /* Выбираем базу данных. Если произойдет ошибка - вывести ее */
   @mysql_select_db(myBD) or die (mysql_error());
   
   
      
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//     Данный отрезок кода, отвечает за определение какая форма или страдица посылает данные, и подключает ту лил иную функцию
//**********************************************************************************************************************************
//**********************************************************************************************************************************
// узнаем значение скрытых полей actionAvtorization
$actionAvtorization = array(
  hidden => trim($_POST['actionAvtorization']),
  actionAvtorization => trim($_GET['actionAvtorization'])
);
 
 
if($actionAvtorization[hidden] == 1){
   //выводим функцию проверки полей формы РЕГИСТРАЦИИ
   formRegProw();
   //функция РЕГИСТРАЦИИ
   registration();
}elseif($actionAvtorization[hidden] == 2){
   //выводим функцию проверки полей формы АВТОРИЗАЦИИ ПОЛЬЗОВАТЕЛЕЙ
   formRegProw2();
   //Функция АВТОРИЗАЦИИ
   avtorization();
}elseif($actionAvtorization[actionAvtorization] == 'avtorization'){
   activationUZ();
}else{
   define('text', "Произошла Ошибка....");
   stranicaOtceta2('javascript:history.back(1)');
   stranicaOtceta3_1('javascript:history.back(1)');
} 
 
 
  
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//                                   Данный отрезок кода, отвечает за РЕГИСТРАЦИЮ
//**********************************************************************************************************************************
//********************************************************************************************************************************** 
 
//---   РЕГИСТРАЦИЯ   --------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------------
function registration(){
 global $rForm;
 global $connectReg; 
 
  // ------------------------------------------------------------------
  // Создаем функцию в которая будет добавлять все наши данные в таблицы userov 
  function saveTheData(){
   global $rForm;
   global $connectReg;
    
         $info1_1 = "INSERT INTO users SET login='$rForm[1]', pass='$rForm[3]', email='$rForm[6]', sWopros='$rForm[7]', sOtwet='$rForm[8]', time='$rForm[Date]', dataRegistracii='$rForm[Date2]' ";    
         $info1_2 = "INSERT INTO usersDannaea SET login='$rForm[1]', prava='novichok', themS='0', dataThems='$rForm[Date]' ";
         $info1_3 = "INSERT INTO usersInfo SET login='$rForm[1]' ";
         $info1_4 = "INSERT INTO usersStatus SET login='$rForm[1]' ";
           $enter1_1 = mysql_query($info1_1, $connectReg);
           $enter1_2 = mysql_query($info1_2, $connectReg);
           $enter1_3 = mysql_query($info1_3, $connectReg);
           $enter1_4 = mysql_query($info1_4, $connectReg);
         
         $vaevodInfo1_1 = $enter1_1 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $vaevodInfo1_2 = $enter1_2 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $vaevodInfo1_3 = $enter1_3 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $vaevodInfo1_4 = $enter1_4 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $sravnivaem1 = $vaevodInfo1_1 == $vaevodInfo1_2 ? true : false;
         $sravnivaem2 = $vaevodInfo1_3 == $vaevodInfo1_4 ? true : false;
         $waevodSravneniy = $sravnivaem1 == $sravnivaem2 ? true : false;
         
         if(! $waevodSravneniy){
           // Удаляем строчку в таблицах данных.
           mysql_query("DELETE FROM users WHERE login='$rForm[1]' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersDannaea WHERE login='$rForm[1]' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersInfo WHERE login='$rForm[1]' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersStatus WHERE login='$rForm[1]' LIMIT 1", $connectReg);
           print "<meta  http-equiv='Refresh' content='8; url=javascript:history.back(1)'>"; //Автопереход шаг назад
           define('text', "Произошла ошибка. Вы небыли зарегистрированны. вернитесь на страницу регистрации и попробуйте еще раз.");
           stranicaOtceta2();
           stranicaOtceta3_1('javascript:history.back(1)');
         } else {
           // 
           letter(); // Отправляем письмо на поту, выводим сообщение об отправке
         } // конец if(! $waevodSravneniy)
  } // конец function saveTheData()     
 
  if(! $rForm[9]){
    define('text', "Пароли не совподают");
    stranicaOtceta2('javascript:history.back(1)');
    stranicaOtceta3_1('javascript:history.back(1)');
  } else {
    // Делаем проверку, Если НИК зарегистрирован, Обрываем регистрацию,
    // Если незарегистрирован, продолжаем регистрацию.
    $result = mysql_query("SELECT * FROM users WHERE login='$rForm[1]' ");  
    if(mysql_num_rows($result) > 0){
      define('text', "<font color='red'>$rForm[1]</font> Такой пользователь уже существует, Выберите себе другой <font color='red'>login</font>.");
      stranicaOtceta2('javascript:history.back(1)');
      stranicaOtceta3_1('javascript:history.back(1)');
    } else {
    // Делаем проверку, Если email уже зарегистрирована, Обрываем регистрацию,
    // Если незарегистрирована, продолжаем регистрацию.
      $result2 = mysql_query("SELECT * FROM users WHERE email='$rForm[6]' ");
      if(mysql_num_rows($result2) > 0){
        //define('text', "Указанная вами электронная почта <font color='red'>$rForm[6]</font>, Зарегистрированна на другого пользователя");
        //proverkaNaOsibki1();
        
    // Вставляем вывод функции собранения данных в таблицы пользователей
    saveTheData();
         
      } else {
      
    // Вставляем вывод функции собранения данных в таблицы пользователей
    saveTheData();  
         
      } // конец if(mysql_num_rows($result2) > 0)
    }  // конец if(mysql_num_rows($result) > 0)
  }  // конец if(! $rForm[9])   
}  // конец function registration()
 
 
//---   СОСТОВЛЯЕМ ПИСЬМО   --------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------------
function letter(){
 global $rForm;
 global $connectReg;
 
 
 $imyaDomena = $_SERVER['SERVER_NAME'];
 $result = mysql_query("SELECT * FROM users WHERE login='$rForm[1]' ");
   $key = $rForm[3];
   $login = $rForm[1];
   $actionAvtorization = 'avtorization';
 
   
   // Компонуем письмо
   $title = 'Потвеждение регистрации на сайте '.$imyaDomena;
   $headers  = "Content-type: text/plain; charset=windows-1251\r\n";
   $headers = "From: $imyaDomena Администрация  \r\n";
   $subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($title, "w","k")).'?=';
   $letter = <<<TEXT
 
          Здравствуйте!
   Уважаемый $rForm[1]. Ваш почтовый ящик $rForm[6], был использован при регистрации на сайте $imyaDomena.
 
       Если вы не регистрировались на сайте $imyaDomena, удалите это письмо.
       Если вы регистрировались, Перейдите по активационной ссылке, для активации вашего аккаунта.
 
  -------------------------------------------------------
   Ваши регистрационные данные:
      Логин: $rForm[1]
      Пароль: $rForm[2]
  -------------------------------------------------------
 
   Для активации аккаунта вам следует пройти по ссылке:
   http://$imyaDomena/authorization/obrabotchik.php?actionAvtorization=$actionAvtorization&login=$login&key=$key
 
 
   Данная ссылка будет доступна в течении 5 дней.
  -------------------------------------------------------
   Администрация сайта: http://$imyaDomena/index.php
   $rForm[Date]
TEXT;
// Отправляем письмо
if (!mail($rForm[6], $subject, $letter, $headers)) {
   // Если письмо не отправилось, удаляем юзера из базы
   mysql_query("DELETE FROM users WHERE login='$rForm[1]' LIMIT 1", $connectReg);
   mysql_query("DELETE FROM usersDannaea WHERE login='$rForm[1]' LIMIT 1", $connectReg);
   mysql_query("DELETE FROM usersInfo WHERE login='$rForm[1]' LIMIT 1", $connectReg);
   mysql_query("DELETE FROM usersStatus WHERE login='$rForm[1]' LIMIT 1", $connectReg);
   
   define('text', "Произошла ошибка при отправке письма. Попробуйте зарегистрироваться еще раз.");
   stranicaOtceta2('javascript:history.back(1)');
   stranicaOtceta3_1('javascript:history.back(1)');
}else {
   define('text', "<font color='red'>$rForm[1]</font> Вы успешно зарегистрировались на сайте. Для активации вашего Аккаунта, на ваш почтовый яшик <font color='red'>$rForm[6]</font> было отправлено письмо.");
   stranicaOtceta2('/index.php');
   stranicaOtceta3_1('/index.php');
   }   
}
 
 
 
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//                                   Авторизация пользователей
//**********************************************************************************************************************************
//********************************************************************************************************************************** 
function avtorization(){
 global $acAvtorization;
 global $connectReg;
 
// извлекаем данные из таблиц пользователей, и сохраняем их в переменные 
 $result1 = mysql_query("SELECT * FROM users WHERE login='$acAvtorization[login]' ");
 $result2 = mysql_query("SELECT * FROM usersDannaea WHERE login='$acAvtorization[login]' ");
 $result4 = mysql_query("SELECT * FROM usersStatus WHERE login='$acAvtorization[login]' ");
   while($row = mysql_fetch_array($result1,MYSQL_ASSOC)){
    $id = ($row['id']);
    $login = ($row['login']);
    $pass = ($row['pass']);
   }
   while($row = mysql_fetch_array($result2,MYSQL_ASSOC)){
    $prava = ($row['prava']);
   }
   while($row = mysql_fetch_array($result4,MYSQL_ASSOC)){
    $status = ($row['status']);
   }
   
 if(mysql_num_rows($result1) > 0){ //Проверяем, есть ли данный пользователь в базе данных
   if($status == 1){ //Проверяем, Активна ли учетная запись пользователей
     if($acAvtorization[passwors] == $pass){ //Если пароли равны, проходим дальше
       //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
       //эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
       $_SESSION['login'] = $login;
       $_SESSION['id'] = $id;
         if($prava == 'novichok'){
           $_SESSION['novichok'] = $prava;
         }elseif($prava == 'moderator'){
           $_SESSION['moderator'] = $prava;
         }elseif($prava == 'admin'){
           $_SESSION['admin'] = $prava;
         }
       print "<meta  http-equiv='Refresh' content='0; url=/index.php'>"; //Автопереход на Главную страницу   
     }else{
       define('text', "Ошибка при вводе пароля...");
       stranicaOtceta2('javascript:history.back(1)');
       stranicaOtceta3_1('javascript:history.back(1)');
     }
   }else{
     define('text', "Ваша учетная запись <font color='red'>$acAvtorization[login]</font>, не активирована");
     stranicaOtceta2('javascript:history.back(1)');
     stranicaOtceta3_1('javascript:history.back(1)');
   }
 }else{
   define('text', "<font color='red'>$acAvtorization[login]</font> Такого пользователя не существует");
   stranicaOtceta2('javascript:history.back(1)');
   stranicaOtceta3_1('javascript:history.back(1)');
 }
}
 
 
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//**********************************************************************************************************************************
//                                   АКТИВАЦИЯ Учетной записи 
//**********************************************************************************************************************************
//**********************************************************************************************************************************
function activationUZ(){
 global $connectReg;
 $login = $_GET['login'];
 $key = $_GET['key'];
 $date = date("d.m.Y - H:i");
 $days5 = date("d.m.Y", time()+5*24*60*60);
 
 $result1 = mysql_query("SELECT * FROM users WHERE login='$login' ");
 $result4 = mysql_query("SELECT * FROM usersStatus WHERE login='$login' ");
    while($row = mysql_fetch_array($result1,MYSQL_ASSOC)){
    $loginV = ($row['login']);
    $passV = ($row['pass']);
    $timeV = ($row['time']);
   }
   while($row = mysql_fetch_array($result4,MYSQL_ASSOC)){
    $statusV = ($row['status']);
   }
 //Проверяем есть ли такой пользователь
 if(mysql_num_rows($result1) > 0){
   //Сверяем пароли
   if($key == $passV){
     //Если учетная запись уже активированна, обрываем активацию
     if($statusV == 1){
       define('text', "Учетная запись <font color='red'>$login</font> уже активированна!");
       stranicaOtceta2('/index.php');
       stranicaOtceta3_1('/index.php');
     }else{
       //Если пользователь не успел активировать учетную запись, удаляем данные из таблицы
       if($timeV > $days5){
         mysql_query("DELETE FROM users WHERE login='$login' LIMIT 1", $connectReg);
         mysql_query("DELETE FROM usersDannaea WHERE login='$login' LIMIT 1", $connectReg);
         mysql_query("DELETE FROM usersInfo WHERE login='$login' LIMIT 1", $connectReg);
         mysql_query("DELETE FROM usersStatus WHERE login='$login' LIMIT 1", $connectReg);
         define('text', "<font color='red'>$login</font> Срок Активации истек, Попробуйте зарегистрироваться заново");
         stranicaOtceta2();
         stranicaOtceta3_1('javascript:history.back(1)');
       }else{
         //Если все проверки прошли нормально, Активируем учетную запись
         $info1_1 = "UPDATE users SET time = '$date' WHERE login='$login' ";
         $info1_2 = "UPDATE usersStatus SET status = '1' WHERE login='$login' ";
           $enter1_1 = mysql_query($info1_1, $connectReg);
           $enter1_2 = mysql_query($info1_2, $connectReg);
         
         //проверяем, добавились ли данные в таблицы  
         $vaevodInfo1_1 = $enter1_1 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $vaevodInfo1_2 = $enter1_2 == true ? 'Данные, успешно Сохранены...' : 'Произошла Ошибка... Данные не были сохранены.';
         $sravnivaem1 = $vaevodInfo1_1 == $vaevodInfo1_2 ? true : false;
         //Если данные проверок равны, выводим результат
         if(! $sravnivaem1){
           mysql_query("DELETE FROM users WHERE login='$login' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersDannaea WHERE login='$login' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersInfo WHERE login='$login' LIMIT 1", $connectReg);
           mysql_query("DELETE FROM usersStatus WHERE login='$login' LIMIT 1", $connectReg);
           define('text', "Произошла Ошибка... Учетная запись не активированна. Попробуйте зарегистрироваться еще раз.");
           stranicaOtceta2('javascript:history.back(1)');
           stranicaOtceta3_1('javascript:history.back(1)');
         }else{
           define('text', "Учетная запись <font color='red'>$login</font> активированна...");
           stranicaOtceta2('/index.php');
           stranicaOtceta3_1('/index.php');
         } //конец if(! $sravnivaem1)
       } //конец if($timeV > 5*24*60*60) 
     } //конец if($statusV == 1) 
   }else{
     define('text', "Произошла ошибка. Пароли не совпадают...");
     stranicaOtceta2('javascript:history.back(1)');
     stranicaOtceta3_1('javascript:history.back(1)');
   } //конец if($key == $passV)
 }else{
     define('text', "<font color='red'>$login</font> Такого пользователя нет!!!");
     proverkaNaOsibki1('javascript:history.back(1)');
 } //конец if(mysql_num_rows($result1) > 0)
} //конец function activationUZ()
 
 
 
@mysql_close($connectReg); //Закрываем соединение с БД
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2011, 21:34
Помогаю со студенческими работами здесь

Не работает регистрация
Попыталась сделать регистрацию на сайте Вот код Но на странице ничего не происходит, данные в таблицу не добавляются. Просто страница...

Регистрация/авторизация
Не могу нормально сделать регистрацию и авторизацию на сайте. Как то все перепуталось, и теперь когда я пытаюсь зарегистрироваться, он не...

регистрация на сайте
нужно сделать регистрацию для сайта с БД. чтобы по нажатии кнопки &quot;регистрация&quot; на главной странице в горизонтальной менюшку, браузер...

регистрация PHP
У меня не получается зарегистрировать пользователя, выдает ошибку Notice: Use of undefined constant submit - assumed 'submit' in...

регистрация и авторизация
Мне нужно сделать элементарную авторизацию без всяких закидонов. я создала файл регистрации где пользователи записываются в таблицу на...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru