2017-03-29 4 views
0

フィルタリングのために追加のデータ/パラメータを安全に$ .ajax経由で送信する方法はありますか?

戻るjsonの追加フィルタリングのために、$ .ajaxを介して追加のデータ/パラメータを送信しようとしています。

のjavascript:

$.ajax({ 
    url: "/source.php", 
    dataType: "json", 
    data: { 
    term: request.term 
    }, 

コンソール:

GET .../source.php?term=valueA1 

PHP:追加するとき

$term = trim(strip_tags($_GET['term'])); 
$term = preg_replace('/\s+/', ' ', $term); 

$a_json = array(); 
$a_json_row = array(); 

$a_json_invalid = array(array("id" => "#", "value" => $term, "label" => "Only letters and digits are permitted...")); 
$json_invalid = json_encode($a_json_invalid); 

if(preg_match("/[^\040\pL\pN_-]/u", $term)) { 
    print $json_invalid; 
    exit; 
} 

if ($data = $mysqli->query("SELECT * FROM accounts WHERE name LIKE '%$term%' OR code LIKE '%$term%'")) { 
while($row = mysqli_fetch_array($data)) { 
    ... 
} 
} 

は今、送信/単一用語を送信するときに、私のセットアップは次のようになります追加データ/パラメータ(使用可能な場合)は、次のようになります。

その上

$('#input-newsearch-2').val() = 
$('#input-newsearch-2').val() = valueA1 
$('#input-newsearch-2').val() = valueA1,valueA2 
$('#input-newsearch-2').val() = valueA1,valueA2,valueA3 

...と:$( '#入力-newsearch-2')の

$.ajax({ 
    url: "/source.php", 
    dataType: "json", 
    data: { 
    term: request.term, 
    tags: $('#input-newsearch-2').val() 
    }, 

.valは()することができます。

コンソール:

GET source.php?term=valueA1&tags= 
GET source.php?term=valueA2&tags=valueA1 
GET source.php?term=valueA3&tags=valueA1%2CvalueA2 
GET source.php?term=valueA4&tags=valueA1%2CvalueA2%2CvalueA3 

が、それはこのようなカンマ区切りのアレイを送信するために、どのようにPHPが追加のフィルタ(AND WHERE)用のタグを使用するようになっているはずですが可能ですか?

編集:可能な配列を2番目のパラメータとして送信しているため、これは参照されている回答の代理ではありません。また、それはPHPとそれをクエリでそれを使用する方法を取得するために鍬に答えることはありません

答えて

0

あなたはそれが本当に安全であるようにするには、ペイロードの代わりにURLまたはクエリ文字列。 Send JSON data with jQuery

+0

このリンクは質問に答えるかもしれないが、ここでは答えの重要な部分が含まれており、参考のためにリンクを提供した方がよい:

は、この関連の質問を参照してください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 –

+1

可能な配列を2番目のパラメータとして送信しているので、私のケースに適した例を提供できますか?また、あなたは私がPHPでそれをフェッチする必要があり、クエリでそれを使用することができます答えていません –

+0

申し訳ありませんが、私はPHPで働いたことはありませんが、パラメータの代わりにデータのペイロードにアクセスする必要があります。 –

関連する問題