การทำ Login ด้วย AJAX
คือว่าผมได้อ่านบทความเรื่อง
- แล้วถามทำให้ refresh ค่า session ก็จะส่งมาแต่มันก็ทำให้ form login ด้วย ajax กลับเป็น login ทั้งๆที่มันควรเป็น logout น่ะครับ จะทำอย่างไรถึงจะเก็บค่าสถานะล็อกอินได้ถึงแม้จะทำการ refresh ก๊ตาม
ขอบคุณครับ
มือใหม่หัดเล่น Ajax
บทที่ 7 การทำ Login ด้วย AJAX
แล้วมีการ apply ต่อโดยการสร้าง session เพื่อส่งค่าไปยังหน้าต่างๆในระบบ
แล้วปัญหาก็คือ
- การ login ด้วย ajax มันเป็นการทำงานให้ส่วนเดียว ไม่ใช่ทั้งหน้า ทำให้มันไม่ส่งค่า session กลับมายังหน้าที่ทำการล็อกอินเลย มันจะมาก็ต่อเมื่อทำการ refresh หน้านั้นก่อน จะต้องทำอย่างไรถึงจะทำให้มันส่งค่า session มายังไฟล์ล็อกอินโดยได้ต้อง refresh น่ะครับ- แล้วถามทำให้ refresh ค่า session ก็จะส่งมาแต่มันก็ทำให้ form login ด้วย ajax กลับเป็น login ทั้งๆที่มันควรเป็น logout น่ะครับ จะทำอย่างไรถึงจะเก็บค่าสถานะล็อกอินได้ถึงแม้จะทำการ refresh ก๊ตาม
ขอบคุณครับ
มือใหม่หัดเล่น Ajax
ถ้าหากว่า เมื่อเราทำการ login แล้ว เราต้องการให้ส่วนอื่นๆ รับรู้การ login ก็สามารถทำได้ครับ ด้วยการสั่งให้ Refresh หน้าเมื่อทำการ login สำเร็จ แต่ว่ามันก็ขัดกับหลักการของ Ajax ครับ ซึ่งเราก็อาจเลี่ยงกลับไปใช้ วิธีเดิมๆเพื่อทำการ login ก็ได้ครับ
ถ้าคิดจะใช้ Ajax ในการ login ก็ให้ใส่ ฟังก์ชั่น Refresh หน้า หลังจากได้รับการตอบกลับครับ (ด้วย Javascript)
2. ไม่ค่อยเข้าใจคำถาม แต่โดยปกติแล้ว ถ้าเราบันทึกการ login ลงบน session หรือ cookie ไว้ เราก็สามารถจะคงสถานะ การ login ได้อยู่ครับ แม้จะ Refresh เพียงแต่เราต้องเข้าใจลำดับการทำงานของมันครับ แล้วจัดรูปแบบการทำงานให้ถูกต้อง สำหรับในส่วนนี้ โค้ดตัวอย่าง ก็มีคุณสมบัตืนี้นะครับ ให้ลองสังเกตุดูให้ดี
ขอบคุณสำหรับคำตอบ
ส่วนข้อ 2 นั้น ผมถามว่า
form login ของตัวอย่างนั้น เมื่อเราทำการ login เข้าไปก็จะได้ว่าเข้าสู่ระบบแล้ว
แล้วเราก็สามารถทำการ logout ได้ทันที่ แต่ในที่นี้เมื่อทำการ login เข้าไปเรียบร้อยแล้ว
เราทำการ refresh หน้านั้น form ก็จะกลับไปให้สถานะ login ใหม่ทั้งๆที่เราได้ login เข้าไปแล้ว
เหมือนมันไม่คงสถานะ logout ไว้น่ะครับ
ไม่ทราบว่าได้เพิ่มเติมโค้ดให้ส่วนนั้นบาง
<?
//ÊÓËÃѺàÁ×èÍãªéÀÒÉÒä·Â
header("content-type: text/html; charset=tis-620");
//¤èÒ·ÕèÃѺÁÒ
$user=$_POST["user"];
$passwd=$_POST["passwd"];
$action=$_POST["action"];
if (isset($action) && $action=='logout') { //ÍÍ¡¨Ò¡ÃкºªÑèǤÃÒÇ
setcookie("user", "");
setcookie("passwd", "");
session_start();
//unset( $_SESSION['sess_userid']);
unset( $_SESSION['admin']);
session_destroy();
unset($user);
$message="<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=center valign=top width=16><img src=images/male.gif> </td>
<td valign=top> :: ÊÁÒªÔ¡à¢éÒÃкº</td>
</tr>
</table>";
} else { //µÃǨÊͺª×è͡Ѻ°Ò¹¢éÍÁÙÅ
//¤èÒ¡Ó˹´¢Í§ °Ò¹¢éÍÁÙÅ
include "include/db.php";
$dbname="smis";
#àÃÕ¡¢éÍÁÙÅ - Member -
// $db = mysql_connect($host,$username,$password) or die ("äÁèÊÒÁÒöµÔ´µè͡Ѻ°Ò¹¢éÍÁÙÅä´éã¹¢³Ð¹Õé");
$sql = "select * from admin where user_admin='$_POST[user]' AND pwd_admin ='$_POST[passwd]' " ;
$query = mysql_db_query($dbname,$sql) or die ("äÁèÊÒÁÒöàÃÕ¡°Ò¹¢éÍÁÙÅÊÁÒªÔ¡ä´éã¹¢³Ð¹Õé");
$fetch = mysql_fetch_array($query);
$num = mysql_num_rows($query);
// mysql_close($db);
if ($num != 0) { //ª×èÍ áÅÐ ÃËÑʼèÒ¹¶Ù¡µéͧ
//login ÊÓàÃç¨
setcookie("user", $user, time() + 3600 * 24 * 365);
setcookie("passwd", $passwd, time() + 3600 * 24 * 365);
session_start();
//$_SESSION[sess_userid]=session_id();
$_SESSION[admin]=$user;
//<--------------------------------------------------------------------------------------->
/* include "register/connect.php";
$sql="select * from member where user_login='$sess_username' ";
$result=mysql_db_query($dbname,$sql);
$record=mysql_fetch_array($result);
$images=$record[images];
$online1=$record[online1];
$online2=$record[online2];
mysql_close();*/
//<-------------------------------------------------------------------------->
} else if (empty($action)) { //¤ÃÑé§áá äÁèä´éãÊè action ÁÒ
$message="<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=center valign=top width=16><img src=images/male.gif> </td>
<td valign=top> :: ÊÁÒªÔ¡à¢éÒÃкº</td>
</tr>
</table>";
unset($user);
} else {
//ª×èÍËÃ×Í ÃËÑʼèÒ¹äÁè¶Ù¡µéͧ
$message="<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=center valign=top width=16><img src=images/male.gif> </td>
<td valign=top> :: ÊÁÒªÔ¡à¢éÒÃкº</td>
</tr>
</table><font color=#FF0000>User ËÃ×Í Pass ¼Ô´</font>";
unset($user);
}
}
echo "<table cellspacing=5 cellpadding=0 width=100%>\n";
if (isset($user)) {
echo "<tr><td align=center><table width=100% border=0 cellpadding=0 cellspacing=0>
<tr>
<td align=center valign=top width=16><img src=images/male.gif> </td>
<td valign=top> :: <font color=#009900>ÂÔ¹´Õµé͹ÃѺÊÁÒªÔ¡</font></td>
</tr>
</table></td></tr>\n";
//echo "<tr><td align=center><img src=images/$images width=60 height=60></td></tr>\n";
echo "<tr><td align=center><font size=3 color=#FF0000 face=Tahoma>$user</font></td></tr>\n";
echo "<tr><td align=center><img src=img/icon/indicator_white.gif> $online2</td></tr>\n";
echo "<tr><td align=center>$pass</td></tr>\n";
echo "<tr><td align=center><input type=button value=ÍÍ¡¨Ò¡Ãкº class=red title=\"ÍÍ¡¨Ò¡Ãкº ªÑèǤÃÒÇ\" onclick=\"check_user('', '', 'logout')\"></td></tr>\n";
} else {
if (isset($message)) echo "<tr><td align=center colspan=2>$message</td></tr>\n";
else echo "<tr><td align=center colspan=2><font size=1><font color=green>¼ÙéÁÒàÂ×͹</font> ¡ÃسÒà¢éÒÃкº</font></font></td></tr>\n";
echo "<tr><td align=right>Login : </font></td><td><input size=10 type=text name=user></td></tr>\n";
echo "<tr><td align=right>Password : </font></td><td><input size=10 type=password name=passwd></td></tr>\n";
echo "<tr><td align=right></td><td><input type=button value=à¢éÒÃкº onclick=\"check_user(login_form.user.value, login_form.passwd.value, 'login'), history.go(1);\"></td></tr>\n";
}
echo "</table>\n";
?>
ขอบคุณครับ
ของผมนี้ เลือกใช้ session อ่าครับ มันก็ทำงานได้ปกติ แต่ปก รีเฟส หน้า มันก็กลับไปสู่หน้า
login ธรรมดา มันไม่คงสภาพไว้อ่ะ งงมากมายเลย T_T