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 > ขอถามเกี่ยวกับการลบ cookie ทีครับ พอดีลบ cookie แล้ว แต่จะเปลี่ยนข้อมูลใน mysql โดยเทียบกับตัวแปร cookie ยังไง?



 

ขอถามเกี่ยวกับการลบ cookie ทีครับ พอดีลบ cookie แล้ว แต่จะเปลี่ยนข้อมูลใน mysql โดยเทียบกับตัวแปร cookie ยังไง?

 



Topic : 064650



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



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



คือทุกครั้งที่มีการ login เข้ามา ผมจะทำการเก็บตัวเลข 1 ในฟิลด์ที่ชื่อ online

ทีนี้จะลบ cookie แล้วหลังจากลบเสร็จ จะให้ Update ฟิลด์ online = 0 แต่ว่ามันต้องใช้ cookie ในการอ้างอิงค์ ซึ่งก่อนหน้านี้ cookie มันลบไปแล้ว ต้องทำยังไงถึงจะ update ฐานข้อมูลได้หรอครับ

ผมดูตามบทเรียนนี้ PHP Cookies ($_COOKIE,$HTTP_COOKIE_VARS) เค้าจะประการลบ cookie ก่อนเลย
Code (PHP)
<?
[color=green]ob_start();
setcookie("strName");
setcookie("strSiteName");
?>
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>

</body>
</html>
<?
[color=green]ob_end_flush();
?>

ผมเข้าใจว่า มันลบ cookie ไปแล้ว เลยทำให้ตัวแปร cookie ไม่มีค่าไปอ้างอิงค์ตอนจะอัพเดทฐานข้อมูล แล้วเราจะทำยังไงดีครับ
ด้านล่างนี้คือโค้ดที่ผมเขียนขึ้น ไม่ทราบว่าผมสร้าง cookie ถูกไหม๋ครับ
check_login
	$username = trim($_POST['username']);
	$password = trim($_POST['password']);
	$lifttime = $_POST['chk'];
	include("config.inc.php");
	$strMember = "SELECT * FROM member WHERE username = '$username'";
	$memberQuery = mysql_query($strMember) or die(mysql_error());
	$objMember = mysql_fetch_assoc($memberQuery);

	if($objMember['password'] != $password){
		echo "ไอดี หรือรหัสผ่านไม่ถูกต้อง กรุณาเข้าลองใหม่อีกครั้ง...";
		?>
			<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
		<?
	} 
	else {
		//ถ้ามีการคลิก checkbox ใช้งานตลอด จะทำการเซต cookie ให้ใช้งานได้ 1 ปี
		if($lefttime !== ""){ 			
			setcookie("userid",$objMember['userid'],time()+3600*24*356); 
			setcookie("status",$objMember['status'],time()+3600*24*356);
		}
		else { //ถ้าไม่คลิก checkbox จะทำการเซ็ต cookie ให้ใช้งานได้ 1 นาที
			setcookie("userid",$objMember['userid'],time()+60);
			setcookie("status",$objMember['userid'],time()+60);
		}
}
?>


logout.php
<?
ob_start();
setcookie('userid');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

	<title>Tour THAI | แหล่งข้อมูลท่องเที่ยวไทย</title>
</head>
<body>
<?
	include("config.inc.php");
	$strOnline = "UPDATE member SET online = '0' WHERE user_id = '".$_COOKIE['userid']."' ";
	$onlineQuery = mysql_query($strOnline) or die (mysql_error());

	if(isset($onlineQuery)){
		echo "คุณออกจากระบบเรียบร้อยแล้ว...";
	}
	else {
		echo "ผิดพลาด!... ไม่สามารถออกจากระบบได้";
	}
?>
	<META HTTP-EQUIV="Refresh" CONTENT="3;URL=index.php">
</body>
</html>
<?
ob_end_flush();
?>




Tag : PHP, MySQL









ประวัติการแก้ไข
2011-08-13 00:07:15
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-08-12 23:57:49 By : fogza View : 5892 Reply : 7
 

 

No. 1



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



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


ก็อัพเดทก่อน ลบ cookie จิครับ เอาคำสั่งอัพเดทไว้ข้างบน คำสั่งลบ cookie

คำสั่งลบ cookie ไว้ล่างสุดเลย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-13 00:27:40 By : tomrambo
 


 

No. 2



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



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

ตอบความคิดเห็นที่ : 1 เขียนโดย : tomrambo เมื่อวันที่ 2011-08-13 00:27:40
รายละเอียดของการตอบ ::
จำเป็นต้องประกาศ ob_start(); กับ ob_end_flush(); ไหม๋ครับ คือผมสร้าง cookie ไม่ได้ตั้งแต่หน้า check_login.php แล้วครับ
จำเป็นไหม๋ครับที่คำสั่งสร้าง cookie เอาไว้ข้างบ้างสุด?

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

 

No. 3



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



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


หากมีการส่ง output ออกมาให้ client ก่อนการสร้าง cookie ก็ต้องสั่ง ประกาศ ob_start(); ด้วยครับ

เพื่อสั่งให้ server ว่าให้รวบรวมเก็บไว้ก่อนอย่าเพิ่งส่ง output ใดๆมาที่ client จนกว่าจะ process จนถึงบรรทัดสุดท้าย

