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

HOME > PHP > PHP Forum > ช่วยดูให้ทีครับ ปัญหา session อีกเช่นเคย login แล้วเข้าไปหน้าที่ต้องการไม่ได้ครับ!



 

ช่วยดูให้ทีครับ ปัญหา session อีกเช่นเคย login แล้วเข้าไปหน้าที่ต้องการไม่ได้ครับ!

 



Topic : 064592



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



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



ช่วงนี้อาจจมีปัญหาเยอะหน่อยนะครับ อย่าเพิ่งเซ็งๆ เบื่อๆ กันซะก่อนนะครับ
เข้าเรื่องเลยนะครับ ผมจะล็อกอินโดย username มีสถานะเป็น admin ครับ
login.php
<?
	@session_start();
	$username = trim($_POST['username']);
	$password = trim($_POST['password']);
	
		include("config.inc.php");
		$strMember = "SELECT password, status FROM member WHERE username = '$username'";
		$memberQuery = mysql_query($strMember) or die(mysql_error());
		$objMember = mysql_fetch_assoc($memberQuery);
		
		if($objMember['password'] != trim($password)){
			echo "<SCRIPT>alert('ไอดี และ รหัสผ่าน ไม่ถูกต้อง');history.back(-1);</script>";							
			exit();
		} else {
			$_SESSION["userid"] = $objMember['user_id'];
			$_SESSION["status"] = $objMember['status'];

			session_write_close();
			
			if($objMember["status"] == "admin"){
				echo "ยินดีต้อนรับ $objMember[nickname]<br>ระบบกำลังพาท่านไปยังหน้าควบคุมการทำงาน... ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=admin_page.php">
				<?
			} else {
				echo "ยินดีต้อนรับ $objMember[nickname]<br>ระบบกำลังพาท่านไปยังหน้าแรก... ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=main.php">
				<?
			}
		}
		mysql_close();
?>

check_session.php
<?
	@session_start();
	function check_session($number){
		$number_status = $number;
		if($number_status == 1){ //Admin
			if($_SESSION['userid'] == "")
			{
				echo "ไม่มีผู้ใช้นี้!... กรุณาลงชื่อเข้าใช้ ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
				<?
				exit();
			}

			if($_SESSION['status'] != "Admin")
			{
				echo "ไม่ได้รับอนุญาติ!... กรุณาลงชื่อเข้าใช้ ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
				<?
				exit();
			}
		} elseif ($number_status == 2){ //User && Admin
			if($_SESSION['userid'] == "")
			{
				echo "ไม่ได้รับอนุญาติ!... กรุณาลงชื่อเข้าใช้ ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
				<?
				exit();
			}

			if($_SESSION['status'] != "user" || $_SESSION['status'] != "admin")
			{
				echo "ไม่ได้รับอนุญาติ!... กรุณาลงชื่อเข้าใช้ ";
				?>
				<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
				<?
				exit();
			}
		}
	}
?>

admin_page.php
<?
	include("check_session.php");
	check_session(1);
?>
<html>
<head>
</head>
<body>
..
..
</body>
</html>


พอเข้าหน้า admin_page.php แล้วมันขึ้นแบบนี้ครับ ไม่มีผู้ใช้นี้!... กรุณาลงชื่อเข้าใช้ ซึ่งมันอยู่ในเงื่อนไข
if($number_status == 1){ //Admin ของฟังก์ขัน function check_session($number)

ทำไม session ที่เป็น userid มันว่างละครับ เป็นเพราะอะไรหรอ ทั้งๆ ที่ผมลอง echo $_SESSION['status'] ดูแล้วก็เป็น admin
หรือเป็นเพราะตัวนี้ครับ <META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">

รบกวนด้วยนะครับ ตอนนี้กำลังทำตามบทเรียนนี้อยู่ครับ PHP MySQL กับ Login Form ทำระบบ User ล็อกอิน แบบง่าย ๆ ด้วย PHP และ MySQL โดยทำการตรวจสอบ Username และ Password
ขอบคุณสำหรับความช่วยเหลือกันเสมอมาครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2011-08-11 12:31:42
2011-08-11 12:33:17
2011-08-11 12:54:33
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-08-11 12:31:03 By : fogza View : 1226 Reply : 19
 

 

No. 1



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

ลองเอา
@session_start();
ไว้หน้า admin ด้วยน่ะครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 12:38:41 By : mangkunzo
 


 

No. 2



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



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

ตอบความคิดเห็นที่ : 1 เขียนโดย : mangkunzo เมื่อวันที่ 2011-08-11 12:38:41
รายละเอียดของการตอบ ::
เหมือนเดิมครับ ผมประกาศตามที่คุณบอก
Code (PHP)
<?
	@session_start();
	include("check_session.php");
	check_session(1);
?>

เป็นเพราะผมไปประกาศเป็นฟังก์ชันให้ตรวจสอบ session หรือปล่าวครับ



ประวัติการแก้ไข
2011-08-11 12:56:25
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 12:55:44 By : fogza
 

 

No. 3



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



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


อย่าใส่ @ ไว้หน้า session_start(); ครับ

ถ้ามัน error ขึ้นมาคุณจะไม่รู้ว่ามัน error ครับ

@ ใช้ในส่วนที่ไม่จำเป็นต่อระบบครับ

ใส่ session_start ไว้หน้า admin_page ด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 12:59:05 By : l3luEbirD
 


 

No. 4



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



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


หน้า check_session.php

เอา session_start ออกก็ได้ครับ ไม่จำเป็น

check_session(1); // คุณใส่ 1 ไว้มันก็ออกไม่มีผู้ใช้่สิครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:01:43 By : l3luEbirD
 


 

No. 5



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

Code (PHP)
$strMember = "SELECT password, status FROM member WHERE username = '$username'";
//  ทำไม select แค่ 2 ค่าหล่ะครับ แล้ว $objMember['user_id'] จะได้มาๆได้ยังไง

เปลี่ยนเป็น
$strMember = "SELECT * FROM member WHERE username = '$username'";
 // ชัวน์กว่าน่ะครับ




แล้วก็ลอง Echo $_SESSION['userid'] ดูครับ ว่ามีค่าไม๊
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:02:32 By : mangkunzo
 


 

No. 6



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



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


ตาม คุณ mangkunzo คุณไม่ได้เรียก user_id มามันจะออกได้ไง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:05:21 By : l3luEbirD
 


 

No. 7



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : l3luEbirD เมื่อวันที่ 2011-08-11 12:59:05
รายละเอียดของการตอบ ::
ถ้าเอา @ ออกในหน้า admin_page.php ให้เหลือแค่ session_start(); มันจะฟ้องเออเร่อแบบนี้ครับ
Code (PHP)
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\tourthai\admin_page.php:1) in C:\AppServ\www\tourthai\admin_page.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\tourthai\admin_page.php:1) in C:\AppServ\www\tourthai\admin_page.php on line 2
ไม่มีผู้ใช้นี้!... กรุณาลงชื่อเข้าใช้


