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 > ดูให้หน่อยครับ ทีแรกใช้ session ก็ได้นะครับ แต่พอเปลี่ยนมาใช้ coockie แล้ว ไม่ได้พอล็อกอินถูก ก้ไม่



 

ดูให้หน่อยครับ ทีแรกใช้ session ก็ได้นะครับ แต่พอเปลี่ยนมาใช้ coockie แล้ว ไม่ได้พอล็อกอินถูก ก้ไม่

 



Topic : 042732



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

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

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




ทีแรกใช้ session ก็ได้นะครับ แต่พอเปลี่ยนมาใช้ coockie แล้ว ไม่ได้
พอล็อกอินถูก ก้ไม่ทำงานอะไรต่อ งงงง

Code (PHP)
--------- login.php ----------
<?
	session_start();
	require("login_process.php");
?>
<form id="frmLogin" name="frmLogin" method="post" action="login.php" enctype="multipart/form-data" onsubmit="return check_data_login()">
	<input type="text" name="u_name" id="u_name" size="30" /><br/>
    <input type="password" name="password" id="password" size="31" /><br/>
    <input type="checkbox" name="saveuser" id="saveuser" <?=$svusr?> />จำฉันไว้ในเครื่อง<br/>
    <input type="submit" name="Submit" id="Submit" value="    OK    " size="30" width="30"  onclick="JavaScript:chkUsername();" />
</form>

--------- login_process.php --------
<?php
	session_start();
	require("includes/config_login.inc.php");
	$username = $_REQUEST['u_name'];
	$password = $_REQUEST['password'];	
	$svusr = $_REQUEST['saveuser'];
	
	if(isset($_REQUEST[$cook_nm])){	
		$svusr = 'on';		
	}else{
		$focus = "document.frmLogin.u_name.focus();";
	}
	if((!empty($username)) and (!empty($password)) ){
		$username = trim($_REQUEST['u_name']);		
		$password = $_REQUEST['password'];		
		
		require("includes/connection.php");
		mysql_select_db($db_name);
		$sql = "SELECT user_name,password,last_log FROM user WHERE user_name='$username'";
		$db_query = mysql_query($sql);
		$result = mysql_fetch_array($db_query);
		
		if(!$result){
			// echo "55";
			echo "<center><br><img src=\"../image/security/stop_login.png\"/><br><br><h3>การ Login ผิดพลาด</h3>การณาตรวจสอบ Username และ Password</center>";
			echo "<hr><br><br><center><a href=./>Login </a></center>";
			exit();
		}
		if(md5(trim($password)) == trim($result['password'])){
			//	$_SESSION['ses_user']=$username;
			//	$_SESSION['last_log'] = $result['last_log'];

			$_COOKIE['cook_user'] = $username;
			$_COOKIE['last_log'] = $result['last_log'];
			
			if($_REQUEST['saveuser']=="checked"){
				setcookie($cook_nm,$username,time()+$cook_time);
			}else{
				setcookie($cook_nm,"",time());
			} 
			mysql_query("UPDATE user SET last_log=date_now WHERE user_name='$username' ");
			mysql_query("UPDATE user SET date_now='$now' WHERE user_name='$username' ");
	
?>
	<html>
		<title>Login...</title>
   		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    	<meta http-equiv="refresh" content="3; url=index.php" >
		<center><br><br><img src="../image/loging_in.jpg" ><br><br>
    	<b>รอสักครู่ กำลังเข้าสู่ระบบ...</b></center>
	</html>
<?
	}else{ 
			// echo "55";
			exit();
		}
	} 
?>

-------------- auth.inc.php --------------
<?
require("config_login.inc.php");
	if(!isset($_COOKIE['cook_user'])){
		if(!isset($_REQUEST[$cook_nm])){
			header("Location: ../login.php?");
			exit;
		}else{
			require("connection.php");
			mysql_select_db($db_name);
			$db_query = mysql_query("SELECT user_name,password,last_log FROM user WHERE user_name='$_COOKIE[$cook_nm]'");
			$result = mysql_fetch_array($db_query);
			
			if(!$result){
				header("Location: ../login.php");
				exit;
			}
			
			if($_COOKIE[$cook_pw] != $result['password']){
				header("Location: ../login.php");
				exit;
				$_COOKIE['cook_user'] = $_COOKIE['$cook_nm'];
				$_COOKIE['last_log'] = $_COOKIE['last_log'];
			}
		}
	}
?>

