xmlHttp2函数(需要var params编码!)

时间:2011-08-05 19:20:22

标签: javascript

在此代码所在的页面中,有一个包含3个详细信息的表单 国,性别,主题

所以我的想法是将这3个细节发送到startChat.php,以便php可以提取3个细节。

代码如下

function startChat()
            {
            xmlHttp2 = GetXmlHttpObject();

            if (xmlHttp2 == null)
                {
                alert("Browser does not support HTTP Request");
                return;
                }

            var url = "startChat.php";
            var params = "country,gender,topic";<<<<<<<<<<<<<<<<<<<<<<<what coding this should be?????
            xmlHttp2.open("GET", url, true);
            xmlHttp2.send(params);<<<<<<<<is this correct?????
            xmlHttp2.onreadystatechange = stateChanged2;               
            }

我还需要有关startChat.php部分的帮助

    <?php

include('config.inc.php');
$preference="$_GET[params]";<<<<<<<<<<<<<<<<<<<<<<<<<<<<what coding this should be????????????????????????????????????

include('database.inc.php');
mysql_query("INSERT INTO users (inchat,preference) values('N','$preference')");

echo mysql_insert_id();

mysql_close($con);

?>

请帮助,真诚地问:(

1 个答案:

答案 0 :(得分:1)

首先,您应该使用POST请求而不是GET,因为从您的代码中可以清楚地看到此请求应该更改服务器上的状态。

您的params变量应采用表单编码。您可以使用encodeURIComponent执行此操作,如下所示:

var params = 'country=' + encodeURIComponent(userCountry) +
             '&gender=' + encodeURIComponent(userGender) +
             '&topic=' + encodeURIComponent(userTopic);

其次,在将数据插入数据库之前,您应该清理数据。否则你会暴露自己的SQL注入攻击。

&LT;

?php

include('config.inc.php');

// need to create db connection before mysql_real_escape_string is called
include('database.inc.php');

$country = mysql_real_escape_string($_POST['country'], $con);
$gender = mysql_real_escape_string($_POST['gender'], $con);
$topic = mysql_real_escape_string($_POST['topic'], $con);

mysql_query("
    INSERT INTO users(inchat, country, gender, topic)
    VALUES('N','$country', '$gender', '$topic')
");

echo mysql_insert_id();

mysql_close($con);

?>

请注意,我还更改了数据库结构。一般来说,最好避免将多个数据放入一个字段(DB normalization)。