ซึ่งเมื่อคืนผมลองหาวิธีแก้ไขมา เค้าแนะนำให้ใช้ @ เติมไปข้างหน้านะครับ ผมก็เลยใช้ทุกหน้าที่ต้องประกาศ session_start(); นะครับ

ส่วน check_session(1); ผมใส่ 1 เพราะให้มันไปเช็คว่า
$_SESSION['userid'] มีค่าไหม
แล้ว $_SESSION['status'] ไม่ใช่ admin หรือปล่าว

ประมาณนี้ครับ ผิดถูกตรงไหน ช่วยแนะนำด้วยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:08:22 By : fogza
 


 

No. 8



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



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

ผมไม่รู้ว่า page ไหนเรียก page ไหนมาบ้าง

คุณลอง เรียก @session_start(); ไว้หน้า page หลัก อย่างเดียวครับ
ส่วน page ที่ include มาก็ อย่าให้มี ตัว @session_start(); แล้วลองรันดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:10:09 By : compeng
 


 

No. 9



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



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

ตอบความคิดเห็นที่ : 8 เขียนโดย : compeng เมื่อวันที่ 2011-08-11 13:10:09
รายละเอียดของการตอบ ::
ตอนนี้ @session_start(); มีแค่หน้า check_login.php กับ admin_page.php แล้วครับ ตัดในหน้า check_session.php ออกแล้ว


ตอบความคิดเห็นที่ : 5 เขียนโดย : mangkunzo เมื่อวันที่ 2011-08-11 13:02:32
รายละเอียดของการตอบ ::
ขอบคุณมากครับ ได้ค่าของ userid มาแล้ว ลืมเรียกมานี่เอง แต่ว่า.....
พอเข้าหน้า admin_page.php มันก็ยังไม่ได้อยู่ครับ



ประวัติการแก้ไข
2011-08-11 13:13:59
2011-08-11 13:15:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:13:27 By : fogza
 


 

No. 10



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



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


ผมอคติเรื่อง @ ที่อยู่หน้า session_start(); ที่มัน error นิดหน่อย

แต่ผมก็ไม่รู้ว่า session มันจะสามารถสร้างได้ในหน้า นี้รึป่าวนะครับ ( มีใครมาไขข้อข้องใจหน่อย)

เพราะว่า จิงมันก็ error อยู่อะครับ แต่ @ มันก็ไปปิด error ไม่ให้เรามองเห้นได้เท่านั้นเอง

ถึงค่าทุกอย่างมันจะถูก แต่ session สร้างไม่ได้มันก็ไม่มีความหมายอะครับ

อันนี้คือหลักการที่ผมคิด

1.ลองสร้าง session จากหน้าที่คุณจะเรียก ออกมา test สักตัว แล้วไปเปิดหน้าอื่นแล้ว echo ดูว่าติดไหมครับ

2.ก็คือลองเอา include("config.inc.php"); มาอยู่หลัง
session_start();
include("config.inc.php");
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:22:39 By : l3luEbirD
 


 

No. 11



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



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


ลองตัด session_write_close(); ไม่รู้ว่าเกี่ยวรึป่าว เพราะว่าผมไม่เคยใช้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:24:10 By : l3luEbirD
 


 

