|
|
|
ค่า password ที่รับจาก Textbox มีค่าตรงกันกับที่อยู่ในฐานข้อมูล แต่ก็ยังล็อกอินไม่ได้ |
|
|
|
|
|
|
|
ลอง Debug ดูครับ ว่าค่าที่ ส่งไปได้ encode ด้วย md5 จริงหรือไม่
แล้วข้อมูลใน DB ตรงกันไหม มีขนาด 32 ตัวอักษรเท่ากันไหม ลองดูก่อนครับ
|
|
|
|
|
Date :
2012-06-17 15:29:34 |
By :
kamuro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่ได้ใช้ MD5 ครับ ถ้าลองดูจากโค้ดผมได้ Comment ครับ แต่จริงๆแล้วผมไม่ได้ใช่ครับ
|
|
|
|
|
Date :
2012-06-17 15:35:03 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองเอา password ของคนที่ล็อกอินไม่ได้ ไปเปลี่ยนให้กับ user ที่สามารถล้อกอินได้
ผลปรากฎว่า ระบบก็ alert บอกว่ารหัสผ่านไม่ถูกต้องอ่ะครับ ผมจึงมองว่าปัญหามันอยู่ตรง
password นีแหละครับ
|
|
|
|
|
Date :
2012-06-17 15:48:53 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งันลองเปลี่ยนการรับค่าจาก GET เป็น POST หรือ REQUEST ดูครับว่าได้ไหม
|
|
|
|
|
Date :
2012-06-17 17:06:39 |
By :
kamuro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอรู้ที่มาแล้วครับ ยกตัวอย่าง password ที่เข้าระบบไม่ได้นะครับ
ahk'k,pk,c]' จะเห็นว่า password มีเครื่องหมาย single qoute อ่ะครับ
ผมลอง echo ออกมา ดู ได้ค่าแบบนี้ครับ ahk\'k,pk,c]\' คือจะมีค่า
back slash ติดมาด้วย ตอนนี้ก็กะลังหาวิธีที่จะ echo ให้ได้ตามค่าที่ส่งมาอยู่ครับ
ได้ผลอย่างไรเดี๋ยวมารายงานนะครับ
|
|
|
|
|
Date :
2012-06-17 17:20:57 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองรับค่ามา แล้ว echo ดู ahk\'k,pk,c]\' สัญลักษณ์ back slash ก็ยังติดมาอยู่ดีครับ
พลิกแพลงหลายรูปแบบแล้วครับ ต้อง echo อย่างไรเพื่อที่จะให้ได้ค่า single qoute ที่ถูกส่งมาแบบ
GET ครับ
|
|
|
|
|
Date :
2012-06-17 17:34:18 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งันคงต้อง encode มาก่อนครับแล้วค่อย decode จากนั้นค่อยไป compare กับ database ครับ
ตัวอย่าง
Code (PHP)
<?
$a = "ทดสอบอักขระ";
echo urlencode($a).'<br>'.urldecode($a);
?>
ลองดูครับ
|
|
|
|
|
Date :
2012-06-17 21:15:53 |
By :
kamuro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเช็คไปเช็คมามันผิดตั้งแต่ฝั่ง javascript อ่ะครับ
ลองดูโค้ดก่อนละกันนะครับ ในที่นี้ผมใช้ jquery และส่งข้อมูลแบบ GET ครับ
$("#login_submit").click(function(){
var username = $("#username").val();
var password = $("#password").val();
if((username != "") && (password == "")){
alert("กรุณากรอกรหัสผ่าน");
$("#password").focus();
}
if((username == "") && (password != "")){
alert("กรุณากรอกรหัสนักศึกษา");
$("#username").focus();
}
if((username != "") && (password != "")){
$.get("module/login.php?"+refStr(),
{ user:username, pass:password},
function(data){
if(data == "OK"){
alert("คุณได้ล็อกอินเข้าสู่ระบบเรียบร้อยแล้ว");
window.location.href = "index.php";
}else{
alert(data);
}
}
);
}
});
มันผิดตรงนี้ครับ
Code
$.get("module/login.php?"+refStr(),
{ user:username, pass:password},
จะเห็นว่าผมได้ส่งค่าแบบ GET ไปที่ module/login.php
โดยฝากค่าของตัวแปล username ไปกับ user ซึ่งก็คือตรงนี้ครับ user:username
และฝากค่าของตัวแปล password ไปกับ pass ซึ่งก็คือตรงนี้ครับ pass:password
ตรง pass ที่ฝากไปนี่แหละครับที่มันผิด คือมันจะรับค่ามาจากตัวแปล password อีกที
ถ้าค่าในตัวแปล password เป็นแบบปกติ เช่น 085a021b ก็เท่ากับว่า
ตัวแปล pass ได้รับค่า pass:085a021b แล้วส่งไปยัง module/login.php
แต่ถ้าค่าในตัวแปล password มีค่าเท่ากับ ahk'k,pk,c]' ซึ่งในค่าที่รับมานั้นมีสัญลักษณ์
single qoute ด้วย พอมาอยู่ในรูปที่จะส่งข้อมูลไปซึ่งก็คือรูปนี้ pass:ahk'k,pk,c]'
javascript กลับมองว่า single qoute เป็นสัญลักษณ์เฉพาะที่ใช้เขียนครอบข้อมูลแบบ
string ผมจะต้องทำเช่นไรจึงจะสามารถส่งค่าที่มีสัญลักษณ์ single qoute ไปได้ครับ
|
|
|
|
|
Date :
2012-06-17 23:00:08 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าค่าที่ echo ออกมา มีแบ็คสแลชติดมา ก็ใส่
$user = stripslashes($_GET['user']);
$pass = stripslashes($_GET['pass']);
ครับ
ผมลอง alert รหัสที่คุณตั้งดู มันปกติครับ
ว่าแต่
$.get("module/login.php?"+refStr(),
...............................................^ ตรงนี้คืออะไรครับ
|
|
|
|
|
Date :
2012-06-17 23:29:48 |
By :
Pine |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$.get("module/login.php?"+refStr(),
มันเป็นการส่งค่าไปทางฝั่ง server ด้วย jquery ครับ
|
|
|
|
|
Date :
2012-06-17 23:48:50 |
By :
prcancle-13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยินดีครับ ^ ^
ปล.ผมไม่แน่ใจครับ ว่าถ้ากำหนด เช่น { user:username, pass:password},
สำหรับผม ผมก็ไม่ใส่ filename.php?...... เลยครับ แหะๆๆๆ
|
|
|
|
|
Date :
2012-06-18 02:22:24 |
By :
Pine |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|