public void auth(HttpProcessor p, string[] route) { p.HTML.Body.Add("title", "Авторизация"); //Удаляем все пароли которые были созданы больше 5 минут назад и не были активированы connect.insert_update("DELETE FROM `secret_num` WHERE TIMEDIFF(now(), `date`) > TIME(@0);", new string[] { "00:05:00" }); //проверяем человек авторизировался через Социальные сети или нет if (p.InputPOST("token") != "null") { //С помощью токена вырываем данные с сайта для получения всей информации о человеке Hashtable Temp = new Hashtable(); System.Net.WebRequest req = System.Net.WebRequest.Create("https://ulogin.ru/token.php" + "?" + "token=" + p.InputPOST("token") + "&host=localhost"); System.Net.WebResponse resp = req.GetResponse(); System.IO.Stream stream = resp.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(stream); string Out = sr.ReadToEnd(); sr.Close(); Out = Out.Trim(new char [] {'{', '}'}); string[] TempStr = Out.Split(','); foreach (string s in TempStr) { string[] TempStr2 = s.Split(new string[] { Convert.ToChar(34) + ":" + Convert.ToChar(34) },StringSplitOptions.None); Temp.Add(TempStr2[0].Trim('"'), System.Text.RegularExpressions.Regex.Unescape(TempStr2[1].Trim('"'))); } //Проверяем существует ли такой логин(идентификатор) в БД if (formvalidation.is_unique(Temp["identity"].ToString(), "users.login")) //добавляем данныем в БД connect.insert_update("INSERT INTO `users` (`login`, `e-mail`, `fio`, `name_s_net`, `rules`) VALUES(@0, @1, @2, @3, '001');", new string[] { Temp["identity"].ToString(), Temp["email"].ToString(), Temp["first_name"].ToString() + Temp["last_name"].ToString(), Temp["network"].ToString() }); } //Если в форме был введен телефон, то... else if (p.InputPOST("Phone") != "null") { //Создаем пароль который будет передан в смс string SecretPass = Simbol(5); //добавляем в проверку номер телефона (не должен быть пустым, должен состоять из цифр, и должен быть в Бд уникальным) formvalidation.add("Phone", "required|num|is_unique[users.phone]"); //Запускаем проверку if (formvalidation.Start(p)) //Вставляем в таблицу нового юзера connect.insert_update("INSERT INTO `users` (`phone`, `rules`) VALUES(@0, '001');", new string[] { p.InputPOST("Phone") }); //Проверяем на существование и сразу ищем ИД пользователя которого добавили if (connect.select("Select `id_users` from `users` Where `phone`='" + p.InputPOST("Phone") + "' LIMIT 1;")) { //читаем перву строку данных полученную из бд connect.MyReader.Read(); //вставляем в таблицу secret_num пароль и ид пользователя //который будет использоваться при вводе для проверки connect.insert_update("INSERT INTO `secret_num` (`id_users`, `num`, `date`) VALUES(@0, @1, now());", new string[] { connect.MyReader.GetValue(0).ToString(), SecretPass }); //отправка смс SendSMS.Send(SecretPass, "+7" + p.InputPOST("Phone"), "COM10"); } else { //выдаем сообщение Пользователю Ошибка p.MSG("Ошибочка"); } } //проверка на ввод пароля для доступа в интернет пользователем else if (p.InputPOST("Password") != "null") { //Проверка пароля, он должен должен быть не пустым и не уникальным(существовать) в БД formvalidation.add("Password", "required|is_not_unique[secret_num.num]"); //Запуск проверки if (formvalidation.Start(p)) { //Если все успешно удаляем пароль connect.insert_update("DELETE FROM `secret_num` WHERE `num` = @0;", new string[] { p.InputPOST("Password") }); //и выдает сообщение пользователю p.MSG("Все круто"); } else { p.MSG("Не верно введен пароль!"); } } }