2010-12-07 4 views
1

텍스트 영역에 특정 구문이 포함되어 있는지 확인하는 방법을 알아 내려고 노력 중입니다.텍스트 영역에 javascript/php가 포함 된 특정 문구가 포함되어 있는지 확인하는 방법은 무엇입니까?

저는 .indexOf를 사용할 수 있다고 생각합니까?

연락처 양식의 내용을 확인하는 유효성 검사 스크립트가 있습니다. 요즘 나는 스팸 메일을 꽤 많이 받고 있습니다. 나는이 모든 스팸 메시지에 [url = 및 그 텍스트 영역에 그러한 문구가 포함되어 있는지 확인하기 위해 작은 스크립트를 추가 할 수 있다면 메시지를 보내지 않을 것이라고 생각했습니다. 메시지 필드가 [URL을 포함하는 경우 뭔가를 추가 할 수

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

어떤 좋은 방법이 확인 =

I : 현재

나는 텍스트 영역이 비어 있는지 여부를 확인하기 위해 자바 스크립트의이 간단한 조각을 가지고 또한 유사한 PHP 유효성 검사 스크립트가 있습니다 :

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

어떤 아이디어가 나는 메시지가 포함되어 있는지 확인하기 위해 유사한 유효성 검사 스크립트를 어떻게 추가 할 수 있습니까?

도움이 될 것입니다. : O)

답변

3

클라이언트 측에서 텍스트 영역의 내용을 검사하여 스팸을 막을 가능성은 거의 없다. - 스패머가 서버에 직접 올릴 확률이 높다. side script를 사용하므로 필터링을해야합니다. 또한 특정 패턴을 확인하는 것은 패턴이 바뀔 때까지만 작동하며 스크립트를 업데이트해야합니다.
이 문제에 대한 일반적인 해결책은 일회용 양식 토큰을 사용하는 것입니다.
양식을 제공 할 때 임의의 문자 문자열을 생성하고 해당 토큰을 양식의 숨겨진 필드에 넣습니다. 세션이나 데이터베이스의 토큰을 서버에 저장합니다. 양식이 제출되면 저장된 토큰과 제출 된 토큰이 일치합니다. 이렇게하면 양식 자체가 채워져 제출되었고 더 이상 봇으로부터 데이터를받지 못한다는 것을 확신 할 수 있습니다.
보안을 강화하기 위해 각 토큰을 한 번만 사용하도록 허용하여 여러 제출을 막을 수 있습니다.

UPDATE A가 매우 간단하고, 한 페이지의 예를 먼저

<?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

+0

정말 복잡하지는 않습니다. 예를 들어 답을 추가했습니다. – meouw

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

, 그것은이 생각은 message.val '()는'심지어 일반 JS의 함수가 아니다. 반면에, 당신은 완전히 대답해야합니다 ('if (message.val() .....)> 0)'... –

2

체크 아웃 javascript search methodjavascript match method. 나는 그것이 좋아하는 경우에만 관심이 있다면 검색을 선호한다.

var stringToSearch = "stackoverflow"; 

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

그런데 질문이 옳은 일을하지 않았습니다. 나는 당신을 도울 수 없기 때문에 PHP를 모른다.

관련 문제