2011-08-05 70 views
0

在這個頁面,這個代碼是,有3個細節 國家,性別一種形式,主題xmlHttp2功能(編碼需要VAR PARAMS!)

這樣的想法是將這些細節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

首先,你應該使用POST請求而不是GET,因爲從代碼中可以清楚地看到這個請求應該改變服務器上的狀態。

您的params變量應該以表格編碼。你可以用encodeURIComponent做到這一點,就像這樣:

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

其次,你應該將其插入到你的數據庫之前清空數據。否則,你會暴露自己的SQL注入攻擊。

<

?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)。

+0

嗨湯姆,thnx的答案,但似乎我有另一個問題,因爲你看到最初的代碼沒有var params和發送參數,所以我認爲它影響了代碼部分,其中xmlHttp2.onreadystatechange = stateChanged2; }? – mp89

+0

我不認爲我理解你的新問題。它看起來好像你的請求代碼會通過參數(儘管這些值的來源並不明顯)。我明確地從PHP腳本中的'POST'數據中讀取這些值。所以看起來數據路徑是從客戶端到服務器完成的。您需要做的只是從客戶端獲取這些值 - 通過表單字段,提示,地理位置數據或您計劃獲得的值。這部分很容易。 – Tom

+0

我有一個下拉列表來選擇所有這3個值,併爲他們,國家,性別,主題設置差異名稱,而不像傳統的提交按鈕,我使用此代碼來傳遞值startChat.php和一些系列新的問題是,可能會有任何更改u建議干涉xmlHttp2.onreadystatechange函數,因爲我知道它是一種函數來檢測以前執行的成功行爲,或者如果您可能請再次查看代碼。 。感謝很多 – mp89