หัวข้อ: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: $100perday ที่ 21 เมษายน 2013, 14:27:13 เอาเป็น code ก่อนนะครับ
Login.php <form method=post action=signin.php> User : <input type=text name=useradmin id=useradmin><br> Pass : <input type=password name=passadmin id=passadmin><br> <input type=submit value=OK> </form> signin.php <?php session_start(); require_once "connect.php"; $sql = "select * from admin where useradmin = '$_POST[useradmin]' and passadmin = '$_POST[passadmin]'"; $dbquery = mysql_db_query($db, $sql); $num_rows = mysql_num_rows($dbquery); $rowLogin = mysql_fetch_array($dbquery); if($num_rows == 1){ $_SESSION['useradmin'] = $rowLogin['useradmin']; echo "<meta http-equiv='refresh' content='0;URL=home.php'>"; }else{ echo "<meta http-equiv='Content-Type' content='text/html; charset=tis-620' />"; echo "<script language='javascript'>alert('invalid username & password');</script>"; echo "<meta http-equiv='refresh' content='0;URL=Login.php'>"; } ?> home.php <? @session_start(); ob_start(); $useradmin = $_SESSION["useradmin"]; if(empty($useradmin)) { echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>"; exit(); } ?> ปัญหาตอนนี้คือ login ด้วย user , pass ถูกแล้ว (ย้ำว่าถูกต้องแน่นอนครับ) มันผ่านไปไฟล์ home.php เลยครับ และขึ้น หน้านี้จำกัดเฉพาะ Admin เท่านั้น ทั้ง ๆที่เคยเขียนอย่างนี้มาก่อน หรือว่ามันเกี่ยวกับ host ครับ รบกวนผู้รู้ช่วยทีครับ หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: vii ที่ 21 เมษายน 2013, 14:38:01 ก่อนที่จะใช้ meta refresh ไปหน้าอื่น
ให้ลอง echo $rowLogin['useradmin'] ออกมาก่อนว่ามีค่าอะไรหรือเปล่าครับ หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: sskzclub ที่ 21 เมษายน 2013, 17:13:57 if(!$_SESSION["useradmin"]){
echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>"; exit(); } แบบนี้น่าจะดีกว่าน่ะครับ ลองดูครับ โค้ดสั้นกวาด้วย ^^ หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: speca ที่ 02 พฤษภาคม 2013, 04:41:35 เซ็ต
โค๊ด: error_reporting(E_ALL); แล้วลองทำตามที่คุณ vii แนะนำดูครับ (อย่าพึ่ง redirect หน้า ให้ตรวจสอบดูว่า session ที่ใช้ตรวจสอบเงื่อยไขมีการ assign ค่าตามที่เราต้องการหรือปล่าว) หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 02 พฤษภาคม 2013, 04:58:52 ลองเช็คว่า username/password duplicate ใน database หรือป่าว
เพราะถ้ามัน duplicate เมื่อไหร่ num rows จะกลายเป็น 2 แล้วจะไปเข้าอีก condition ทันที ปล. เพิ่งเห็นกว่ากระทู้นี้ นานแล้ว จขกท คงแก้ได้แล้วมั้ง ป่านนี้ :-X หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: speca ที่ 02 พฤษภาคม 2013, 05:03:11 ลองเช็คว่า username/password duplicate ใน database หรือป่าว เพราะถ้ามัน duplicate เมื่อไหร่ num rows จะกลายเป็น 2 แล้วจะไปเข้าอีก condition ทันที ปล. เพิ่งเห็นกว่ากระทู้นี้ นานแล้ว จขกท คงแก้ได้แล้วมั้ง ป่านนี้ :-X เจ้าของกระทู้บอกว่ามันผ่านไปหน้า home แล้ว alert แสดงว่าเข้าเงื่อนไขแล้วครับ ไม่มี dup หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: kingofdollars ที่ 02 พฤษภาคม 2013, 07:01:42 วิธีเช็ค password กับ username ใน Database ของเจ้าของกระทู้แบบนี้
เสี่ยงต่อการโดน SQL Injection สูงมากๆ ครับ จะโดน hack เอาได้ง่ายๆ หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: top18753 ที่ 02 พฤษภาคม 2013, 07:15:11 ภาวะเสี่ยงภัย
หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 02 พฤษภาคม 2013, 07:29:33 จริงด้วยแฮะ อ่านไม่ดี ถ้างั้น ต้องไล่ทีละ step ครับ
1. ดู phpinfo ก่อนว่า session enable อยู่ป่าว เช่น สร้าง info.php ขึ้นมาแล้วเข้าไป search หาคำว่า session แล้วดูว่ามัน enable อยู่ป่าว info.php โค๊ด: <?php 2.ถ้า Session มัน Enable ไว้ก็ลอง test session ก่อนเลยครับ โดยการสร้างไฟล์ออกมาแบบนี้ แล้ว refresh หลายๆทีดูครับว่ามันแสดงเหมือนเดิมหรือป่าว session-test.php โค๊ด: <?php ถ้า ข้อ 1 ข้อ 2 ผ่าน แสดงว่า session ทำงานปรกติครับ ต้องไล่ดู code เรา 3. ใน home.php dump session ออกมาดูครับ โค๊ด: <? ถ้า session ใน ข้อ 3 ไม่มี key ชื่อ useradmin แสดงว่า signin.php เฟลครับ ให้ลองปรับ encode เป็น utf-8 without bom ดู ถ้ายังไม่หายอีก ตรง num_rows==1 ไม่ต้อง echo meta ครับให้ echo $rowLogin['useradmin'] ออกมาดู หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: dragons_first ที่ 02 พฤษภาคม 2013, 08:42:50 @session_start(); = session ไม่ทำงานครับ ต้องเอา@ ออกครับ
หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 02 พฤษภาคม 2013, 09:01:02 @session_start(); = session ไม่ทำงานครับ ต้องเอา@ ออกครับ เติม @ ข้างหน้า คือ suppresses error / warning ครับ ทำงานปรกติครับ ไม่เชื่อลอง โค๊ด: <?php แต่ปรกติ ไม่ควรใส่ครับ ถ้าเกิดมัน error มันจะได้แจ้งเตือนว่า header already sent ไรเนี่ยแหละ หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: xvlnw.com ที่ 02 พฤษภาคม 2013, 09:06:05 ต้องลอง Debug ที่ตัวแปร $rowLogin['useradmin'] กับตัวแปร SESSION แล้วหละครับ
หัวข้อ: Re: ปัญหาที่แก้ไม่ได้สักที งงครับ ขอเชิญท่านผู้รู้ช่วยแก้ปัญหา Session ทีครับ เริ่มหัวข้อโดย: MapTwoZa ที่ 02 พฤษภาคม 2013, 10:01:05 จาก comment ผมอันนี้เลยครับ
http://www.thaiseoboard.com/index.php/topic,316164.msg4397442.html#msg4397442 แล้วผมลองไล่ดู code ไปมาหลายรอบและ มันไม่มีจุดผิดเลยครับ ชื่อตัวแปลก็ถูกหมด เลยสรุปแบบนี้ ไปไล่เทสทีละข้อเลย 1. เช็ค phpinfo ถ้า session enable คือ session ทำงานได้ 2. test session id ถ้ามันเปลี่ยน แสดงว่า session_start ไม่ทำงาน อาจเกิดจาก cookie ถูก disable ไว้ ทางใดทางหนึ่ง 3. ถ้า 1-2 ทำงานปรกติ เลยขอเดาแบบจริงจังเลยว่า session_start ไม่ติด อาจจะเป็นที่ home.php ก็ได้เพราะใช้ @session_start(); session ไม่ติด แต่ก็ไม่มี error แสดง เลยไม่สามารถดึงข้อมูลใน session ออกมาได้ ไม่ก็เป็นที่ signin.php ครับ session start ไม่ติด echo error ออกมา แต่ว่า มี echo meta tag ตามมา (ซึ่ง login จะถูกต้องทุกอย่าง เข้าเงื่อนไขถูกต้องทุกอย่าง แต่ session ไม่ได้ถูกบันทึก) มัน redirect เลยครับ เลยไม่รู้ว่า session start ไม่ติด ให้ลองปรับ encoding ใน 2 ไฟล์นี้เป็น utf8 without bom ครับ นอกเหนือจากนี้ คิดไม่ออกและ :wanwan031: |