------- config_login.inc.php -------------
<?php
	error_reporting(E_ALL ^ E_NOTICE);  // ????????? Error
	ob_start();	
	
	$cook_nm = 'login_26br';	
	$cook_pw = 'log_65pw';		
	$cook_time = 3600*24*6;

	require_once('connection.php');	

	$bkk = mktime(gmdate("H")+7,gmdate("i")+0,gmdate("s"),gmdate("m"),gmdate("d"),gmdate("Y"));
	$datetimeformat = "j/m/y - H:i";
	$now = date($datetimeformat,$bkk);
?>




Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-05-11 19:35:10 By : t-monroe View : 1085 Reply : 3
 

 

No. 1



โพสกระทู้ ( 1,242 )
บทความ ( 13 )

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

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

เท่าที่ดูน่าจะเกิดจาก การเก็บไฟล์นะครับ

session เป็นตัวแปรที่ประกาศแล้ว ทุกๆ ไฟล์ใน server จะเรียกใช้งานได้ แต่ cookie รู้สึกว่าจะต้องเป็น file ที่อยู่ path เดียวกันจึงจะมองเห็น

ตอนนี้ไฟล์ สร้าง cookie จะอยู่ใน include แต่ ไฟล์ที่เรียกใช้งานจะอยู่ด้านนอก เลยทำให้มองไม่เห็น ลองย้ายไปข้างนอกใน path เดียวกันดูนะครับ

พอดีไม่ได้เล่่น kookie นานแล้วเลยตอบได้แค่นี้ก่อน รอท่านอื่นมาตอบต่อละกันนะครับ






Date : 2010-05-11 20:07:10 By : DownsTream
 


 

No. 2

Guest


ปรกติ ผมจะทำสองระบบ ใช้ได้ทั้ง เฉพาะ session และ cookie คือ ไม่จำค่าล๊อกอินไว้ก็ได้ในบราวเซอร์ หรือจำไว้ก็ได้(cookie)

ลองตรวจสอบให้ดีนะครับ อย่าลืมว่า cookie เป็นตัวส่งมาจากบราวเซอร์ดังนั้นอ php ปัจจุบันมัน escape string ให้ด้วยนะคับ

อีกอย่างจากโค้ด auth.php ผมดูแล้วเหมือนว่าคุณจะใส่ ตำแ หน่งของโค้ดผิดนะครับ
จริงๆ น่าจะ

if( ! isset($_COOKIE['cook_user']))
{
header(xxx);
}
else
{
// check here
}
แต่โค้ดคุณเช็ค ใน ตอนที่ไม่มีคุ๊กกี้ - -


เอาตัวอย่างที่ผมทำมาให้ดูหน่อยก็แล้วกัน คือผมตรวจสอบจาก session หมดครับ เว้นครั้งแรกที่เข้ามา หากว่ามี cookie อยู่ แต่ไม่มี session ก็ให้สร้าง เซสชั่นขึ้นมา ทีนี้ก็ตรวจสอบเพียงแค่ session
(โค้ดนี้ผมไม่ได้ทำระบบ security นะครับ ไม่ได้เข้ารหัสรหัสผ่าน ^^ (โปรเจกต์ นศ.) มีผู้ใช้หลายประเภทครับ)
Code (PHP)
/**
 * จัดการเรื่อง session และ cookie สำหรับผู้ใช้ระบบ
 */
if ($_COOKIE['user'] AND ! $_SESSION['user'])
{
	try
	{
		$temp = get_magic_quotes_gpc() ? unserialize(stripslashes($_COOKIE['user'])) : unserialize($_COOKIE['user']);
		
		// สร้าง sql
		if ($temp['type'] === 'member')
		{
			$sql = "SELECT member_id, member_uname, member_upass FROM member WHERE member_uname='".$temp['uname']."' AND member_upass='".$temp['upass']."' AND member_status='Y'";
		}
		elseif ($temp['type'] === 'admin')
		{
			$sql = "SELECT admin_id, admin_uname, admin_upass FROM admin WHERE admin_uname='".$temp['uname']."' AND admin_upass='".$temp['upass']."' AND admin_status='Y'";
		}
		elseif ($temp['type'] === 'hotel')
		{
			$sql = "SELECT hotel_id, hotel_uname, hotel_upass FROM hotel WHERE hotel_uname='".$temp['uname']."' AND hotel_upass='".$temp['upass']."' AND hotel_status='Y'";
		}
		else
		{
			throw new Exception('cookie ผิดพลาด');
		}
		
		// ตรวจสอบผู้ใช้
		$query = mysql_query($sql);
		if ($row = mysql_fetch_array($query))
		{
			$row = Util::stripslashes_all($row);
			
			$arr = array(
				'id'          => $row[0],
				'uname'   => $row[1],
				'upass'     => $row[2],
				'type'      => $temp['type']
			);
			
			// ตั้งค่า session user 
			$_SESSION['user'] = $arr;
			
			// ต่อเวลา cookie
			setcookie('user', serialize($_SESSION['user']), (time() + $config['cookie_expire']));
		}
	}
	catch (Exception $ex)
	{}
}
elseif ($_COOKIE['user'] AND $_SESSION['user'])
{
	// ต่อเวลา cookie
	setcookie('user', serialize($_SESSION['user']), (time() + $config['cookie_expire']));
}



