Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > เกี่ยวกับระบบการเปลี่ยนรหัสผ่านครับ จนมุมครับ อัพเดทข้อมูลไม่ได้



 

เกี่ยวกับระบบการเปลี่ยนรหัสผ่านครับ จนมุมครับ อัพเดทข้อมูลไม่ได้

 



Topic : 119839



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์




อันนี้เป็น code หน้า form ครับ

Code (PHP)
if (isset($_POST['txtConfirmPassword'])) {
		userChangePassword();
	}

<form method="post" enctype="multipart/form-data" name="frmPassword" id="frmPassword" onsubmit="return checkPassword()">
    
                <h5><?php echo $userFirstname.' '.$userLastname; ?></h5><br>
                
                <input name="hidUserId" type="hidden" id="hidUserId" value="<?php echo $user_id; ?>">
                <input type="hidden" name="secretPassCode" value="<?php echo SECRET_KEY;?>">
                
                <input name="txtOldPassword" type="password" class="form-control" id="txtOldPassword" 
                maxlength="16" placeholder="Old Password"><br>
                <input name="txtUserPassword" type="password" class="form-control" id="txtUserPassword" 
                maxlength="16" placeholder="New Password"><br>
                <input name="txtConfirmPassword" type="password" class="form-control" id="txtConfirmPassword" 
                maxlength="16" placeholder="Confirm Password"><br><br>
                <button name="btnModifyUser" type="submit" id="btnModifyUser" class="btn btn-danger">
                <span class="glyphicon glyphicon-lock"></span> เปลี่ยนรหัสผ่าน</button>
    
            </form>


อันนี้เป็น code function userChangePassword ครับ

Code (PHP)
function userChangePassword() {
	
	$userId  = (int)$_POST['hidUserId'];	
	$oldPass = $_POST['txtOldPassword'];
	$hashOldPassword = md5($oldPass);
	$confirmPassword = $_POST['txtConfirmPassword'];
	$password = $_POST['txtUserPassword'];
	$hashPassword = md5($password);
	
	$sql = "SELECT user_id
		    FROM tbl_user 
			WHERE user_password = '$hashOldPassword' AND user_id = $userId";
	$result = mysql_query($sql);
	
	if ($password != $confirmPassword) {
		setError('รหัสผ่านใหม่กับการยืนยันรหัสผ่านไม่ตรงกัน');
	} else if (mysql_num_rows($result) == 1) {
		if (checkPassword($password)) {
			
		$sqlUpdate = "UPDATE tbl_user 
					SET user_password = '$hashPassword' 
					WHERE user_id = $userId";

		mysql_query($sqlUpdate);
		
			setSuccess('ท่านได้เปลี่ยนแปลงรหัสผ่านเรียบร้อยแล้ว');
		} else {
			setError('รหัสผ่านต้องมีอักษรพิมพ์เล็ก พิมพ์ใหญ่ ตัวเลข และมีความยาว 6 - 12 ตัวอักษร');
		}
	} else {
		if ($_POST['txtOldPassword'] == '') {
			setError('ท่านยังไม่ได้กรอกรหัสผ่านเดิม');
		} else {
			setError('ท่านกรอกรหัสผ่านเดิมไม่ถูกต้อง');
		}
	}
	
}


อันนี้ function checkPassword ครับ

Code (PHP)
function checkPassword($password) {
	
	$checkPassword = '/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{6,12}$/';
	if (!preg_match($checkPassword, $password)) {
		return false;
	} else {
		return true;
	}
}


อาการครับ

กดเปลี่ยนรหัสผ่านให้ตายยังไง มันก็ไม่เปลี่ยนให้ครับ แถมมัน return กลับมาเป็น

} else {
setError('ท่านกรอกรหัสผ่านเดิมไม่ถูกต้อง');
}

ตลอดเลยครับ ซึ่งผมลองแก้เรื่องของ md5 หลายรอบแล้ว มันก็เหมือนว่ายังหารหัสผ่านเดิมไม่เจออยู่ดีครับ

code ทั้งหมดนี้ผมนำมาจากหนังสือ PHP เล่มหนึ่งครับ แล้วเอามาดัดแปลงครับ แต่ก็ดัดแปลงอย่างรอบคอบแล้วนะครับ
ก็ยังแก้ไม่ตกอยู่ดีครับ

ขอบคุณทุกท่านนะครับที่สละเวลามาช่วยผมแก้ครับ



Tag : PHP, HTML/CSS, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-11-10 22:29:17 By : obstinatez View : 986 Reply : 4
 

 

No. 1



