10/10/2018, 09:49

Login Ajax có sử dụng cookie

Mình có 1 form login bằng ajax, có thêm checkbox save cookie, giờ vấn đề là không biết làm cách nào để phía server biết được checkbox đó có được check không để tạo cookie.
bachnga viết 11:52 ngày 10/10/2018
Bạn dùng ajax, nhưng bạn có hiểu javascript không? Nếu hiểu, bạn có thể truyền 1 giá trị (=1 chẳng hạn) về script của server. Căn cứ vào giá trị đó mà quyết định set cookie hay không (từ server script).
rainnerz viết 11:52 ngày 10/10/2018
Mình đã làm cách đó nhưng phía server vẫn không thấy được giá trị 1, cám ơn bạn đã trả lời.
Đây là hàm login() của mình

function Login()
{
var username = encodeURI(document.getElementById("txtUsername").v alue);
var password = encodeURI(document.getElementById("txtPass").value );
var chk = document.getElementById("chkRemember");

var url = "check.php";

var data = "";
if(chk.checked == "checked")
data = "txtUsername="+ username +"&txtPass="+ password +"&chkRemember=" + 1;
else
data = "txtUsername="+ username +"&txtPass="+ password +"&chkRemember=" + 0;

var content_Type = "application/x-www-form-urlencoded; charset=UTF-8";

request.onreadystatechange = loginReply;
request.open("POST",url);
request.setRequestHeader("Content-Type",content_Type);
request.send(data);
}
ImMe viết 11:49 ngày 10/10/2018
Bạn có thể tham khảo thêm về clien validation sử dụng jquery

http://cnet.pro/2009/09/vanadium-sim...de-validation/
boygiandi viết 11:58 ngày 10/10/2018
Bạn nên sử dụng alert để kiểm tra giá trị các biến và để biết chương trình bắt đầu chạy sai ý đồ từ đoạn nào .
VD ở đoạn này :

var data = "";
alert(chk.checked);
if(chk.checked == "checked")
data = "txtUsername="+ username +"&txtPass="+ password +"&chkRemember=" + 1;
else
data = "txtUsername="+ username +"&txtPass="+ password +"&chkRemember=" + 0;
alert(data);

Để chắc chắn các biến truyền lên server đúng như bạn muốn
bachnga viết 12:00 ngày 10/10/2018
Bạn test thử theo ví dụ tôi mô phỏng như dưới đây xem sao???
+ file: login.html
PHP Code:
<script language="javascript" type="text/javascript">
var 
request;
function 
Login(){
    
/*tạm thời vô hiệu*/
    /*
    var username = encodeURI(document.getElementById("txtUsername").value);
    var password = encodeURI(document.getElementById("txtPass").value );
    var chk = document.getElementById("chkRemember");
    */
    /*Giả lập vài giá trị*/
    
var username "name";
    var 
password "123";
    var 
chk true//or false
    
var url "check.php";

    var 
data "";
    if(
chk)
        
data "txtUsername="username +"&txtPass="password +"&chkRemember=1";
    else
        
data "txtUsername="username +"&txtPass="password +"&chkRemember=0";

    var 
content_Type "application/x-www-form-urlencoded; charset=UTF-8";
    if (
window.XMLHttpRequest) { // Non-IE browsers
        
request = new XMLHttpRequest();
        
request.onreadystatechange loginReply;
        try {
            
request.open("POST"url);
            
request.setRequestHeader("Content-Type",content_Type);
            
request.send(data); 
        } catch (
e) {
            
alert(e);
        }
        
//req.send(null);
    
} else if (window.ActiveXObject) { // IE
        
req = new ActiveXObject("Microsoft.XMLHTTP");
        if (
req) {
            
request.onreadystatechange loginReply;
            
request.open("POST"url);
            
request.setRequestHeader("Content-Type",content_Type);
            
request.send(data); 
        }
    }
}

function 
loginReply() {
    if (
request.readyState == 4) { // Complete
        
if (request.status == 200) { // OK response
            
alert("COOKIE: " document.cookie);
        }
    }
}

Login();
</script> 
+ file: check.php
PHP Code:
<?php

$username 
= @$_POST***91;'txtUsername'***93;;
$password = @$_POST***91;'txtPass'***93;;
$chk = @$_POST***91;'chkRemember'***93;;
if(
$chk=='1'){
    
setcookie("username",$username,time()+600);
    
setcookie("password",$password,time()+600);
}else{
    
setcookie("username",$username,time()-60);
    
setcookie("password",$password,time()-60);
}

?>
rainnerz viết 11:54 ngày 10/10/2018
Cám ơn các bạn, mình đã làm được
khoanhi viết 11:53 ngày 10/10/2018
Debug nằm chổ nào nhỉ
rainnerz viết 12:01 ngày 10/10/2018
do cái var chk = document.getElementById("chkRemember");, mình lấy là getElementById nên khi cho vào if nó không hiểu dc dk if(chk.checked == "checked"), sửa lại thành if(chk.checked == "true") thì chạy dc
Bài liên quan
0