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 > ค่า password ที่รับจาก Textbox มีค่าตรงกันกับที่อยู่ในฐานข้อมูล แต่ก็ยังล็อกอินไม่ได้



 

ค่า password ที่รับจาก Textbox มีค่าตรงกันกับที่อยู่ในฐานข้อมูล แต่ก็ยังล็อกอินไม่ได้

 



Topic : 079893



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



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



คือผมเจอปัญหาในระบบล็อกอินหนะครับ ซึ่งปัญหาที่เกิดขึ้นนั้นไม่ได้เกิดกับสมาชิกทุกคนนะครับ
บางคนก็สามารถล็อกอินเข้าสู่ระบบได้ มีเฉพาะบางคนที่ไม่สามารถล็อกอินเข้าระบบได้ ข้อแตกต่างของ
คนที่เข้าระบบได้ กับคนที่เข้าระบบไม่ได้นั้นอยู่ตรงที่ password ครับ แต่ผมก็เช็ค password ของคนที่เข้าระบบไม่ได้แล้วนะครับ
มันก็ตรงกันกับค่าที่มีอยู่ในฐานข้อมูล แต่จะผิดแปลกก็ตรงที่คนที่เข้าระบบไม่ได้จะมี password ที่แปลก ออกไปจากคนที่เข้าระบบได้
จะยกตัวอย่าง password คนที่เข้าระบบไม่ได้นะครับ ahk'k,pk,c]' ส่วนคนที่เข้าระบบได้จะเป็น 13579nabak สิ่งที่ผมมองว่า
มันแปลกก็คือคนที่เข้าระบบไม่ได้จะมีสัญลักษณ์อื่นๆที่ไม่ใช่ตัวเลขหรือตัวอักษร แต่ในจุดนี้ผมมองว่ามันก็ไม่น่าจะมีปัญหาอะไรครับ
ส่วนที่ผมคิดว่าน่าจะมีปัญหาคือ ฟิวส์ ในฐานข้อมูลที่ผมใช้เก็บ password ซึ่งผมเซ็ทไว้เป็นชนิด varchar ผมจึงสงสัยว่า การเก็บข้อมูลแบบ varchar สามารถเก็บข้อมูลที่เป็นสัญลักษณ์ได้หรือไม่ ถ้าได้ก็โอเคไปครับ แต่ถ้าไม่ได้เราจะต้องเก็บเป็นแบบใดครับถึงจะรองรับ
ข้อมูลได้ทุกชนิด
ในส่วนของคนมี่เข้าระบบไม่ได้นั้นหลังจากที่กรอก user และ password เรียบร้อย แล้วคลิกปุ่มเพื่อที่จะเข้าสู่ระบบ ระบบ
จะ alert บอกว่าระหัสผ่านไม่ถูกต้อง ทั้งๆที่ผมเช็คแล้วเช็คอีกว่ารหัสผ่านที่กรอกมานั้นมีค่าตรงกันกับฐานข้อมูลหนะครับ
ในที่นี้ได้มีโค้ดในส่วนของหน้าล็อกอินมาด้วยครับ

Code (PHP)
<?
session_start();
$user = $_GET["user"];
$pass = $_GET["pass"];

include("../common.php");
$con = mysql_connect( $mysql_host,$mysql_user,$mysql_pass );
mysql_select_db($mysql_db);

	$sql = "select * from table_register where code = '$user'";
	$qry = mysql_query($sql);
	$nrows = mysql_num_rows($qry);
	if($nrows != 0){
		$rsl = mysql_fetch_array($qry);
		$code_pass = $rsl["pass"];
		//$repass = $rsl["repass"];
		//$md5_pass = MD5($pass);
		//$status = $rsl["status"];
		if($pass == $code_pass){
			$_SESSION["login_status"] = "ok";
			$_SESSION["code"] = $rsl["code"];
			$_SESSION["nickname"] = $rsl["nickname"];
			
			/*$_SESSION["email"] = $rsl["email"];
			$_SESSION["ext"] = $rsl["ext"];
			$_SESSION["priv"] = $rsl["privilage"];*/
			
			echo "OK";
		
		}else{
			echo "รหัสผ่านไม่ถูกต้อง";
		}
	  }
		else{
			echo "รหัสนักศึกษานี้ไม่มีในระบบ";
	}  


