1、用户登录状态操作类userlogin
<?php
final class userlogin {
public function __construct() {
}
public static function getuserinfo() {
if (isset($_cookie["user_id"])&&$_cookie["user_id"]&&(trim($_cookie["user_id"])!="")) {
if (isset($_session["user_info"]))
return $_session["user_info"];
$dao = new userdao();
$user = $dao->find($_cookie["user_id"]);
if ($user) {
$_session["user_info"] = $user;
setcookie("docloud_sid", session_id(), time() + 36000);
setcookie("user_id", $_cookie["user_id"], time() + 36000);
if (array_key_exists("selected_prj_id", $_cookie))
setcookie("selected_prj_id", $_cookie["selected_prj_id"], time() + 36000);
if (array_key_exists("selected_class_id", $_cookie))
setcookie("selected_class_id", $_cookie["selected_class_id"], time() + 36000);
if (array_key_exists("selected_image_id", $_cookie))
setcookie("selected_image_id", $_cookie["selected_image_id"], time() + 36000);
if (array_key_exists("test_image_ids", $_cookie))
setcookie("test_image_ids", $_cookie["test_image_ids"], time() + 36000);
if (array_key_exists("upload_image_ids", $_cookie))
setcookie("upload_image_ids", $_cookie["upload_image_ids"], time() + 36000);
return $user;
}
}
self::clearcookie();
return null;
}
public static function setuserinfo($userinfo) {
$_session["user_info"] = $userinfo;
setcookie("docloud_sid", session_id(), time() + 36000);
setcookie("user_id", $userinfo->getid(), time() + 36000);
}
public static function islogin() {
if (self::getuserinfo()) {
return true;
}
return false;
}
public static function deluserinfo() {
self::clearcookie();
session_destroy();
}
private static function clearcookie() {
setcookie("docloud_sid", "", time() - 36000);
setcookie("user_id", "", time() - 36000);
setcookie("selected_prj_id", "", time() - 36000);
setcookie("selected_class_id", "", time() - 36000);
setcookie("selected_image_id", "", time() - 36000);
setcookie("test_image_ids", "", time() - 36000);
setcookie("upload_image_ids", "", time() - 36000);
}
}
?>
2、在用户输入用户名、密码处调用来做相关判定
<?php
require_once 'init.php';
// if logged in, logout
if (userlogin::islogin() && $_cookie["user_id"]==1) {
userlogin::deluserinfo();
}
else if (userlogin::islogin()){
utils::redirect('welcome');
}
$username = null;
$password = null;
$msg = "";
if (isset($_post['username']) && isset($_post['password'])) {
$username = addslashes(trim(stripslashes($_post ['username'])));
$password = addslashes(trim(stripslashes($_post ['password'])));
// validate
$errors = loginvalidator::validate($username, $password);
if (empty($errors)) {
// save
$dao = new userdao();
$user = $dao->findbyname($username);
$last_login_ip = utils::getipaddress();
$user->setlastloginip($last_login_ip);
$now = new datetime();
$user->setlastlogintime($now);
$dao->save($user);
userlogin::setuserinfo($user);
flash::addflash('登录成功!');
utils::redirect('welcome');
}
foreach ($errors as $e) {
$msg .= $e->getmessage()."<br>";
}
}
?>
以上这篇php同时使用session和cookie来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持硕编程。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!