· 8 years ago · Apr 01, 2018, 07:36 PM
1<?php
2if (isset($_POST['fullname']) && isset($_POST['email']) && isset($_POST['password'])) {
3 $login = $_POST["fullname"];
4 $mail = $_POST["email"];
5 $pass = $_POST["password"];
6} else {
7 echo 'Куда ты лезешь, она Ñ‚ÐµÐ±Ñ Ñожрет!';
8 return;
9}
10
11header('Content-Type: application/json');
12
13// Проверка на пуÑтоту логина
14if (!isset($login) || $login === "") {
15 $data = array('message' => 'Ðе введен логин!');
16 echo json_encode($data);
17 return;
18}
19
20// Проверка на длину логина
21if (strlen($login) < 4) {
22 $data = array('message' => 'Логин не может быть короче 4Ñ… Ñимволов!');
23 echo json_encode($data);
24 return;
25}
26
27// Проверка на пуÑтоту почты
28if (!isset($mail) || $mail === "") {
29 $data = array('message' => 'Ðе введен Ð°Ð´Ñ€ÐµÑ Ð¿Ð¾Ñ‡Ñ‚Ñ‹!');
30 echo json_encode($data);
31 return;
32}
33
34// Проверка на валидноÑть почты
35// if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {
36// $data = array('message' => 'ÐÐ´Ñ€ÐµÑ Ð¿Ð¾Ñ‡Ñ‚Ñ‹ введен неверно!');
37// echo json_encode($data);
38// return;
39// }
40
41if (preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i', $mail)) {
42 $whitelist = array(
43 'gmail.com',
44 'yahoo.com'
45 );
46
47 $parts = explode('@', $mail);
48
49 if (!in_array($parts[1], $whitelist)) {
50 $data = array('message' => 'РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð° только Ñ gmail.com и yahoo.com!');
51 echo json_encode($data);
52 return;
53 }
54} else {
55 $data = array('message' => 'ÐÐ´Ñ€ÐµÑ Ð¿Ð¾Ñ‡Ñ‚Ñ‹ введен неверно!');
56 echo json_encode($data);
57 return;
58}
59
60// Проверка на пуÑтоту паролÑ
61if (!isset($pass) || $pass === "") {
62 $data = array('message' => 'Ðе введен пароль!');
63 echo json_encode($data);
64 return;
65}
66
67// Прочие проверки на ÑекурноÑть паролÑ
68if (strlen($pass) < 6) {
69 $data = array('message' => 'Пароль не может быть короче 6 Ñимволов!');
70 echo json_encode($data);
71 return;
72}
73
74if (!preg_match("#[0-9]+#", $pass)) {
75 $data = array('message' => 'Пароль должен Ñодержать не менее одной цифры!');
76 echo json_encode($data);
77 return;
78}
79
80if (!preg_match("#[a-zA-Z]+#", $pass)) {
81 $data = array('message' => 'Пароль должен Ñодержать не менее одной буквы!');
82 echo json_encode($data);
83 return;
84}
85if (!preg_match("/^[a-zA-Z0-9_-]+$/", $login)) {
86 $data = array('message' => 'Логин может Ñодержать только латинÑкие Ñимволы и Ñимвол _');
87 echo json_encode($data);
88 return;
89}
90if (!preg_match("#[a-zA-Z]+#", $login)) {
91 $data = array('message' => 'Логин должен Ñодержать не менее одной буквы!');
92 echo json_encode($data);
93 return;
94}
95
96// Логика
97$communityUrl = 'https://forum.fwld.ru/';
98$apiKey = '1117a3f1523a99d32738f8bd97a785c7';
99
100$curl = curl_init( $communityUrl . 'api/core/members' );
101curl_setopt_array( $curl, array(
102 CURLOPT_RETURNTRANSFER => TRUE,
103 CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
104 CURLOPT_USERPWD => "{$apiKey}:",
105 CURLOPT_POSTFIELDS => "name={$login}&email={$mail}&password={$pass}"
106) );
107
108$response = curl_exec( $curl );
109$response = json_decode($response);
110
111if ($response->errorMessage) {
112 if ($response->errorMessage === 'USERNAME_EXISTS') {
113 $data = array('message' => 'Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ логином уже ÑущеÑтвует!');
114 echo json_encode($data);
115 return;
116 }
117
118 if ($response->errorMessage === 'EMAIL_EXISTS') {
119 $data = array('message' => 'Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email уже ÑущеÑтвует!');
120 echo json_encode($data);
121 return;
122 }
123
124 $data = array('message' => 'Что-то пошло не так! Рименно: ' . $response->errorMessage);
125 echo json_encode($data);
126 return;
127
128} else {
129 $key = '1117a3f1523a99d32738f8bd97a785c7';
130 $delimiter = ':';
131 $algo = 'sha512';
132 $url = 'https://shop.fwld.ru/api/signup?';
133
134 $str = sprintf('%s%s%s%s%s%s%s%s%s%s%s%s%s', $key, $delimiter, $login, $delimiter, $mail, $delimiter, $pass, $delimiter, 0, $delimiter, 0, $delimiter, 0);
135 $hash = hash($algo, $str);
136 $paramsStr = http_build_query([
137 'username' => $login,
138 'email' => $mail,
139 'password' => $pass,
140 'balance' => 0,
141 'force_activate' => 0,
142 'admin' => 0,
143 'hash' => $hash
144 ]);
145
146 $link = $url . $paramsStr;
147
148 if( $curl = curl_init() ) {
149 curl_setopt($curl, CURLOPT_URL, $link);
150 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
151 $out = curl_exec($curl);
152 // echo $out;
153 // Тут можно раÑпарÑить и вывеÑти вероÑтные ошибки от региÑтрации в магазине
154 // но api уебанÑкий - долго разбиратьÑÑ
155 curl_close($curl);
156 }
157}
158// Логика
159
160
161
162// Завершение
163$data = array('complete' => 'СпаÑибо за региÑтрацию! Ðа ваш e-mail должно прийти пиÑьмо Ñо ÑÑылкой Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ€ÐµÐ³Ð¸Ñтрации. ЕÑли его там нет, проверьте папку Спам.');
164echo json_encode($data);
165return;
166?>