Khái niệm, chức năng và hướng dẫn cài đặt, sử dụng session, cookie trong PHP. SessionKhái niệmKhi đăng nhập vào 1 trang web chỉ cần đăng nhập 1 lần và sau 1 khoảng thời gian nhất định không cần phải đăng nhập lại dù đã tắt trang web, đó chính là 1 ứng dụng của session. Nhưng chỉ là tắt 1 tab, nếu tắt hẳn trình duyệt thì session sẽ mất. Session giúp lưu trữ thông tin về user, các giá trị trong khoảng thời gian tương tác với website. Session là phiên làm việc, là 1 khoảng thời gian tương tác giữa người sử dụng và website. Session được tạo ra bởi website (PHP) và được lưu trong 1 file trên server, thời gian tồn tại của session code quy định. Thao tác với sessionSử dụng sessionTrên mỗi trang Khai báo 1 biến
Hủy 1 sessionHủy 1 session với khóa đã biết.session với khóa đã biết. Ví dụ với khoá <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0, gọi hàm <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>3 để huỷ session với khoá username Kiểm tra session tồn tạiKiểm tra session tồn tại với khóa cho trước.session tồn tại với khóa cho trước. Ví dụ <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>5 Hàm này sẽ trả về Lấy giá trị của sessionLấy giá trị của session cho trước.session cho trước. Ví dụ với khoá <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0, truyền đúng khóa <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0 vào "mảng" session setcookie('cookie_name', 'hoang', time()+7200);0session setcookie('cookie_name', 'hoang', time()+7200);0 DemoTạo form đăng nhập trong trang signin_page.php <html> <head> <title>Login</title> </head> <body> <form method="post" action="doSignin.php"> <input name="username" placeholder="Username" type="text" /> <input name="password" placeholder="Password" type="password" /> <input name="submit" value="Login" type="submit"/> </form> </body> </html> Tạo trang xử lý đăng nhập doSignin.php <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?> Nếu setcookie('cookie_name', 'hoang', time()+7200);1 chưa tồn tại thì trang web sẽ xử lý việc đăng nhập setcookie('cookie_name', 'hoang', time()+7200);2 còn nếu đã tồn tại thì được phép vào trang setcookie('cookie_name', 'hoang', time()+7200);3. Sau khi submit form đăng nhập thì dữ liệu <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0 và setcookie('cookie_name', 'hoang', time()+7200);5 sẽ được truyền tới trang setcookie('cookie_name', 'hoang', time()+7200);6. Giả sử <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0 và setcookie('cookie_name', 'hoang', time()+7200);5 đúng với dữ liệu trong database thì web sẽ cho phép đăng nhập và tạo ra session có tên setcookie('cookie_name', 'hoang', time()+7200);9 và gửi về trình duyệt web. còn nếu đã tồn tại thì được phép vào trang setcookie('cookie_name', 'hoang', time()+7200);3. Sau khi submit form đăng nhập thì dữ liệu <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0 và setcookie('cookie_name', 'hoang', time()+7200);5 sẽ được truyền tới trang setcookie('cookie_name', 'hoang', time()+7200);6. Giả sử <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if (isset($_SESSION['statusLogin']) && $_SESSION['statusLogin'] == 'YES') { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { $_SESSION['statusLogin'] = 'YES'; } ?>0 và setcookie('cookie_name', 'hoang', time()+7200);5 đúng với dữ liệu trong database thì web sẽ cho phép đăng nhập và tạo ra session có tên setcookie('cookie_name', 'hoang', time()+7200);9 và gửi về trình duyệt web. Chú ý: setcookie('cookie-name', 'hoang', time()-7200);0 là 1 hàm hỗ trợ cache dữ liệu, nhiệm vụ lưu trữ dữ liệu và truyền dữ liệu sang trang khác đồng thời chuyển hướng đến trang đó bằng dòng code sau setcookie('cookie-name', 'hoang', time()-7200);1 CookieKhái niệm
Cách khởi tạo cookiesetcookie('cookie_name', 'hoang', time()+7200); Trong đó:
Để hủy 1 cookie cũng sử dụng lại dòng code trên trên nhưng là đặt thời gian là time()-7200. setcookie('cookie-name', 'hoang', time()-7200); DemoTạo 1 form đăng nhập setcookie('cookie-name', 'hoang', time()-7200);6 <html> <head> <title>Login</title> </head> <body> <form method="post" action="doSignin.php"> <input name="username" placeholder="Username" type="text"/> <input name="password" placeholder="Password" type="password"/> <label> <input name="remember" type="checkbox" value="" /> Remember Me </label> <input type="submit" name="submit" value="Login"/> </form> </body> </html> Trong trường hợp này tại phần xử lý Tiếp đến tạo 1 trang setcookie('cookie_name', 'hoang', time()+7200);6 <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if ((isset($_SESSION['ss_statusLogin']) && $_SESSION['ss_statusLogin'] == 'YES) || (isset($_COOKIE['cc_statusLogin']) && $_COOKIE['cc_statusLogin'] == 'YES)) { header("location:user_info.php"); } // TODO: SIGN IN isSignedin = DoSignIn($_POST['username'], $_POST['password']); if (isSignedin == TRUE) { if(isset($_POST['remember'])) { setcookie('cc_statusLogin', 'YES', time()+7200); } else { $_SESSION['ss_statusLogin'] = 'YES'; } } ?> Tạo trang <html> <head> <title>Login</title> </head> <body> <form method="post" action="doSignin.php"> <input name="username" placeholder="Username" type="text"/> <input name="password" placeholder="Password" type="password"/> <label> <input name="remember" type="checkbox" value="" /> Remember Me </label> <input type="submit" name="submit" value="Login"/> </form> </body> </html>2 kiểm tra đăng nhập trước khi hiện thông tin bằng đoạn mã sau: <?php session_start(); ob_start(); // TODO: CHECK SIGNED IN if ((!isset($_SESSION['ss_statusLogin']) || $_SESSION['ss_statusLogin'] == 'NO') && (!isset($_COOKIE['cc_statusLogin']) || $_COOKIE['cc_statusLogin'] == 'NO')) { header("location:signin_page.php"); } // SIGNED IN, SHOW INFO ?> Ở trên thời gian tồn tại của cookie là 1 tuần, mỗi lần truy cập vào trang web cookie sẽ được gửi lên server và đăng nhập vào hệ thống bằng chính cookie này. |