โดยไม่ติด Error แล้วค่อยส่ง มาทีเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-13 00:39:28 By : tomrambo
 


 

No. 4



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : tomrambo เมื่อวันที่ 2011-08-13 00:39:28
รายละเอียดของการตอบ ::
ช่วยดูให้ทีครับ ทำไมสร้างไม่ได้ซะทีครับ
check_login.php
<?	ob_start();
	$username = trim($_POST['username']);
	$password = trim($_POST['password']);
	
	include("config.inc.php");
	$strMember = "SELECT * FROM member WHERE username = '$username'";
	$memberQuery = mysql_query($strMember) or die(mysql_error());
	$objMember = mysql_fetch_assoc($memberQuery);

	if($objMember['password'] != $password){
		echo "ไอดี หรือรหัสผ่านไม่ถูกต้อง กรุณาเข้าลองใหม่อีกครั้ง...";
		?>
			<META HTTP-EQUIV="Refresh" CONTENT="3;URL=login.php">
		<?
	} 
	else {
		if(isset($_POST['chk'])){ //ถ้ามีการคลิก checkbox ใช้งานตลอด จะทำการเซต cookie ให้ใช้งานได้ 1 ปี		
		setcookie("userid",$objMember['user_id'],time()+3600*24*356); 
		setcookie("status",$objMember['status'],time()+3600*24*356);
		}
		else { //ถ้าไม่คลิก checkbox จะทำการเซ็ต cookie ให้ใช้งานได้ 1 นาที
			setcookie("userid",$objMember['user_id'],time()+60);
			setcookie("status",$objMember['status'],time()+60);;
		}

		if(isset($_COOKIE['userid'])){
			//เปลี่ยนเป็นสถานะออนไลน์ online = 1
			$strOnline = "UPDATE member SET online = '1' WHERE username = '$username'";
			$onlineQuery = mysql_query($strOnline) or die (mysql_error());

			if(isset($onlineQuery) && $objMember["online"] == "1"){
				echo "<SCRIPT>alert('คุณไม่สามารถเข้าสู่ระบบได้ :: ".$objMember['nickname']." :: กำลังออนไลน์อยู่ ');history.back(-1);</script>";
				exit();
			} 
			elseif($objMember["online"] == "0") {

				if($objMember["status"] == "admin"){
					echo $_COOKIE['userid'];
					echo "ยินดีต้อนรับคุณ<b>[ ".$objMember['nickname']." ]</b><br>กรุณารอซักครู่ ระบบกำลังดำเนินการ... ";
					?>
					<META HTTP-EQUIV="Refresh" CONTENT="5;URL=admin_page.php">
					<?
					exit();
				} 
				else {
					echo "ยินดีต้อนรับคุณ<b>[ ".$objMember['nickname']." ]</b><br>กรุณารอซักครู่ ระบบกำลังดำนินการ... ";
					?>
					<META HTTP-EQUIV="Refresh" CONTENT="5;URL=index.php">
					<?
					exit();
				}
			}
			mysql_close();
		}
		else {
			echo "<SCRIPT>alert('ผิดพลาด!... ไม่สามารถสร้าง COOKIE ได้');history.back(-1);</script>";
			exit();
		}
	}
	ob_end_flush();
?>


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


 

No. 5



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



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


if(isset($_COOKIE['userid'])){

//เปลี่ยนเป็นสถานะออนไลน์ online = 1

$strOnline = "UPDATE member SET online = '1' WHERE username = '$username'";


ตรง $_COOKIE['userid']

cookie เมื่อสร้างแล้ว จะยังไม่สามารถใช้ได้เลยทันทีครับ ต้องมีการ refresh หน้าก่อนครับถึงจะเรียกใช้ได้

นี่แหละครับข้อเสียของ cookie อีกอย่างนึง ซึ่งต่างจาก session สร้างปุ๊บเรียกใช้ได้ทันทีในหน้าเดียวกัน


ประวัติการแก้ไข
2011-08-13 00:57:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-13 00:56:59 By : tomrambo
 


 

No. 6



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



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

ตอบความคิดเห็นที่ : 5 เขียนโดย : tomrambo เมื่อวันที่ 2011-08-13 00:56:59
รายละเอียดของการตอบ ::
อ้าวหรอครับ!

อย่างงี้จะทำยังไงดีครับเนี่ย


ทำได้แล้วครับ พอดีตอนแรกๆๆๆ เลย ผมไปใส่ค่า value ผิด
setcookie(var,value,time)

ข้อมูลจากฐานข้อมูลผมเป็น $objMember[user_id]
แต่ผมไปใส่แบบนี้ setcookie("userid",$objMember[userid],time()+3600*24*356);

ปล่อยไก่อีกแล้วครับท่าน



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


 

No. 7



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



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


ก็ต้อง เช็คเงื่อนไขตรงที่มันสร้างเลยครับ

if (!setcookie("userid",$objMember['user_id'],time()+3600*24*356)) {
echo "<SCRIPT>alert('ผิดพลาด!... ไม่สามารถสร้าง COOKIE ได้');history.back(-1);</script>";
exit();
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-13 01:18:10 By : tomrambo
 

   

ค้นหาข้อมูล


   
 

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