โพสกระทู้ ( 1,636 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

13. $result = mysql_query($sql) or die( mysql_error() ); เพิ่มสีแดง

และควรปรับ flowcontrol ใหม่ครับ
ตรวจสอบรายละเอียดที่ไม่จำเป็นต้องคิวรี่ก่อน
เช่น ตรวจสอบ password กับ confirm_password ให้ตรวจสอบก่อนการคิวรี่
checkpassword($password); ก็ด้วย // อันนี้ไม่จำเป็น ต้องเข็คก็ได้ครับ รับมันทุกอย่าง เพราะเข้า md5 อยู่แล้ว

Code
$sql = "SELECT user_id FROM tbl_user WHERE user_password = '$hashOldPassword' AND user_id = $userId";

statement เอาสีแดงออกครับ มาตรวจสอบ ด้วย php จะได้เช็คได้ว่ามันผิดยังไง

เมื่อคิวรี่แล้ว ให้ตรวจสอบ หาไม่พบก่อน คือจำนวนเป็น 0 ROW

Code (PHP)
if( mysql_num_rows($result)==0){
    echo "xxxxyyyy";
}else{
   if( $hashOldPassword !== $row['user_password']){
       echo 'รหัสผ่านเก่าไม่ตรง' ,'--', $txtOldPassword,'--',  
            $hashOldPassword,'--', $row['user_password']; 
            // echo มาเช็คด้วยตาพิมพ์ผิด เองหรือเปล่า
   }else{
       // update
   }
}


ปล. อ่านโค๊ดแล้วไม่น่าผิด จะผิดก็ รหัสผ่านส่งมาไม่ตรงกัน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-11 06:00:22 By : NewbiePHP
 


 

No. 2

Guest


ตรงนี้มันไม่เป็นจริง จึงวิ่งไปเงื่อนไขนั้น mysql_num_rows($result) == 1

จากที่อ่านโค้ดคิดว่า ผิดที่ตัวข้อมูล นายควรจะล้างข้อมูลในฐานข้อมูล ตารางนี้ออกก่อน tbl_user
แล้วลองแอดใหม่ เพื่อมาเทสดูว่าหายไหม

อีกจุด นายไม่ได้โชว์ว่า
<input name="hidUserId" type="hidden" id="hidUserId" value="<?php echo $user_id; ?>">
ค่าตรงนี้เอามายังไง คำสั่งเป็นยังไง อาจจะผิดที่จุดนี้ก็ได้

ลอง echo ค่าตัวแปรออกมาดูหลายๆจุด ก็จะเจอเอง
เอาค่าพวกนี้ echo มาดู
$userId ทั้งในตัวฟอร์ม และ ตัวโค้ดในฟังก์ชั่น
นี่ด้วย mysql_num_rows($result) == 1

และบางครั้งการเซทค่า server มีผลทำให้ จำเปนต้องส่งค่า พารามิเตอร์เข้าไปใน ฟังก์ชั่น userChangePassword()
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-11 09:05:41 By : HolyTyrael
 

 

No. 3



โพสกระทู้ ( 12 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกท่านครับ ทำได้แล้วครับนำความรู้จาก NewbieXYZ ในเรื่องของการปรับ flowcontrol

และ Guest ในเรื่องของการ echo หาจุดผิดพลาดต่างๆ ครับ

จึงได้ code มาดังนี้ ก็ขอโพสให้คนอื่นนำไปประยุกต์ใช้กันอีกทีนะครับ

Code (PHP)
if (isset($_POST['txtOldPassword'])) {
		if ($_POST['txtOldPassword'] == '') {
			setError('ท่านยังไม่ได้กรอกรหัสผ่านเดิม');
		} else if ($_POST['txtUserPassword'] == '') {
			setError('ท่านยังไม่ได้กรอกรหัสผ่านใหม่');
		} else if ($_POST['txtConfirmPassword'] == '') {
			setError('ท่านยังไม่ได้ยืนยันรหัสผ่านใหม่');
		} else if ($password != $confirmPassword) {
			setError('รหัสผ่านใหม่กับการยืนยันรหัสผ่านไม่ตรงกัน');
		} else {
		
			$userId  = (int)$_POST['hidUserId'];
			$oldPass = $_POST['txtOldPassword'];
			$hashOldPassword = md5($oldPass);
			$confirmPassword = $_POST['txtConfirmPassword'];
			$password = $_POST['txtUserPassword'];
			$hashPassword = md5($password);
	
			$sql = "SELECT user_id
					FROM tbl_user 
					WHERE user_password = '$hashOldPassword' AND user_id = $userId";
			$result = mysql_query($sql) or die(mysql_error());
			$row = mysql_num_rows($result);

			if (($row) == 1) {
				
				if ($hashOldPassword !== $row['user_password']) {
					
					$sqlUpdate = "UPDATE tbl_user 
								SET user_password = '$hashPassword' 
								WHERE user_id = $userId";

					mysql_query($sqlUpdate);
				
					setSuccess('ท่านได้เปลี่ยนแปลงรหัสผ่านเรียบร้อยแล้ว');
				} 

			} else {
				setError('ท่านกรอกรหัสผ่านเดิมไม่ถูกต้อง');
			}
		}
	}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-11 22:35:49 By : obstinatez
 


 

No. 4



โพสกระทู้ ( 1,636 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook




ประวัติการแก้ไข
2015-11-12 03:39:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-11-12 03:38:19 By : NewbiePHP
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เกี่ยวกับระบบการเปลี่ยนรหัสผ่านครับ จนมุมครับ อัพเดทข้อมูลไม่ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่