2010-12-07 1 views
1

Я пытаюсь выяснить, как проверить текстовую область, чтобы увидеть, содержит ли она определенную фразу.Как проверить, содержит ли текстовая область «содержит» определенную фразу с javascript/php?

Я считаю, что мог бы использовать .indexOf?

У меня есть скрипт проверки, чтобы проверить содержимое контактной формы. В последнее время я получаю справедливую часть спама. Я заметил, что все эти спам-сообщения содержат фразу [url =, и я подумал, могу ли я добавить небольшой скрипт, чтобы проверить, содержит ли текстовая область такую ​​фразу, и, если это так, прекратить отправку сообщения.

В настоящее время у меня есть этот простой фрагмент кода JavaScript, чтобы проверить, является ли пустым текстовое поле:

if (message.val()=='') { 
     message.addClass('highlight'); 
     message.focus(); 
     return false; 
    } else message.removeClass('highlight'); 

Любые хорошие способы, чтобы добавить что-то, чтобы проверить, если поле сообщение содержит [URL =

I также есть подобный сценарий проверки PHP:

if (!$message) $errors[count($errors)] = 'Please click back and enter your message.'; 

Любые идеи, как я мог бы добавить подобный сценарий проверки, чтобы проверить, если сообщение содержит [URL = в PHP тоже?

Любая помощь была бы принята с благодарностью! : О)

ответ

3

Вряд ли вы остановите спам, проверив содержимое вашего текстового поля на стороне клиента: - спамер, скорее всего, отправляет прямо на ваш сервер так что вам нужно будет сделать свою фильтрацию. Кроме того, проверка определенного шаблона будет работать только до тех пор, пока шаблон не изменится, и вам придется обновить свой скрипт.
Общим решением этой проблемы является использование одноразового маркера.
Когда вы подаете форму, вы создаете случайную строку символов и помещаете этот токен в скрытое поле в форме. Вы также сохраняете токен на сервере в сеансе или в базе данных. Когда форма отправлена, вы соответствуете сохраненным и поданным маркерам. Таким образом, вы можете быть уверены, что сама форма была заполнена и отправлена ​​и что вы не получаете данные от бота.
Для дополнительной защиты вы можете разрешить использовать каждый токен только один раз, защищая от нескольких представлений.

UPDATE очень простая, одна страница пример

<?php 
session_start(); 

/** 
* Process the form if we have a token that we recognise 
* otherwise just present the form again, you probably want to handle this a bit better 
*/ 
if(isset($_POST['token']) && isset($_SESSION['token']) 
    && $_POST['token'] === $_SESSION['token']) { 

    // no more submissions using this token 
    unset($_SESSION['token']); 

    $name = clean($_POST['name']); 
    $comment = clean($_POST['comment']); 

    // process the input and redirect to a confirmation 
    // just echoing data for example 
    echo "$name said $comment"; 
    die(); 
} else { 
    $token = uniqid(); 
    $_SESSION['token'] = $token; 
} 

/** 
* Stub function that cleans user input 
* @param String $str 
*/ 
function clean($str) { 
    return $str; 
} 
?> 
<html> 
    <head> 
    <title>Form token example</title> 
    </head> 
    <body> 
     <form method="post"> 
      <label> 
       Name<br/> 
       <input type="text" name="name"/> 
      </label> 
      <br/> 
      <label> 
       Comment<br/> 
       <textarea name="comment"></textarea> 
      </label> 
      <br/> 
      <label> 
       <input type="submit"/> 
      </label> 
      <br/> 
      <br/> 
      The token field would normally be hidden, it's displayed here so that the user can change it for testing<br/> 
      <input type="text" name="token" value="<?php echo $token ?>"/><br/> 
     </form> 
    </body> 
</html> 
+0

Звучит немного сложно, но, вероятно, хорошая идея. Как насчет того, если я добавлю похожий скрипт в php-файл на стороне сервера, возможно, это поможет уменьшить этот тип спам-сообщения? – ade123 2010-12-07 10:32:05

-1
message.val().match('your phrase here') 
+0

На первом, как думают, `message.val()` даже не обычная функция JS. С другой стороны, вы должны были ответить полностью (например, `if (message.val() .....)> 0)` ... – 2014-10-03 06:11:22

2

ЗАКАНЧИВАТЬ javascript search method и javascript match method. Я предпочитаю поиск, потому что если вам все равно, если он существует, вы делаете что-то вроде этого.

var stringToSearch = "stackoverflow"; 

if (stringToSearch.search("over") >= 0){ 
    //exists 
} 

Кстати, ваш вопрос не сделал что-то правильно. Я не знаю php, поэтому я не могу вам помочь

 Смежные вопросы

  • Нет связанных вопросов^_^