ช่วยดูเกี่ยวกับการเปลียนรหัสผ่านหน่อยครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูเกี่ยวกับการเปลียนรหัสผ่านหน่อยครับ
ช่วยดูเกี่ยวกับการเปลียนรหัสผ่านหน่อยครับ
จาก code ติดปัญหาตรงที่เมื่อมีการกรอกรหัสผ่านเดิมลงไป กลับมีการเเจ้งเตือนว่ารหัสผ่านเดิมไม่ถูกต้อง รบกวนเเนะนำเพิ่มเติมด้วยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $cus_id = isset( $_GET [ 'cus_id' ]); $cus_origi_pass = $_POST [ 'cus_origi_pass' ]; $hash_origi_password = md5( $cus_origi_pass ); $cus_new_pass = $_POST [ 'cus_new_pass' ]; $hash_new_password = md5( $cus_new_pass ); $cus_confirm_pass = $_POST [ 'cus_confirm_pass' ]; $sql = "SELECT * FROM customer WHERE cus_password ='$hash_origi_password' " ; //ตรวจรหัสผ่านเก่าว่าตรงกับที่อยู่ในฐานข้อมูลหรือไม่ $result = mysqli_query( $con , $sql ); if ( $cus_origi_pass == "" ) { echo "<script>alert('คุณยังไม่ได้กรอกรหัสผ่านเดิม');window.location='Cus_Edit_Pass.php';</script>" ; } else if ( $hash_origi_password == "1" ) { if ( $cus_new_pass != $cus_confirm_pass ) { //เช็คว่ารหัวผ่านใหม่ตรงกับที่ยืนยันหรือไม่ เมื่อรหัสผ่านไม่ตรง echo "<script>alert('รหัสผ่านใหม่กับการยืนยันรหัสผ่านไม่ตรงกัน');window.location='Cus_Edit_Pass.php';</script>" ; } else if (mysqli_num_rows( $result ) == 1) { //ถ้ารหัสผ่านตรง if (checkPassword( $password )) { //ตรวจสอบว่ารหัสผ่านมีข้อความผสมตัวเลข $sqlUp = "UPDATE customer SET cus_password WHERE cus_id ='$cus_id'" ; $relUp = mysqli_query( $con , $sqlUp ); echo "<script>alert('รหัสผ่านถูกเปลี่ยนเรียบร้อยแล้ว');window.location='Manage_Cus.php';</script>" ; } else { echo "<script>alert('รหัสผ่านต้องมีทั้งอักษรและตัวเลข และยาวอย่างน้อย 8 ตัวอักษร');window.location='Cus_Edit_Pass.php';</script>" ; } } } else { echo "<script>alert('คุณกรอกรหัสผ่านเดิมไม่ถูกต้อง');window.location='Cus_Edit_Pass.php';</script>" ; } |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
เรียงลำดับเงื่อนไขตามความสำคัญ ก่อนนำไปใช้
แนวทางประมาณนี้
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | $cus_id = isset( $_GET [ 'cus_id' ]); $cus_origi_pass = $_POST [ 'cus_origi_pass' ]; $hash_origi_password = md5( $cus_origi_pass ); $cus_new_pass = $_POST [ 'cus_new_pass' ]; $hash_new_password = md5( $cus_new_pass ); $cus_confirm_pass = $_POST [ 'cus_confirm_pass' ]; ต้องกรอกรหัสผ่านเก่า และรหัสผ่านใหม่ ไม่กรอก แจ้งเตือน if (pw_old!= "" && pw_new!= "" ){ // กรอกทั้งสองมาแล้ว if (checkPasswrod(pw_new)){ // ตรวจสอบรหัสผ่าน ใหม่ รูปแบบถูกต้อง $sql_update =" UPDATE customer SET cus_password= '$hash_new_password' WHERE cus_id = '$cus_id' AND cus_password= '$hash_origi_password' "; if ( $mysqli ->query( $sql_update )){ // มีการคิวรี่อัพเพทข้อมูล if ( $mysqli ->affected_rows>0){ // การคิวรี่มีการเปลี่ยนแปลงค่า // แจ้งแก้ไขรหัสผ่านเรียบร้อยแล้ว } else { // การคิวรี่ไม่มีการเปลี่ยนแปลงค่า เช่น กรณีเราอัพเดทค่าเดิม // แจ้งให้เปลี่ยนรหัสผ่านใหม่ ไม่ซ้ำรหัสผ่านเดิม } } else { // แจ้งรหัสผ่านเก่าไม่ถูกต้อง } } else { // ไม่ถูกต้อง แจ้งเตือนรูปแบบรหัสผ่านใหม่ให้ถูกต้อง } } else { // เตือนให้กรอกทั้ง pw เก่า และใหม่ ที่จะแก้ไข } |

ความคิดเห็นที่
2
ขอบคุณครับ

ความคิดเห็นที่
3
ขอความรู้เพิ่มเติมหน่่อยครับ ทำไมตรง WHERE จะต้องมีการอ้างอิงจาก ทั้ง id เเละ password ครับ
1 2 | $sql_update ="UPDATE customer SET cus_password= '$hash_new_password' WHERE cus_id = '$cus_id' AND cus_password= '$hash_origi_password' "; |

ความคิดเห็นที่
4
เป็นการตรวจสอบ password เก่าพร้อมอัพเดท password ใหม่ไปในตัว
ซึ่งถ้าอัพเดทไม่สำเร็จ ก็หมายความว่า password เก่าไม่ถูกต้อง
ซึ่งถ้าอัพเดทไม่สำเร็จ ก็หมายความว่า password เก่าไม่ถูกต้อง

ขอบคุณทุกการสนับสนุน
![]()