none
Проверка ввода данных. RRS feed

  • Вопрос

  • Можно ли сделать проверку введённого текста на наличие слов (например матерных) перед записью в базу данных?

    Если текст чистый идёт запись в базу. Если нет, то выдаёт ошибку.

    5 ноября 2013 г. 19:52

Ответы

  • "Редирект идёт постоянно." - попробуйте так:

    var problem = "";
    var name = Request["name"];
    
    string[] plohieslova = new string[] { "Слово1", "Слово2", "Слово3" };
    
    bool b = false;
    
    if(IsPost)
    {
      foreach(var names in plohieslova)
      {
        if(name.ToLower().Contains(names.ToLower()))
        {
          problem = "Удалите слова паразиты";
          b = true;
          break;
        }
      }
      if(b == false)
      { 
        Response.Redirect("~/Ads/Selling");
      }
    }



    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Континент 20 ноября 2013 г. 5:49
    20 ноября 2013 г. 5:36
    Модератор

  • В учебнике по WebMatrix есть почти тоже самое. Только вместо bool идёт присвоение var.

    Пробовал как в учебнике, выдавало ошибку.

    Спасибо.

    Переделал код немного. И теперь не нужно использовать ни bool b = false; ни b = true; break;

    Да. Даже от последовательности кода многое зависит.


    • Помечено в качестве ответа Континент 2 декабря 2013 г. 17:38
    2 декабря 2013 г. 17:38

