|
|
|
ขอถามเกี่ยวกับการลบ cookie ทีครับ พอดีลบ cookie แล้ว แต่จะเปลี่ยนข้อมูลใน mysql โดยเทียบกับตัวแปร cookie ยังไง? |
|
|
|
|
|
|
|
คือทุกครั้งที่มีการ 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
|
|
|
|
|
Date :
2011-08-12 23:57:49 |
By :
fogza |
View :
6014 |
Reply :
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็อัพเดทก่อน ลบ cookie จิครับ เอาคำสั่งอัพเดทไว้ข้างบน คำสั่งลบ cookie
คำสั่งลบ cookie ไว้ล่างสุดเลย
|
|
|
|
|
Date :
2011-08-13 00:27:40 |
By :
tomrambo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หากมีการส่ง output ออกมาให้ client ก่อนการสร้าง cookie ก็ต้องสั่ง ประกาศ ob_start(); ด้วยครับ
เพื่อสั่งให้ server ว่าให้รวบรวมเก็บไว้ก่อนอย่าเพิ่งส่ง output ใดๆมาที่ client จนกว่าจะ process จนถึงบรรทัดสุดท้าย
โดยไม่ติด Error แล้วค่อยส่ง มาทีเดียว
|
|
|
|
|
Date :
2011-08-13 00:39:28 |
By :
tomrambo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|