การติดตาม user ใน ระบบ login เพื่อตรวจสอบความคงอยู่ของ user
คือที่ผมบอกข้างบนอะครับ โค้ดมันมีดังข้างล่างนี้อะครับ ซึ่งเมื่อผมทำการล็อกอินเข้าไปแล้วมันก็เข้าได้นะครับ แต่พอผมไปคลิกลิงค์ที่เมนูด้านข้างซึ่งลิงค์ไปยัง choose2.php มันก็ให้ผมล็อกอินใหม่ครับ อย่างนี้ผมต้องทำยังไงอะครับ ซึ่งโดยที่ผมอยากจะให้เมื่อล็อกอินเข้าไปแล้วสามารถคลิกลิงค์ต่างๆในเมนูด้านข้างเข้าไปดูได้เลย (ซึ่งในกรณีตอนที่ยังไม่ได้ล็อกอินไม่สามารถเข้าไปดูได้ โดยที่จะต้องทำการล็อกอินก่อนเสมอครับ) ช่วยบอกรายละเอียดให้หน่อยนะครับเพราะว่าไม่เข้าใจจริงๆ ครับ ขอบคุณมากๆ นะครับ
อันนี้คือ โค้ด nisitlogin.php ครับ
<? include("header.php");?>
<? include("leftbox.php");?>
<div id="TEXT">
<ul class="Path">
<li><a href="index2.php">หน้าแรก</a></li>
<li><?=$word?></li>
</ul>
<title>ระบบส่งการบ้าน ผ่าน Internet :: ภาควิชาสารสนเทศ</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<link rel="stylesheet" href="/main.css">
<style type="text/css">
<!--
.hwmenu { font-family: "Microsoft Sans Serif", "MS Sans Serif"; font-size: 10pt; text-decoration: none}
.hwmenu a{ font-family: "Microsoft Sans Serif", "MS Sans Serif"; font-size: 10pt; text-decoration: none; color: #0066FF}
.hwmenu a:hover{ font-family: "Microsoft Sans Serif", "MS Sans Serif"; font-size: 10pt; text-decoration: underline}
-->
</style>
</head>
<br><br>
<td align="center">
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td width="8" height="8"><img src="border_10.gif" width="8" height="8"></td>
<td background="border_11.gif" height="8" width="377"></td>
<td width="12" height="8"><img src="border_12.gif" width="13" height="8"></td>
</tr>
<tr>
<td background="border_20.gif" width="8"></td>
<td background="border_21.gif" class="normal" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px" valign="top">
<p><font color="#993300">นักศึกษาเข้าสู่ระบบ</font></p>
<form name="checkForm" Form action="choose2.php" method="post" onsubmit="return check();">
<table border="0" align="center" cellspacing="1" cellpadding="0" width="410">
<tr>
<td class="normal" width="88" align="right"><font color="#CC6600">User name </font></td>
<td width="310">
<input type="text" name="login_name" style="width:300px">
</td>
</tr>
<tr>
<td class="normal" width="88" align="right"><font color="#CC6600">Password </font></td>
<td width="310">
<input type="password" name="password1" style="width:300px">
</td>
</tr>
<tr align="center">
<td class="normal" colspan="2" height="30">
<input type="submit" name="Submit" value="เข้าสู่ระบบ" style="width:100px; height:25px">
<input type='button' value="ขอรับรหัสผ่าน" onclick="location.href='sendpasswd.php'">
</td>
</tr>
</table>
<div align="center"><font size=2 color="#990033">* ในกรณีที่นักศึกษาลืมรหัสผ่านหรือยังไม่ได้ลงทะเบียน สามารถขอรหัสผ่านใหม่ได้ทางอีเมลล์โดย<a href=sendpasswd.php> คลิกที่นี่</a> *</font>
</div>
</td>
<td background="border_22.gif" width="12"></td>
</tr>
<tr>
<td width="8" height="13"><img src="border_30.gif" width="8" height="13"></td>
<td background="border_31.gif" height="13" width="377"></td>
<td width="12" height="13"><img src="border_32.gif" width="13" height="13"></td>
</tr>
</table></form>
</td>
</tr>
</table>
</div>
</div>
-------------------------------------------------------------------------------------
อันนี้คือโค้ด choose2.php ครับ
<?
ob_start();
session_start();
if(empty($login_name)) // ตรวจสอบว่าผ่านการ login หรือไม่
{
header('location:nisitlogin.php');
exit();
}
?>
<?php
$hostname="localhost";
$user="";
$password="";
$dbname="member";
$tblname="member";
$auth=false;
if (isset($user) and isset($password1))
{
mysql_connect("$hostname", "$username", "$password") or die ("ติดต่อเซิร์ฟเวอร์ไม่ได้");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
$sql = "SELECT * FROM member WHERE login_name = '$login_name' AND password1 = '$password1'";
$result = mysql_query($sql) or die ("เอ็กซิคิวต์คิวรีไม่ได้");
$num = mysql_numrows($result);
if ($num !=0)
{
$auth = true;
}
}
if (! $auth)
{
header('HTTP/1.0 401 Unauthorized');
echo "Username หรือ Password ไม่ถูกต้องครับ";
echo "<br><br><input type='button' value='ย้อนกลับไปแก้ไข' onclick='history.back();'>" ;
exit;
}
else
{
$sql = "UPDATE member SET visited=visited+1 WHERE login_name='$login_name';";
$result = mysql_query($sql);
}
mysql_close();
?>
<? include("header.php");?>
<? include("leftbox2.php");?>
<script language="JavaScript">
<!--
function Clock() {
window.setTimeout( "Clock()", 1000 );
now = new Date();
localtime = now.toString();
hours = now.getHours();
mins = now.getMinutes();
secs = now.getSeconds();
self.status = hours + ":" + mins + ":" + secs + " ===> ยินดีต้อนรับครับ<===".toString();
}
Clock()
// -->
</script>
<script language=VBScript>
Dim Bar, Line, SP
Bar = 0
Line = "|"
SP = 100
Function Window_onLoad()
Bar = 95
SP = 10
End Function
Function Count()
If Bar < 100 Then
Bar = Bar + 1
Window.Status = "Loading : " & Bar & "%" & " " & String(Bar, Line)
setTimeout "Count()", SP
Else
Window.Status = "===> ระบบส่งการบ้าน ผ่าน Internet :: ภาควิชาสารสนเทศ <===" // ใส่ข้อความที่ต้องการให้ขึ้นที่ STATUSBAR หลังจากแสดงแถบ LOAD เสร็จแล้ว
Document.Body.Style.Display = ""
End If
End Function
Call Count()
</script>
<script language="Javascript">
var tt = 0;
var FMess = new Array("ยินดีต้อนรับคุณเข้าสู่","=> ระบบส่งการบ้าน ผ่าน Internet :: ภาควิชาสารสนเทศ <= ครับ")
function FTitle()
{
document.title = FMess[tt]
tt = (tt < (FMess.length -1)) ? tt + 1 : 0;
setTimeout('FTitle()',700);
}
FTitle();
</script>
<div id="TEXT">
<ul class="Path">
<li><a href="index2.php">หน้าแรก</a></li>
<li><?=$word?></li>
</ul>
<hr width="100%">
<h1>ยินดีต้อนรับ</h1>
<? include("choose.php");?>
</div>
</div><SCRIPT language=javascript>ap_showWaitMessage('waitDiv', 0);</SCRIPT> <br>
<? include("footer.php");?>
ขอบคุณมากๆ นะครับ
Date :
12 ก.ย. 2549 12:44:03
By :
arm
ปกติผมทำแบบให้มันเก็บเป็น session มันก็ไม่เรียกใหม่นิ ขี้เกียจดูโค๊ดง่า ยาว
Date :
12 ก.ย. 2549 23:26:35
By :
knight
1. Login.php
<?
$username =$_POST["username"];
$password = $_POST["password"];
if(!isset($username) || !isset($password))
header("location: login.php");
$sql = "select * from user where username ='$username' && password='$password'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==0){
echo "<script>alert(' Username หรือ Password ไม่ถูกต้องค่ะ!!! ');history.back();</script>";
}
else{
//สร้าง session เพื่อเอาไปป้องกันการlink หน้าเวปนั้นโดยตรง
session_start();
$_SESSION[sess_userid] = session_id();
$_SESSION["username"] = $row["username"];
header("location: welcome.php");
}
?>
2. chksession.php
<?
session_start();
$sess_userid = $_SESSION[sess_userid];
$username = $_SESSION[username];
if ($sess_userid<>session_id() || $username =="") {
echo "<script>alert('กรุณา Login ก่อนค่ะ!!!');window.location ='login.php';</script>";
exit();
}
?>
3. ไปใช้ ก็ใส่ไปที่บรรทัดแรกของแต่ละของแต่ File แค่นั้นเอง
<? include("chksession.php"); ?>
Date :
13 ก.ย. 2549 09:38:03
By :
AAA
ขอบคุณมากนะครับ เดี๋ยวจะลองดูนะครับ
Date :
13 ก.ย. 2549 17:04:08
By :
arm
คุณ AAA ครับ คือ ผมทำตามที่คุณ AAA บอกแล้วอะครับ แต่พอมันล็อกอินผ่านแล้วเข้าไปที่ listnisit.php มันก็ขึ้น 'กรุณา Login ก่อนค่ะ!!!' แล้วก็กลับไปหน้าล็อกอินอะครับ คุณ AAA ช่วยดูให้หน่อยครับว่าผมทำผิดตรงไหนครับ หรือว่าต้องเพิ่มตรงไหนบ้างครับ ขอบคุณมากครับ
45.php
-----------------
<form action="login4.php" method="post">
Username<input type="text" name="login_name" style="width:300px"> <br>
password<input type="password" name="password1" style="width:300px"><br>
<input type="submit" name="Submit" value="เข้าสู่ระบบ" style="width:100px; height:25px">
</form>
----------------------
login4.php
---------------------
<?
$login_name =$_POST["login_name"];
$password1 = $_POST["password1"];
if(!isset($login_name) || !isset($password1))
header("location: 45.php");
$hostname="localhost";
$user="ODBC";
$password="";
$dbname="member";
$tblname="member";
mysql_connect("$hostname", "$username", "$password") or die ("ติดต่อเซิร์ฟเวอร์ไม่ได้");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
$sql = "select * from member where login_name ='$login_name' && password1='$password1'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==0){
echo "<script>alert(' Username หรือ Password ไม่ถูกต้องค่ะ!!! ');history.back();</script>";
}
else{
//สร้าง session เพื่อเอาไปป้องกันการlink หน้าเวปนั้นโดยตรง
session_start();
$_SESSION[sess_userid] = session_id();
$_SESSION["login_name"] = $row["login_name"];
header("location: listnisit.php");
}
?>
------------------------
chksession.php
------------------------
<?
session_start();
$sess_userid = $_SESSION[sess_userid];
$username = $_SESSION[login_name];
if ($sess_userid<>session_id() || $login_name =="") {
echo "<script>alert('กรุณา Login ก่อนค่ะ!!!');window.location ='45.php';</script>";
exit();
}
?>
----------------------
listnisit.php
--------------------
<? include("chksession.php"); ?>
<html>
<body>
<?
$host="localhost";
$username="";
$password="";
$db="member";
$tb="member";
mysql_connect( $host,$username,$password) or die ("ติดต่อกับฐานข้อมูล Mysql ไม่ได้ ");
mysql_select_db($db) or die("เลือกฐานข้อมูลไม่ได้"); /* ทำการเลือกฐานข้อมูลก่อน */
$sql="Select * From $tb";
$db_query=mysql_db_query($db,$sql);
$num_rows=mysql_num_rows($db_query); /* นับ Reccord ที่พบ */
?>
<table width="70%" border="1" align="center">
<tr>
<td width="9%">
<div align="center">รหัสนักศึกษา</div>
</td>
<td width="18%">
<div align="center">ชื่อ</div>
</td>
<td width="18%">
<div align="center">นามสกุล</div>
</td>
<td width="10%">
<div align="center">ห้อง</div>
</td>
<td width="5%">
<div align="center">งาน</div>
</td>
</tr>
</table>
<?
$a=0;
while($a < $num_rows)
{
$result = mysql_fetch_array($db_query);
$studentID=$result[studentID];
$name=$result[name];
$surname=$result[surname];
$name=$result[name];
$surname=$result[surname];
$sec=$result[sec];
$tel=$result[tel];
$address=$result[address];
?>
<table width="70%" border="1" align="center">
<tr>
<td width="8%">
<div align="center"><?echo"$studentID";?></div>
</td>
<td width="16%">
<div align="left">
<?echo"$name";?>
</div>
</td>
<td width="16%">
<?echo"$surname";?>
</td>
<td width="9%">
<div align="center"><?echo"$sec";?></div>
</td>
<td width="4%">
<div align="center"><a href="Sample2.php?studentID=<?echo"$studentID"; ?>">edit</a></div>
</td>
</tr>
</table>
<?
$a++;
}
echo"<center><br>จำนวน Reccord = $num_rows</center>";
mysql_close();
?>
</body>
</html>
Date :
13 ก.ย. 2549 17:55:58
By :
arm
ใน file login4.php
----------------------
login4.php
---------------------
ลองเปลี่ยน บรรทัดนี้ดูน่ะ $_SESSION["login_name"] = $row["login_name"];
เป็น $_SESSION["login_name"] = $login_name;
Date :
14 ก.ย. 2549 15:42:52
By :
AAA
งือๆๆ...เป็นเหมือนคุณ arm คห 5 เลยค่ะ คุณ AAA ลองเปลี่ยน
บรรทัดนี้ $_SESSION["login_name"] = $row["login_name"];
เป็น $_SESSION["login_name"] = $login_name;
ก็ยังไม่หายค่ะ ยังฟ้องให้ login เหมือนเดิมน่ะค่ะ ...วานช่วยดูโค้ดอีกทีนะค๊าาา
.....................ขอบคุณมากกกกกกกกกกกกกกกกกกค่ะ...................................
Date :
21 พ.ย. 2550 14:52:48
By :
งิดงิ๊ววว
Load balance : Server 01