Все ответы

  • список матерных слов есть в наличии?
    6 ноября 2013 г. 5:00
  • Можно, вот только нужен словарь. Это может быть например таблица в БД или словарь XML. Попробуйте поискать подобный список в интернете, должн быть. Проверка не составит особого труда.

    Сделаем содержимое сообщества лучше, вместе!

    6 ноября 2013 г. 5:55
    Модератор
  • Список МС можно и самому написать.

    А как проверку сделать то? Какой код?

    Хочу реализовать это на сайте в комментариях.



    6 ноября 2013 г. 7:00
  • Что то подобное:

    public bool CheckComment(string comment)
    {
      string[] dictionary = new string[] { "Слово 1", "Слово 2", "Слово 3" };
      comment = "Комментарий пользователя Слово 1.";
      foreach(var word in dictionary)
        if(comment.Contains(word))
          return true;
      return false;
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Континент 6 ноября 2013 г. 17:22
    • Снята пометка об ответе Континент 6 ноября 2013 г. 19:09
    6 ноября 2013 г. 8:29
    Модератор
  • А по конкретнее и с использованием Validation?
    6 ноября 2013 г. 10:30
  • А что у вас Web Forms или MVC, какой валидатор (клиентский, серверный)?

    Сделаем содержимое сообщества лучше, вместе!

    6 ноября 2013 г. 11:36
    Модератор
  • MVC.

    Валидатор Серверный. А, что разница в коде будет большая? Можно в принципе и на стороне клиента...

    Взял из учебника http://www.asp.net/web-pages/tutorials/working-with-pages/validating-user-input-in-aspnet-web-pages-sites

    И как сюда сделать проверку ввода текста по отдельным словам?


    6 ноября 2013 г. 11:48
  • омг. это всего пару строк jquery можно. все все ВСЕ ВСЕ уже давно есть в интернете

    $(document).profanityFilter({
        replaceWith:'#',
        customSwears: ['ass'],
        externalSwears: '/swearWords.json'
    })

    6 ноября 2013 г. 17:23
  • Вот код. Проверка есть, но переадресации нет. Что не правильно?

    @{
        Page.Title = "Пример проверки";
    
        Validation.RequireField("names", "Введены не те слова");
    
        var name = Request["name"];
    
        string[] plohieslova = new string[] { "Слово1", "Слово2", "Слово3" };
        
        if (IsPost)  {
            foreach (var names in plohieslova)
            {
           if (name.ToLower().Contains(names.ToLower()))
           {
            if (Validation.IsValid()) {
    
                Response.Redirect("~/Ads/Buy");
    
            }
        }
    
            }
        }
        
    }
    
      <form method="post">
        <div>
          <label for="name">Имя: </label>
          <input type="text" name="name" value="@Request["name"]" />
          @Html.ValidationMessage("names")
        </div>
        <div>
          <input type="submit" value="Submit" class="submit" />
        </div>
    
      </form>


    Или Цикл не воспринимает Редирект?
    7 ноября 2013 г. 7:11
  • Так, что решения нет?
    15 ноября 2013 г. 15:58
  • Наберитесь терпения, формат нашего Форума, не всегда предполагает быстрого получения ответа на заданный вопрос.

    Да, я Жук, три пары лапок и фасеточные глаза :))

    15 ноября 2013 г. 16:53
  • Получается нет Редиректа из (Validation.IsValid())

     if (Validation.IsValid()) {
            
    Response.Redirect("~/Ads/Buy");
     
    }
    Почему так?

    18 ноября 2013 г. 19:10
  • Вот код:

    @{
        Page.Title = "Пример проверки";
    
        var problem = "";
        var name = Request["name"];
    
        string[] plohieslova = new string[] { "Слово1", "Слово2", "Слово3" };
        
        if (IsPost)
        {
         foreach(var names in plohieslova)
            {
         if(name.ToLower().Contains(names.ToLower()))
         { problem = "Удалите слова паразиты"; }
         else { Response.Redirect("~/Ads/Selling"); }
     }
        }
    }
    
    <form method="post">
    <div>
    <label for="name">Имя: </label>
    <input type="text" name="name" value="@Request["name"]" />
        @problem
    </div>
    <div>
    <input type="submit" value="Submit" class="submit" />
    </div>
    </form>

    Редирект идёт постоянно.

    Если пишу так:

    if(!name.ToLower().Contains(names.ToLower()))

    То работает наоборот. При словах паразитах идёт редирект. При нормальных словах пишет: Удалите слова паразиты.

    Что, не правильно объясните...

    19 ноября 2013 г. 13:31
  • С этим кодом работает, но надо, что бы если нет слов паразитов в тексте, что бы шла переадресация на нужную страницу. Может кто подскажет как сделать?

    @{
        Page.Title = "Пример проверки";
    
        var problem = "";
        var name = Request["name"];
    
        string[] plohie = new string[] { "Слово1", "Слово2", "Слово3" };
        
        if (IsPost)
        {
         foreach(var names in plohie)
            {
         if(name.ToLower().Contains(names.ToLower()))
         { problem = "Удалите слова паразиты";  }
         
     } 
        }   
    
    }
    
    <form method="post">
    <div>
    <label for="name">Имя: </label>
    <input type="text" name="name" value="@Request["name"]" />
        @problem
    </div>
    <div>
    <input type="submit" value="Submit" class="submit" />
    </div>
    </form>

    19 ноября 2013 г. 18:32
  • Используйте метод Redirect. А в целом лучше это проделать в контроллере, если он у вас есть.

    Сделаем содержимое сообщества лучше, вместе!

    20 ноября 2013 г. 5:29
    Модератор
  • "Редирект идёт постоянно." - попробуйте так:

    var problem = "";
    var name = Request["name"];
    
    string[] plohieslova = new string[] { "Слово1", "Слово2", "Слово3" };
    
    bool b = false;
    
    if(IsPost)
    {
      foreach(var names in plohieslova)
      {
        if(name.ToLower().Contains(names.ToLower()))
        {
          problem = "Удалите слова паразиты";
          b = true;
          break;
        }
      }
      if(b == false)
      { 
        Response.Redirect("~/Ads/Selling");
      }
    }



    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Континент 20 ноября 2013 г. 5:49
    20 ноября 2013 г. 5:36
    Модератор

  • В учебнике по WebMatrix есть почти тоже самое. Только вместо bool идёт присвоение var.

    Пробовал как в учебнике, выдавало ошибку.

    Спасибо.

    20 ноября 2013 г. 5:49

  • В учебнике по WebMatrix есть почти тоже самое. Только вместо bool идёт присвоение var.

    Пробовал как в учебнике, выдавало ошибку.

    Спасибо.

    Переделал код немного. И теперь не нужно использовать ни bool b = false; ни b = true; break;

    Да. Даже от последовательности кода многое зависит.


    • Помечено в качестве ответа Континент 2 декабря 2013 г. 17:38
    2 декабря 2013 г. 17:38