2010-12-23 3 views
0

내 응용 프로그램 http://www.tyro.in에는 사용자가 검색 할 때 검색 기능이 있습니다.이 쿼리는 최근 검색 영역에 나타납니다. 내 검색 양식은 GET 메소드를 사용합니다. 나는 스패머가 스팸 단어를 검색하고 스팸 단어가 내 사이트에 직접 게시된다고 생각합니다. 내 양식 메서드를 GET에서 POST로 변경하고 싶지 않습니다. 스팸 쿼리를 식별하고 방지하는 방법을 제안하십시오.스팸 검색을 방지하는 방법

미리 감사드립니다.

+1

최근 검색어가 표시되지 않습니까? –

답변

0

이 시도 :

는 사용자의 세션으로도 검색 폼에 숨겨진 입력 필드를 추가합니다. 양식이 게시되면 입력 필드 값을 세션과 일치시킵니다. 스팸 검색에는 세션이 없으므로이 값이 누락됩니다. 그런 다음 GET 후

$hiddenvalue= md5(rand(0,1000)); 

//only fill session if we're not coming from a search action 
if(count($_GET) == 0) { 
    $_SESSION["hidden"]= $hiddenvalue; 
} 


<input type="hidden" name="secret" value="$hiddenvalue"> 

:

if($_GET["secret"] == $_SESSION["hidden"]) { 
    //continue search 
} 
0

당신은 귀하의 콘텐츠에 맞지 않는 검색을 필터링 할 수 있습니다. 이렇게하면 오타 (항상 발생하는 이국 검색)는 "최근 검색"에도 표시되지 않습니다.