Ejemplo n.º 1
0
 public void registration(HttpProcessor p, string[] route)
 {
     //Здесь мы видим как применяеться проверка данных
     //Способ : p.InputPOST("Password") != "null" & p.InputPOST("Username") != "null"
     //показывает нам как он много занимет места в коде и какой не практичный
     //способ formvalidation.add(p.InputPOST("Password"), "num|required");
     //показывает нам как можно выполнить любую проверку текста просто указывая их
     //здесь мы задали чтобы данные не были пустыми и содержали целочисленный тип
     formvalidation.add("Password", "required|num");
     //здесь мы задали чтобы данные не были пустыми и содержали буквы англ и русс
     //также добавил проверку на уникальность в БД is_unique[users.login] users ->БД login -> поле где проверить,
     //ответ false если в БД уже такое есть.
     formvalidation.add("Username", "required|alpha|is_unique[users.login]");
     //здесь мы запускаем его и узнаем можно продолжать работать или просто пустить клиента на страницу registration
     if (formvalidation.Start(p))
     {
         //старый способ проверки кода просто на существование строк
         if (p.InputPOST("Password") != "null" & p.InputPOST("Username") != "null")
             if (connect.insert_update("INSERT INTO `users` (`login`, `pass`, `rules`) VALUES(@0, @1, '001');", new string[] { p.InputPOST("Username"), p.InputPOST("Password") }))
                 p.redirect("http://localhost:8080/login");
     }
 }
Ejemplo n.º 2
0
        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("Не верно введен пароль!");
               }
               }
        }
Ejemplo n.º 3
0
 public void login(HttpProcessor p, string[] route)
 {
     if (p.InputPOST("Password") != "null" & p.InputPOST("Username") != "null")
         if (connect.select("Select `id_users`, `login`, `rules` from `users` Where `login`='" + p.InputPOST("Username") + "' and `pass`='" + p.InputPOST("Password") + "';"))
            while (connect.MyReader.Read())// Читаем
             {
                 Sessions.add("id_users", connect.MyReader.GetValue(0).ToString());
                 Sessions.add("login", connect.MyReader.GetValue(1).ToString());
                 Sessions.add("rules", connect.MyReader.GetValue(2).ToString());
                 Sessions.add("auth", "1");
                 p.redirect("http://localhost:8080/index");
             }
 }
Ejemplo n.º 4
0
        //функция которая запускает проверку
        public static bool Start(HttpProcessor p)
        {
            //передаем управление классом переменной о
            Type MyClass = typeof(formvalidation);
            object o = Activator.CreateInstance(MyClass);

            foreach (DictionaryEntry s in MasValidation)
            {
                //Узнаем какие правила будут использоваться
                string[] MasMethods = s.Value.ToString().Split('|');

                foreach (string rule in MasMethods)
                {
                    string[] ParseRule = rule.TrimEnd(']').Split('[');
                    //запускаем нужный метод который был выбран для проверки
                    MethodInfo info = typeof(formvalidation).GetMethod(ParseRule[0], BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
                     bool Out;
                  if (ParseRule.Length >1)
                      Out = (bool)info.Invoke(o ,new object[] {p.InputPOST((string)s.Key), ParseRule[1]});
                    else
                      Out = (bool)info.Invoke(o ,new object[] {p.InputPOST((string)s.Key)});

                  if (!Out)
                  {
                      MasValidation.Clear();
                      return false;
                  }
                }
            }
            MasValidation.Clear();
            return true;
        }