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,038

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


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

 
Topic : 079893



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



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


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

Code (PHP)
01.<?
02.session_start();
03.$user = $_GET["user"];
04.$pass = $_GET["pass"];
05. 
06.include("../common.php");
07.$con = mysql_connect( $mysql_host,$mysql_user,$mysql_pass );
08.mysql_select_db($mysql_db);
09. 
10.    $sql = "select * from table_register where code = '$user'";
11.    $qry = mysql_query($sql);
12.    $nrows = mysql_num_rows($qry);
13.    if($nrows != 0){
14.        $rsl = mysql_fetch_array($qry);
15.        $code_pass = $rsl["pass"];
16.        //$repass = $rsl["repass"];
17.        //$md5_pass = MD5($pass);
18.        //$status = $rsl["status"];
19.        if($pass == $code_pass){
20.            $_SESSION["login_status"] = "ok";
21.            $_SESSION["code"] = $rsl["code"];
22.            $_SESSION["nickname"] = $rsl["nickname"];
23.             
24.            /*$_SESSION["email"] = $rsl["email"];
25.            $_SESSION["ext"] = $rsl["ext"];
26.            $_SESSION["priv"] = $rsl["privilage"];*/
27.             
28.            echo "OK";
29.         
30.        }else{
31.            echo "รหัสผ่านไม่ถูกต้อง";
32.        }
33.      }
34.        else{
35.            echo "รหัสนักศึกษานี้ไม่มีในระบบ";
36.    
37. 
38. 
39.mysql_close($con);
40.?>




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 : 1561 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)
1.<?
2.$a = "ทดสอบอักขระ";
3. 
4.echo urlencode($a).'<br>'.urldecode($a);
5.?>



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

 

No. 8



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



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

ลองเช็คไปเช็คมามันผิดตั้งแต่ฝั่ง javascript อ่ะครับ
ลองดูโค้ดก่อนละกันนะครับ ในที่นี้ผมใช้ jquery และส่งข้อมูลแบบ GET ครับ

01.$("#login_submit").click(function(){
02.                var username = $("#username").val();
03.                var password = $("#password").val();
04.         
05. 
06.                 
07.                if((username != "") && (password == "")){
08.                    alert("กรุณากรอกรหัสผ่าน");
09.                    $("#password").focus();
10.                }
11.             
12.                if((username == "") && (password != "")){
13.                    alert("กรุณากรอกรหัสนักศึกษา");
14.                    $("#username").focus();
15.                }
16. 
17.                if((username != "") && (password != "")){
18.                    $.get("module/login.php?"+refStr(),
19.                        { user:username, pass:password},
20.                        function(data){
21.                            if(data == "OK"){
22.                                alert("คุณได้ล็อกอินเข้าสู่ระบบเรียบร้อยแล้ว");
23.                                window.location.href = "index.php";
24.                            }else{
25.                                alert(data);
26.                            }
27.                        }
28.                    );
29.                }
30.                 
31.            });

มันผิดตรงนี้ครับ

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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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