mysql_close($con);
?>




Tag : PHP, MySQL, HTML/CSS, JavaScript, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-06-17 15:19:37 By : prcancle-13 View : 1534 Reply : 12
 

 

No. 1



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



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


ลอง Debug ดูครับ ว่าค่าที่ ส่งไปได้ encode ด้วย md5 จริงหรือไม่

แล้วข้อมูลใน DB ตรงกันไหม มีขนาด 32 ตัวอักษรเท่ากันไหม ลองดูก่อนครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 15:29:34 By : kamuro
 


 

No. 2



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



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

ผมไม่ได้ใช้ MD5 ครับ ถ้าลองดูจากโค้ดผมได้ Comment ครับ แต่จริงๆแล้วผมไม่ได้ใช่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 15:35:03 By : prcancle-13
 

 

No. 3



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



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

ผมลองเอา password ของคนที่ล็อกอินไม่ได้ ไปเปลี่ยนให้กับ user ที่สามารถล้อกอินได้
ผลปรากฎว่า ระบบก็ alert บอกว่ารหัสผ่านไม่ถูกต้องอ่ะครับ ผมจึงมองว่าปัญหามันอยู่ตรง
password นีแหละครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 15:48:53 By : prcancle-13
 


 

No. 4



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



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


งันลองเปลี่ยนการรับค่าจาก GET เป็น POST หรือ REQUEST ดูครับว่าได้ไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 17:06:39 By : kamuro
 


 

No. 5



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



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

พอรู้ที่มาแล้วครับ ยกตัวอย่าง 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
 


 

No. 6



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



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

ผมลองรับค่ามา แล้ว echo ดู ahk\'k,pk,c]\' สัญลักษณ์ back slash ก็ยังติดมาอยู่ดีครับ
พลิกแพลงหลายรูปแบบแล้วครับ ต้อง echo อย่างไรเพื่อที่จะให้ได้ค่า single qoute ที่ถูกส่งมาแบบ
GET ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 17:34:18 By : prcancle-13
 


 

No. 7



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



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


งันคงต้อง encode มาก่อนครับแล้วค่อย decode จากนั้นค่อยไป compare กับ database ครับ

ตัวอย่าง

Code (PHP)
<?
$a = "ทดสอบอักขระ";

echo urlencode($a).'<br>'.urldecode($a);
?>



ลองดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 21:15:53 By : kamuro
 


 

No. 8



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



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

ลองเช็คไปเช็คมามันผิดตั้งแต่ฝั่ง 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
 


 

No. 9

Guest


ถ้าค่าที่ echo ออกมา มีแบ็คสแลชติดมา ก็ใส่

$user = stripslashes($_GET['user']);

$pass = stripslashes($_GET['pass']);

ครับ

ผมลอง alert รหัสที่คุณตั้งดู มันปกติครับ


ว่าแต่
$.get("module/login.php?"+refStr(),
...............................................^ ตรงนี้คืออะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 23:29:48 By : Pine
 


 

No. 10



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



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

$.get("module/login.php?"+refStr(),
มันเป็นการส่งค่าไปทางฝั่ง server ด้วย jquery ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-17 23:48:50 By : prcancle-13
 


 

No. 11



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



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

ตอบความคิดเห็นที่ : 9 เขียนโดย : Pine เมื่อวันที่ 2012-06-17 23:29:48
รายละเอียดของการตอบ ::
ได้แล้วครับ ผมใช้วิธีที่คุณบอก $pass = stripslashes($_GET['pass']);
ขอบคุณมากนะครับ ความรู้ใหม่เลยนะครับเนี่ย ขอบคุณมากๆอีกทีครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-18 00:02:29 By : prcancle-13
 


 

No. 12

Guest


ยินดีครับ ^ ^


ปล.ผมไม่แน่ใจครับ ว่าถ้ากำหนด เช่น { user:username, pass:password},

สำหรับผม ผมก็ไม่ใส่ filename.php?...... เลยครับ แหะๆๆๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-06-18 02:22:24 By : Pine
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ค่า password ที่รับจาก Textbox มีค่าตรงกันกับที่อยู่ในฐานข้อมูล แต่ก็ยังล็อกอินไม่ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 02
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 อัตราราคา คลิกที่นี่