ให้ดูเล่นๆ อีกอันครับ (เป็นโปรเจกต์ส่วนตัว ใช้เฟรมเวอร์คครับ กำลังดองอยู่ ^^) โค้ดอาจอ่านไม่ค่อยเข้าใจ หลักการทำงานเดียวกันแหละคับ
(ไม่ได้ใช้ module เสริมต่างๆ เช่น auth หรือ validate เพราะเพิ่งศึกษา)


ส่วน Logging คอนโทรลเลอร์
public function action_logging()
	{
		if ( ! empty($_POST['uname']) AND ! empty($_POST['upass']))
		{
			$model = new Model_Admin;
			$is_admin = $model->check_admin($_POST['uname'], md5($_POST['upass']));
			
			if ($is_admin)
			{
				Session::instance()
					->set('admin_uname', $_POST['uname'])
					->set('admin_upass', md5($_POST['upass']));
				
				if ( ! empty($_POST['remember']))
				{
					Cookie::set('admin_uname', $_POST['uname'], User::COOKIE_EXPIRE);
					Cookie::set('admin_upass', md5($_POST['upass']), User::COOKIE_EXPIRE);
				}
				
				$this->request->redirect(URL::site('manage'));
				return;
			}
		}
		
		$this->action_index('Username หรือ Passord ไม่ถูกต้อง');
	}


ส่วน โมเดล
class Model_Admin extends Kohana_Model
{
	public function check_admin($uname, $upass)
	{
		$sql = sprintf(
			"SELECT * FROM admin ".
			"WHERE admin_uname = %s ".
			"AND admin_upass = %s",
			$this->_db->escape($uname),
			$this->_db->escape(md5($upass))
		);
		
		$rs = $this->_db->query(Database::SELECT, $sql, FALSE);
		
		return $rs->count() ? TRUE : FALSE;
	}
	
}


พวก static ฟังชั่นตรวจสอบ สถานะ
class User
{
	// 15 days seconds
	const COOKIE_EXPIRE = 1296000;
		
	public static function is_admin()
	{
		if ( ! is_null(Session::instance()->get('admin_uname')) AND ! is_null(Session::instance()->get('admin_upass')))
		{
			return TRUE;
		}
		elseif ( ! is_null(Cookie::get('admin_uname')) AND ! is_null(Cookie::get('admin_upass')))
		{
			$model = new Model_Admin;
				
			$is_admin = $model->check_admin(Cookie::get('admin_uname'), Cookie::get('admin_upass'));
			if ($is_admin)
			{
				Session::instance()->set('admin_uname', Cookie::get('admin_uanme'));
				Session::instance()->set('admin_upass', Cookie::get('admin_upass'));
				
				return TRUE;
			}
		}
		
		return FALSE;	
	}
	
	public static function add_admin_cookie_time()
	{
		if ( ! is_null(Cookie::get('admin_uname')) AND ! is_null(Cookie::get('admin_upass')))
		{
			Cookie::set('admin_uname', Cookie::get('admin_uname'), User::COOKIE_EXPIRE);
			Cookie::set('admin_upass', Cookie::get('admin_upass'), User::COOKIE_EXPIRE);
		}
	}
	
	public static function clear_admin_cookie_session()
	{
		// delete cookie
		Cookie::delete('admin_uname');
		Cookie::delete('admin_upass');
		
		// delete session
		Session::instance()
			->delete('admin_uname')
			->delete('admin_upass');
	}
}



http://gunner.freetzi.com
Date : 2010-05-11 21:16:51 By : เอี่ยว ^^
 

 

No. 3



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

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

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


ขอบคุณครับ เด่วลองดูครับ... ถ้าไม่ได้พรุ่งนี้มาถามใหม่
Date : 2010-05-12 11:38:41 By : t-monroe
 

   

ค้นหาข้อมูล


   
 

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