2009-04-29 84 views
0

iam使用簡單的插入腳本函數將值從註冊html頁面傳遞到註冊php頁面。 這裏是我的腳本:使用javascript/ajax將密碼值傳遞給php頁面

function insert() { 
// Optional: Show a waiting message in the layer with ID login_response 
document.getElementById('insert_response').innerHTML = "Just a second..." 
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues about character encoding. 
var dispname= encodeURI(document.getElementById('disp_name').value); 
var firstname= (document.getElementById('first_name').value); 
var lastname= (document.getElementById('last_name').value); 
var gender= (document.getElementById('genderreg').value); 
var day= (document.getElementById('day').value); 
var month= (document.getElementById('month').value); 
var year= (document.getElementById('year').value); 
var country= (document.getElementById('countryreg').value); 
var city= (document.getElementById('cityreg').value); 
var suburb= (document.getElementById('suburbreg').value); 
var email= (document.getElementById('emailreg').value); 
var password= (document.getElementById('regpassword').value); 
var code= (document.getElementById('code').value); 
var service= (document.getElementById('termservice').value); 

// Set te random number to add to URL request 
nocache = Math.random(); 
// Pass the login variables like URL variable 
http.open('get', 'register_insert.php?site_url='+dispname+'&fname= '+firstname+'&lname= '+lastname+'&gender= '+gender 
      +'&day= '+day+'&month= '+month+'&year= '+year+'&country= '+country+'&city= '+city+'&suburb= '+suburb 
      +'&email= '+email+'&password= '+password+'&code= '+code+'&service= '+service+'&nocache= '+nocache); 
http.onreadystatechange = insertReply; 
http.send(null); 
} 

我只是有一個小問題,那就是它與HTML通過這樣的密碼值到PHP頁面的一個很好的實踐。如果這不是個好主意,那麼最好的原因是什麼。

在此先感謝您的幫助。

回答

4

是的,通常我不會立即建議有人去一個JavaScript庫,但我爲AJAX做一個例外。讓這種事情能夠跨瀏覽器工作就顯得不值得。去尋找jQuery併爲自己節省一大堆壓力。

另請參考jQuery Form Plugin - 它將以非常簡單的方式爲您完成所有這些工作。該網站是在http://malsup.com/jquery/form/

但要回答你的問題,我會使用POST數據。一般的經驗法則是,如果您正在檢索某些內容,請使用GET,但如果您要發送或更改內容,請使用POST。

另一種快速的指針,該代碼可以做了很多更清晰的做這樣的事情:

var fields = {'disp_name', 'first_name', 'last_name', 'genderreg' /* etc ... */ ]; 
var values = {}; 
for (var i = 0, l = fields.length; i < l; ++i) { 
    values[fields[i]] = document.getElementById(fields[i]).value; 
} 

http.open(
    'get', 
    'register_insert.php' 
    + '?site_url=' + values.dispname 
    + '&fname=' + values.first_name 
    + '&lname=' + values.last_name /* etc */ 
); 

...但它不是真的那麼重要,我想。

3

以這種方式發送密碼與通過GET提交的常規提交沒有區別。但是,通常情況下,您會使用POST。使用get的缺點是密碼將顯示在URL中。如果你關心安全性,你應該使用SSL。

考慮使用像jQuery這樣的JS庫......它會讓你在上面做的事情非常容易。

+4

請注意,不管您是否使用SSL,都不要在您的URL/GET中傳遞密碼,然後記錄密碼,這會造成另一種盜竊可能性。 – cgp 2009-04-29 01:07:30