session timeout เมื่อหมดเวลาให้กลับไปที่หน้าแรก

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา session timeout เมื่อหมดเวลาให้กลับไปที่หน้าแรก

session timeout เมื่อหมดเวลาให้กลับไปที่หน้าแรก
จากตัวอย่าง
http://www.vijayjoshi.org/2008/12/08/automatic-session-timeoutlogout-using-php-and-ajax/

โค้ด 

session_start();
if(!isset($_SESSION['isLoggedIn']) || !($_SESSION['isLoggedIn']))
{
	//code for authentication comes here
	//ASSUME USER IS VALID
	$_SESSION['isLoggedIn'] = true;
	/////////////////////////////////////////
	$_SESSION['timeOut'] = 5;
	$logged = time();
	$_SESSION['loggedAt']= $logged;
	showLoggedIn();
}
else
{
	$hasSessionExpired = checkIfTimedOut();
	if($hasSessionExpired)
	{
		session_unset();
		header("Location:index.html");
		exit;
	}
	else
	{
		$_SESSION['loggedAt']= time();// update last accessed time
		showLoggedIn();
	}

}


คือเงื่อนไขมันจะโชว์ข้อมูลใน function showLoggedIn()
แต่ถ้าต้องการโชว์ ทั้งหน้า โดยไม่ต้องสร้าง
function จะทำไง
<html>

<head></head>
<body>
....

</body>
</html>


Bsaranya 223.204.255.xxx 26-06-2015 13:26:53

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ถ้าใช้ ajax ก็ใช้ jquery กับฟังก์ชั่นกำหนดอายุตัวแปร session น่าจะได้
แต่ลองอธิบายว่า ตัวแปร session หมดอายุเมือ่ใดมาดูก่อน
เช่น นับแต่ล็อกอินครั้งแรก พอผ่านไป x นาที ให้ล็อกเอาท์และไปหน้าล็อกอิน
หรือ ล็อกอินหลังจากไม่ได้ใช้งานไปแล้ว x นาที เช่น ล็อกอิน 12.00 
ใช้งานล่าสุด 12.15 จะล็อกเอาท์และไปหน้าล็กอินอัตโนมัติเมื่อเวลา 12.15 x อะไรแนวนี้


ninenik 180.183.136.xxx 26-06-2015
 ความคิดเห็นที่ 2
คือถ้าเข้ามาในหน้า manageStock.php
เข้ามาในหน้านี้ session หมดอายุ ภายใน10นาที
ถ้าเกินนี้ ก็ให้กลับไปที่หน้า login 
หน้า 
manageStock.php มีข้อมูลเยอะอยู่แล้ว 
ไม่อยากจะสร้างไว้ใน function ตามตัวอย่าง
function showLoggedIn()<?php

session_start();
if(!isset($_SESSION['isLoggedIn']) || !($_SESSION['isLoggedIn']))
{
	//code for authentication comes here
	//ASSUME USER IS VALID
	$_SESSION['isLoggedIn'] = true;
	/////////////////////////////////////////
	$_SESSION['timeOut'] = 5;
	$logged = time();
	$_SESSION['loggedAt']= $logged;	
	showLoggedIn();
}
else
{
	require '../timeCheck.php';
	$hasSessionExpired = checkIfTimedOut();
	if($hasSessionExpired)
	{
		session_unset();
		header("Location:index.html");
		exit;
	}
	else
	{
		$_SESSION['loggedAt']= time();// update last accessed time
		showLoggedIn();
	}

}
	function showLoggedIn()
	{
		echo'<html>';
		echo'<head>';
		echo'<script type="text/javascript" src="../ajax.js"></script>';
		echo'</head>';
		echo'<body>';
			echo'<p>';
				echo'Page 1. User is logged in currently.Timeout has been set to 5 seconds. If you stay inactive for more then 5 seconds, you will be logged out automatically and redirected to home page.';
			echo'</p>';
			echo'<br/>';
			echo'<p><a href="second.php">Go to second page</a></p>';
			echo'<br/><br/><br/><p><a href="">Back to article</a></p>';
		echo'</body>';
		echo'</html>';
	}
	


bsaranya 223.204.255.xxx 26-06-2015 14:35
 ความคิดเห็นที่ 3
เปลี่ยนเป็น redirect ไปหน้าล็อกอินแทนดู
เช่น

<?php
if(!isset($_SESSION['isLoggedIn']) || !($_SESSION['isLoggedIn']))  
{  
    //code for authentication comes here  
    //ASSUME USER IS VALID  
    $_SESSION['isLoggedIn'] = true;  
    /////////////////////////////////////////  
    $_SESSION['timeOut'] = 5;  
    $logged = time();  
    $_SESSION['loggedAt']= $logged;   
   echo '<meta http-equiv="refresh" content="0;URL=login.php" />';
   exit;
}  
?>


ninenik 180.183.136.xxx 26-06-2015
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