GORAGOD.com

freelance, web developer, web designer, hosting, domain name

การทำ Login ด้วย AJAX

คือว่าผมได้อ่านบทความเรื่อง

บทที่ 7 การทำ Login ด้วย AJAX

แล้วมีการ apply ต่อโดยการสร้าง session เพื่อส่งค่าไปยังหน้าต่างๆในระบบ

แล้วปัญหาก็คือ

- การ login ด้วย ajax มันเป็นการทำงานให้ส่วนเดียว ไม่ใช่ทั้งหน้า ทำให้มันไม่ส่งค่า session กลับมายังหน้าที่ทำการล็อกอินเลย มันจะมาก็ต่อเมื่อทำการ refresh หน้านั้นก่อน จะต้องทำอย่างไรถึงจะทำให้มันส่งค่า session มายังไฟล์ล็อกอินโดยได้ต้อง refresh น่ะครับ

- แล้วถามทำให้ refresh ค่า session ก็จะส่งมาแต่มันก็ทำให้ form login ด้วย ajax กลับเป็น login ทั้งๆที่มันควรเป็น logout น่ะครับ  จะทำอย่างไรถึงจะเก็บค่าสถานะล็อกอินได้ถึงแม้จะทำการ  refresh ก๊ตาม

ขอบคุณครับ

มือใหม่หัดเล่น Ajax
26 ธ.ค. 2552 4 2,755

1. การ Login ด้วย Ajax มีจุดประสงค์ที่สำคัญคือ ไม่ต้อง Refrsh หน้า เมื่อเรา login เสร็จแล้ว เราก็สามารถบันทึกการ login ลงบน Session หรือ Cookie เหมือนปกติได้เลย แน่นอนครับ ส่วนอื่นๆ ไม่ได้มีการเปลี่ยนแปลง ดังนั้นส่วนอื่นๆจึงไม่ได้รับรู้ว่ามีการ login เกิดขึ้น

ถ้าหากว่า เมื่อเราทำการ login แล้ว เราต้องการให้ส่วนอื่นๆ รับรู้การ login ก็สามารถทำได้ครับ ด้วยการสั่งให้ Refresh หน้าเมื่อทำการ login สำเร็จ แต่ว่ามันก็ขัดกับหลักการของ Ajax ครับ ซึ่งเราก็อาจเลี่ยงกลับไปใช้ วิธีเดิมๆเพื่อทำการ login ก็ได้ครับ

ถ้าคิดจะใช้ Ajax ในการ login ก็ให้ใส่ ฟังก์ชั่น Refresh หน้า หลังจากได้รับการตอบกลับครับ (ด้วย Javascript)

2. ไม่ค่อยเข้าใจคำถาม แต่โดยปกติแล้ว ถ้าเราบันทึกการ login ลงบน session หรือ cookie ไว้ เราก็สามารถจะคงสถานะ การ login ได้อยู่ครับ แม้จะ Refresh เพียงแต่เราต้องเข้าใจลำดับการทำงานของมันครับ แล้วจัดรูปแบบการทำงานให้ถูกต้อง สำหรับในส่วนนี้ โค้ดตัวอย่าง ก็มีคุณสมบัตืนี้นะครับ ให้ลองสังเกตุดูให้ดี
#1

ขอบคุณสำหรับคำตอบ
ส่วนข้อ 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";
?>


ขอบคุณครับ

#2

อ่านต่อให้จบทั้งบทความสิครับ การคงสถานะการ login มีคำอธิบายอยู่ด้านล่าง
#3
9JE

ผมใส่ตรงตามรายละเอียดแล้วอ่ะ ปัญหาผมมีเหมือนกันเลย

ของผมนี้ เลือกใช้ session อ่าครับ มันก็ทำงานได้ปกติ แต่ปก รีเฟส หน้า มันก็กลับไปสู่หน้า

login ธรรมดา มันไม่คงสภาพไว้อ่ะ งงมากมายเลย T_T
#4
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^