2010-02-25 5 views
-1

J'ai deux scripts - javascript et php ..mauvais mot filtre, comment combiner avec l'URL Remplacer

ce nettoie l'url

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.search-form').submit(function() { 
     window.location.href = "/file_"+ $('.search-form input:text').val() + ".html"; 
    return false; 
    }); 
}); 
</script> 

c'est le mauvais mot filtre

<?php 
    if (isset($_GET['search'])) 
    { 
    $search=$_GET['search']; 

    if(is_array($badwords) && sizeof($badwords) >0) 
    { 
    foreach($badwords as $theword) 
    $search = ereg_replace($theword,"haha",$search); 
    } 
    $search=preg_replace("/\s+/"," ",$search); 

    $keyword = str_replace(" ", "+", $search); 
    } 

    else 
    { 
    $keyword = str_replace(" ", "+a", $keyword); 
    } 
    ?> 

comment puis-je combiner ces deux scripts et remplacer le mauvais mot dans l'URL avec "haha"?

+4

juste un mot d'avertissement: mauvais filtres linguistiques sont généralement une mauvaise idée car ils valides trop souvent corrompus Les utilisateurs et ceux qui essaient de les contourner peuvent simplement parler à 1337 et utiliser des caractères spéciaux pour faire passer le message. Juste deux exemples: assignment et ashita.org, puisqu'ils contiennent tous les deux des mots fréquemment marqués, vous obtiendrez quelque chose comme hahaignment et ahahaa.org. –

+0

Attendez que quelqu'un pose des questions sur Pen Island: O –

Répondre

1

Vous pouvez rediriger dans le PHP

D'abord, la forme:

<form action="somefile.php"> 
<input type="text" id="search" name="search" value="" placeholder="Enter here..." /> 
<button>Search</button> 
</form> 

Deuxième:

// somefile.php 
    if (isset($_GET['search'])){ 
    $search=$_GET['search']; 
    if(count($badwords)){ 
    foreach($badwords as $theword) 
     $search = ereg_replace($theword,"haha",$search); 
    } 
    $search=preg_replace("/\s+/"," ",$search); 
    $keyword = str_replace(" ", "+", $search); 
    } else { 
    $keyword = str_replace(" ", "+a", $keyword); 
    } 
    // here you can do any checks with the search and redirect to anywhere 
    if (strlen($keyword)){ 
    header("location: /file_{$keyword}.html"); 
    } 

Vous pouvez aussi utiliser ajax pour vérifier et nettoyer le mot-clé:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.search-form').submit(function() { 
    $.ajax({ type: "POST", dataType: "HTML", 
      url: "clean.php", 
      data: { search: $('.search-form input:text').val()}, 
      success: function(response){ 
       if (response.length > 0) { 
       window.location.href = "/" + response; 
       } 
      } 
    }); 
</script> 

Clean.php:

if (isset($_GET['search'])){ 
    $search=$_GET['search']; 
    if(count($badwords)){ 
    foreach($badwords as $theword) 
     $search = ereg_replace($theword,"haha",$search); 
    } 
    $search=preg_replace("/\s+/"," ",$search); 
    $keyword = str_replace(" ", "+", $search); 
    } else { 
    $keyword = str_replace(" ", "+a", $keyword); 
    } 
    // here you can do any checks with the search and redirect to anywhere 
    if (strlen($keyword)){ 
    echo("file_{$keyword}.html"); 
    } ?> 

Vous pouvez chercher plus d'informations sur ajax/post/get (jQuery) dans:

http://api.jquery.com/jquery.ajax/ 
http://api.jquery.com/jquery.post/ 
http://api.jquery.com/jquery.get/ 
Questions connexes