No. 12



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



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


ตอบความคิดเห็นที่ : 11 เขียนโดย : l3luEbirD เมื่อวันที่ 2011-08-11 13:24:10
รายละเอียดของการตอบ ::
ผมก้อทำแบบคุณหละ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:28:33 By : sambrazil
 


 

No. 13



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



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

ตอบความคิดเห็นที่ : 11 เขียนโดย : l3luEbirD เมื่อวันที่ 2011-08-11 13:24:10
รายละเอียดของการตอบ ::
เหมือนเดิมครับ ตอนนี้ตัด @ ออกจาก session_start(); หมดแล้ว ซึ่งมันฟ้องแบบนี้นะครับ
Code (PHP)
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\tourthai\check_login.php:1) in C:\AppServ\www\tourthai\check_login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\tourthai\check_login.php:1) in C:\AppServ\www\tourthai\check_login.php on line 2
ยินดีต้อนรับ onemanf
ระบบกำลังพาท่านไปยังหน้าควบคุมการทำงาน...

เป็นเหมือนกันทั้งหน้า check_login.php และ admin_page.php

ส่วน session_write_close(); เอาออกแล้วก็เหมือนเดิมครับ
เหมือนว่า $_SESSION["userid"] = $objMember['user_id']; ที่สร้างไว้หน้า check_login.php มันสร้างไว้แล้ว แต่เวลาจะไปหน้าต่อไป ค่ามันไม่มีนะครับ



ประวัติการแก้ไข
2011-08-11 13:31:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:29:41 By : fogza
 


 

No. 14



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



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


ลองใส่ ob_start ครับบนหัว session ดูครับ ใส่ @session_start เข้าไปก็ได้ครับ

@ob_start();
@session_start();


ประวัติการแก้ไข
2011-08-11 13:51:55
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 13:50:27 By : l3luEbirD
 


 

No. 15



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



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

ตอบความคิดเห็นที่ : 14 เขียนโดย : l3luEbirD เมื่อวันที่ 2011-08-11 13:50:27
รายละเอียดของการตอบ ::
เหมือนเดิมครับ หรือว่าเป็นกับที่ผมใช้ notpad++ ครับเนี่ย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 14:05:17 By : fogza
 


 

No. 16



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



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

ผมเจอโจทย์แล้วครับบบบบบ !!!!.....
มันแอบอยู่นี่เอง พอดีลองใช้ netbean เปิดดูนะครับ เห็นจะ จะเลย!


หาวิธีแก้ หาไปหามาเจอบทความนี้ครับ session มันไม่ยอมทำงานครับ รบกวนแนะนำด้วยครับ seach ข้อมูลหลายที่แล้วยังแก้ไม่ได้
เดี๋ยวจะใช้ eclip ดีกว่า ใช้ notpad++ แล้วเป็นแบบนี้เซ็งเลยครับ

ขอบคุณมากๆ ครับคุณ l3luEbirD และท่านอื่นๆ ที่อุส่าช่วยเหลือกันอย่างเต็มที่ เดี๋ยไว้ถ้าทำได้แล้วจะมาบอกอีกทีครับ


ประวัติการแก้ไข
2011-08-11 14:16:17
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 14:15:25 By : fogza
 


 

No. 17



โพสกระทู้ ( 2,249 )
บทความ ( 5 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

notepad++ เวลาเลือก Encoding ให้เลือกแบบ Encoding in UTF-8 without bom ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 14:24:29 By : Manussawin
 


 

No. 18



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



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

ตอบความคิดเห็นที่ : 17 เขียนโดย : Manussawin เมื่อวันที่ 2011-08-11 14:24:29
รายละเอียดของการตอบ ::
ขอบคุณครับ
ตอนนี้เข้าไปหน้า admin_page.php ได้แล้วครับ ^.^
แต่ว่า หน้า check_login.php มันขึ้นเออเร่อแบบนี้ครับ
Code (PHP)
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\tourthai\check_login.php:1) in C:\AppServ\www\tourthai\check_login.php on line 2
ยินดีต้อนรับ onemanf
ระบบกำลังพาท่านไปยังหน้าควบคุมการทำงาน...

แต่ว่ามันก็ไปทำงานหน้า admin_page.php ได้นะครับ
ปล. ผมเปลี่ยนเป็น แบบ Encoding in UTF-8 without bom หมดแล้วครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 14:49:10 By : fogza
 


 

No. 19



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

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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

ไม่เกี่ยวกับ Encoding ครับ
ปกติผมใช้

ob_start();
session_start();

แล้วเอาไว้บนหัวของทุกๆหน้าครับ

แต่ถ้าหน้าไหนถูก Include มา ก็ไม่ต้องใส่ครับ
เช่น

A.php include B.php มาใช้งาน

A.php บนสุดต้องใส่
ob_start();
session_start();

แต่ B.php ไม่ต้องครับ

Ex.File A.php
A.php
ob_start();
session_start();

include("B.php");

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-11 15:10:43 By : mangkunzo
 

   

ค้นหาข้อมูล


   
 

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