Как добавить фильтр ключевых слов для вставки базы данных php jquery? - PullRequest
0 голосов
/ 10 декабря 2010

Я хочу сделать вставку базы данных PHP с помощью jQuery. Как добавить фильтр ключевых слов в коде? Если я напишу все запрещенные слова в файле xml out forbidden.xml Спасибо.

вставить страницу:

<script type="text/javascript" src="../jquery-1.4.2.min.js"></script>
<script>
function send(){
    var toUrl = "Data.php";
    var method = 'GET';
        $.ajax({
        type:"POST",
        url:"Data.php",
        data:{
            name:$("#name").val(),
            sex:$("#sex").val()
        },
        beforeSend:function(){
            $("#display").html("Loading...");
        },
        success:function(data){
            $("#display").html(decodeURI(data));
            document.getElementById("display").innerHTML = "insert success";
        },
        error:function(data){
            document.getElementById("display").innerHTML = "insert error";
        }
    });
}
</script>
<form name="input">
    name: <input type="name" name="name" id="name" />
    sex: <input type="sex" name="sex" id="sex" />
    <input type="button" id="Submit" value="Submit" onclick="send()" />
</form> 
<div id="display"></div>

forbidden.xml

<?xml version="1.0" encoding="utf-8"?>
<dictionary language="EN">
    <string>aaa</string>
    <string>bbb</string>
    ...
</dictionary>

1 Ответ

0 голосов
/ 10 декабря 2010

вы делаете это лучше всего на стороне сервера, когда вы выполняете проверку или санитарию, вы всегда работаете на стороне сервера, чтобы снизить риски.

Во-первых, вы должны понимать, что ваш код должен быть абстрактным, чтобы вам не нужно было писать конкретные сообщения об ошибках в javascript.

Итак, вы хотите отправить всю информацию на сервер, получить ее и вернуть сообщение об успехе / ошибке + с сервера следующим образом:

$.ajax({
        type:"POST",
        url:"Data.php",
        data:{
            name:$("#name").val(),
            sex:$("#sex").val()
        },
        beforeSend:function(){
            $("#display").html("Loading...");
        },
        success:function(data)
        {
            if(data.error)
            {
                //Use data.error to alert the user
            }else
            {
                //Use data.message to alert the user
            }
        },
        error:function(data){
            alert("Server Error");
        }
});

так что ваш javascript в принципе правильный, но вы устанавливаете статическое сообщение с помощью javascript, это не лучшая идея в долгосрочной перспективе.

так что с вашим php вы бы проверили данные как sio:

$name = !empty($_REQUEST['name']) ? $_REQUEST['name'] : false;
$sex = !empty($_REQUEST['sex']) ? $_REQUEST['sex'] : false;
$response = array();
if($name && $sex)
{
    //Load your xml into an array
    foreach($badword as $word)
    {
        if(strstr($name,$word))
        {
            $response["error"] = "Name contains a restricted word (" . $word . ")";
            break 2; //Get out the foreach
        }
    }

    //Validate other items
}

if(!isset($responce["error"]))
{
    $response["success"] = true;
    $response["message"] = "Data has been validated";
}

echo json_encode($response);
exit;
...