|
|
|
รบกวนชี้แนะเรื่อง ระบบ login แบบกำหนดเวลาการคงอยู่ในระบบ ครับ รายละเอียดด้านใน |
|
|
|
|
|
|
|
คือตอนนี้ทำระบบ login ไว้ แนวๆนี้ครับ คือมีการห้าม login ซ้ำกัน https://www.thaicreate.com/community/php-mysql-login-duplicate-session.html
แต่ต้องการให้มีการตั้งเวลาที่ login ทิ้งไว้อ่ะครับ ให้พอถึงเวลาที่กำหนดแล้วจะ logout ออก
จะคล้ายๆแบบนี้หรือเปล่าครับ http://www.ninenik.com/content.php?arti_id=184
แล้วผมต้องแปลงยังไงหรอครับ
code ที่เขียนไว้
checklogin.php
<?php
//*** เชื่อมต่อ DB ***//
require dirname('connect.php') . '/connections/connect.php';
?>
<?php
session_start();
$strSQL = "SELECT * FROM employee WHERE emp_user = '".mysqli_real_escape_string($con,$_POST['emp_user'])."'
and emp_pass = '".mysqli_real_escape_string($con,$_POST['emp_pass'])."'";
$objQuery = mysqli_query($con,$strSQL);
$objResult = mysqli_fetch_array($objQuery,MYSQLI_ASSOC);
if(!$objResult){
//*** เช็ค username,password ***//
echo "<script>alert('Username and Password Incorrect!');
window.location='login.php';</script>";
}else{
if($objResult["login_status"] == "1")
{
echo "".mysqli_real_escape_string($con,$_POST['emp_user'])." Exists login!";
exit();
}
else
{
//*** Update Status Login
$sql = "UPDATE employee SET login_status = '1' , last_update = NOW() WHERE emp_user = '".$objResult["emp_user"]."' ";
$query = mysqli_query($con,$sql);
//*** Session
$_SESSION["emp_user"] = $objResult["emp_user"];
$_SESSION["emp_status"] = $objResult["emp_status"];
session_write_close();
//*** Go to Main page
header("location:index.php");
}
}
mysqli_close($con);
?>
Tag : PHP, MySQL, HTML/CSS, JavaScript
|
ประวัติการแก้ไข 2015-10-20 01:57:36 2015-10-20 09:11:52
|
|
|
|
|
Date :
2015-10-20 01:09:05 |
By :
zadstoms |
View :
2269 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สอบถามเพิ่มเติมครับ พึ่งไล่เจอ ถ้าผม require dirname('connect.php') . '/connections/connect.php'; มานี่ code ถูกต้องไหมครับ เพราะเห็นว่าในตัวอย่างมี
ini_set('display_errors', 1);
error_reporting(~0);
อยู่ด้วย
connect.php
<?php
define('DB_HOST','......');
define('DB_NAME','.....');
define('DB_USER','.......');
define('DB_PASSWORD','......');
$con = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysqli_error());
$db = mysqli_select_db($con,DB_NAME);
mysqli_set_charset($con, "utf8");
//*** Reject user not online
$intRejectTime = 20; // Minute
$sql = "UPDATE employee SET login_status = '0', last_update = '0000-00-00 00:00:00' WHERE 1 AND DATE_ADD(last_update, INTERVAL $intRejectTime MINUTE) <= NOW() ";
$query = mysqli_query($con,$sql);
?>
|
ประวัติการแก้ไข 2015-10-20 01:50:01
|
|
|
|
Date :
2015-10-20 01:49:37 |
By :
zadstoms |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จริงๆ ก็ไม่อยากแนะนำให้ใช้
เพราะมันจำเป็นต้องเก็บ ค่าการ login อะไรต่างๆ ไว้เมื่อ session หายไป
ถ้าเล่นที่เครื่องสาธารณ อาจจะไม่ปลอดภัย
ส่วนวิธีการก็ใช้ cookie ช่วยครับ
Code (PHP)
<?php
session_start();
$in_ss = isset($_SESSION['Login']);
$in_ck=isset($_COOKIE['Login']);
if(!($in_ss || $in_ck)) header('location: login.php');
if(!$in_ss){
if( $_COOKIE['Login']['auto'] ){
//เอาข้อมูล cookie มา login กรณีกำหนดให้ auto login ( keep me login );
}else header('location: Login.php');
}
โดยส่วนของการ login.php
Code (PHP)
<?php
if( isset($_POST['login']){
if( $rs=customer_get_from_db($_POST['Email'], $_POST['psw'])){
$_SESSION['Login']=$rs;
if(isset($_POST['auto'])){
$rs['auto']=1
setcookie("Login", $rs, time()+(3*3600); // เก็บcookie 3 ชม.
}
}
}
?>
<form method="post'>
Email <input name='Email' type="text"><br>
Password <input name='psw' type="passowrd"><br>
keep me login <input type='checkbox' name='auto'>
<input type="submit" name="login" >Login</button>
</form>
ส่วนฟังก์ชั่น customer_get_from_db() ก็โมฯ เอาเองครับ คงไม่ยาก
โดยส่ง result ที่จำเป็น ออกมาให้กับ cookie กับ session
ปล. อาจมีหลายขั้นตอนที่หลงลืมไป โมฯสด ไม่ได้เทสต์
|
ประวัติการแก้ไข 2015-10-20 08:38:55
|
|
|
|
Date :
2015-10-20 08:36:12 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ ระบบมัน update สถานะเป็น 0 ตามเวลาที่กำหนดจริง แต่ใน web brower มันยังคง login ค้างไว้อยู่ครับ คือต้องการให้มันเคลียร์การ login ใน web brower ทิ้งไปด้วยอ่ะครับ รบกวนชี้แนะครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2015-10-20 09:14:00 |
By :
zadstoms |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่วน html header ก็เพิ่ม tag meta มันจะ refresh ไปหน้า login อัตโนมัต เมื่อถึงเวลา
<meta http-equiv="refresh" content="10200; ,URL=http://www.yourdomain/login.php">
|
|
|
|
|
Date :
2015-10-20 11:19:56 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จาก คห 7 ในไฟล์ login.php
ให้เคลียร์ session และ status ค่าต่างๆก่อน
ค่อยเข้าสู่ระบบ login
|
|
|
|
|
Date :
2015-10-21 10:16:55 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|