0

ajax.phpのデータをサニタイズするのに問題があります。これが私のjs.jsのコードです:

$('.vote_pagelink').click(function() {
var aid = this.id;

$.ajax({
       type: "POST",
       url: 'http://localhost/lr/ajax.php',
       data: "voteid=" + aid + "&tid=" + config.topic_id,  
             success: function(data){
             var test= data;
             alert( "Data Saved: " + test);
          },
                      error: function(data){
              alert( "error: ");
       }               
     });
return false;
});

と私のajax.php:

$post = $_POST;
if ( ctype_digit(json_encode($post['tid']))) {                              
echo json_encode($post['tid']);
}

なぜこれが機能しないのですか?「隠された」データはありますか?if-conditionを削除すると、番号だけが警告されます。

4

2 に答える 2

2

「json_encode」を削除してから試してください-

エンコード後は数値ではないため、false が返されます。

$post = $_POST;
if ( ctype_digit($post['tid'])) {
echo json_encode($post['tid']);
}
于 2013-01-10T16:17:08.243 に答える
0

ctype_digit関数は、文字列内のすべての 文字が数値かどうかをチェックします。値をjson_encode すると、値の json 表現が返されます。例えば:

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
//produces the output
 {"a":1,"b":2,"c":3,"d":4,"e":5}

したがって、json_encoded 表現で ctype_digit を実際に使用することはできません。むしろ、コードは次の形式にする必要があります。

ctype_digit($post['tid'])
于 2013-01-10T16:39:47.107 に答える