将JSON中的字符串从Javascript保存到MySQL并将其恢复的安全方法?

时间:2012-09-11 11:38:16

标签: php javascript mysql

我通过PHP脚本将字符串从JS传递到MySQL数据库,如下所示:

JavaScript的:

var text = getElementById('inputBox').value; //"how are you? ()#@&^""''źćż@**$&#@(~(_(@#$)__0"
var rray = {
   type = "someText";
   message : addslashes(text);
}
var json = JSON.stringify(rray);

其中:

function addslashes(str) {
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\0/g,'\\0');
    return str;
}

我发送json到PHP:

var result = get_content("http://url.com/script.php?action=" + encodeURIComponent(json) );

将json保存到MySQL数据库(PHP):

$data = mysql_escape_string($_REQUEST['data']);
$query = "INSERT INTO datas (data) VALUE ('$data')";
execute($query);

接下来我从数据库中取回它:

$data = "SELECT DATA from datas WHERE ID = 1";
(...) getting from database
echo $row['DATA'];

我从PHP获得Javascript:

var result = get_content("http://url.com/script.php?get=y"); 
var data = jeval(result);
var action_data = jeval(stripslashes(data.action));
var message = stripslashes(action_data.message);

其中:

function stripslashes(str) {
str=str.replace(/\\'/g,'\'');
str=str.replace(/\\"/g,'"');
str=str.replace(/\\0/g,'\0');
str=str.replace(/\\\\/g,'\\');
return str;
}

function jeval(str)
{
    lastEvalString = str;
    return eval('(' +  str + ')');
}

并显示它:

getElementById('inputBox').value = message;

大多数普通文本都会传递到数据库并成功返回。 但是当我使用标志(和)或其他特殊字符时,我会遇到奇怪的错误:

   unexpected token: )
   illegal token
   script error

你能看一下代码并帮我找到我做错的事吗? 我找不到它了... THX。

0 个答案:

没有答案