ส่งค่า pwd ที่มีเครื่องหมาย + ผ่าน Ajax ไปให้ php ตรวจสอบ แล้วติดปัญหาครับ
มีคำถามครับ ผมทำระบบแจ้งงานซ่อม โดยใช้ user / pwd จากบน Windows AD
โดยการทำงานจะกดปุ่ม submit ที่หน้า request_form.php ถ้า pwd ผิดก็จะขึ้น Alert
ที่หน้านั้นเลยว่า pwd ผิด ไม่ต้องรอไปประมวลผลอีกหน้านึง แล้ว back กลับให้เสียเวลา
แต่ตอนนี้มันติดปัญหาอย่างนึงคือ ถ้า pwd มีเครื่องหมาย + (บวก)
เมื่อไร มันจะฟ้องว่า pwd ผิดทันที ทั้ง ๆ ที่กรอกถูกต้อง เข้าใจว่าเกี่ยวกับการ encode url
ที่ส่งค่าไปให้ ldap_check.php และถ้าเปลี่ยน pwd เป็นเครื่องหมายอื่น เช่น @ $ %
แทน + ก็จะใช้งานได้ทันที
ตัวอย่าง Code พอสังเขปนะครับ ไม่ขอลงละเอียดมาก
อันนี้ไม่มีอะไรมาก เป็นแค่ textbox ธรรมดา และแทรก ajax_request_form.js ไว้แล้ว
request_form.php
<script src="inc/ajax_request_job.js"></script>
<input type="text" name="txt_request_job_user" id="txt_request_job_user" size="15" maxlength="20">
<input type="password" name="txt_request_job_pwd" id="txt_request_job_pwd" size="15" maxlength="20">
เอาค่าที่กด submit มาส่งผ่าน ajax โดยผ่าน method post
ajax_request_form.js
var url = 'ldap_check.php';
var pmeters = "ldap_user="+encodeURI(document.getElementById("txt_request_job_user").value)+"&ldap_pwd="+encodeURI(document.getElementById("txt_request_job_pwd").value)+"&ldap_auth=n";
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
จากนั้นส่งค่าที่ submit มาที่ ldap_check.php เพื่อทำการ bind กับ AD
ldap_check.php
$ldap_user=$_POST["ldap_user"];
$ldap_pwd=$_POST["ldap_pwd"];
$ldap_auth=$_POST["ldap_auth"];
$ldap_bind=ldap_bind($ldap_con,$ldap_user."@".$ldap_dom,$ldap_pwd) or die("ldap_fail");
ถ้า pwd ผิด ก็จะส่งค่า ldap_fail กลับไปหาที่ ajax_request_form.js เพื่อให้ขึ้น Alert
ajax_request_form.js
else if(HttPRequest.responseText == 'ldap_fail')
{
alert("Wrong username or password");
frm_request_job.txt_request_job_pwd.value="";
frm_request_job.txt_request_job_pwd.focus();
}
เบื้องต้น ผมได้ลองทำแบบนี้ที่ไฟล์ ldap_check.php แล้ว แต่ยังไม่ไ่ด้ผลครับ
รบกวนขอคำแนะนำเพิ่มเติมด้วยครับ
ldap_check.php
$ldap_pwd=urldecode($_POST["ldap_pwd"]);
Tag : PHP, JavaScript, Ajax, Windows
ประวัติการแก้ไข 2015-03-03 17:42:43 2015-03-03 17:44:19 2015-03-03 17:44:47 2015-03-03 17:54:34
Date :
2015-03-03 17:40:34
By :
NarinNil
View :
1046
Reply :
4
เปลี่ยนจาก urlencode เป็น base64_encode
Date :
2015-03-03 17:54:56
By :
Chaidhanan
ลองครอบทั้ง parameter
Code (JavaScript)
var pmeters = encodeURI("ldap_user="+document.getElementById("txt_request_job_user").value+"&ldap_pwd="+document.getElementById("txt_request_job_pwd").value+"&ldap_auth=n");
Date :
2015-03-03 23:26:07
By :
ผ่านมา
ได้แล้วครับ เปลี่ยนจาก encodeURI เป็น encodeURIComponent
Date :
2015-03-13 16:34:37
By :
NarinNil
Date :
2015-03-14 06:50:40
By :
mr.win
Load balance : Server 01