今天去了一个客户的地方工作,真的搞砸了。以下是发生的事情的简要历史。
我为客户创建了一个简单的cms,通常在我去客户之前,我自己测试了一切,localhost没有任何问题。
当我将网站转移到真正的主机并开始在客户的位置进行测试时,发生了2件奇怪的事情(我不得不说我们都被电缆连接到同一个路由器上,所以我们都外部IP地址必须相同):
首先,当我使用chrome登录cms时,突然之间Firefox也登录了,而且我没有登录Firefox。
最奇怪的是,客户在某个时刻也登录了它似乎没有从她的电脑登录过来......
发生的事情是,某些工具栏只显示在"管理员模式"突然间被添加了#34;通过我可能完成的保存来查看真实的页面内容。
我认为我们都以某种方式使用相同的会话ID或类似的东西,它搞砸了我的代码/ cms。
以下是我目前用于loggins的代码:
我首先在页面顶部显示:
if(!isset($_SESSION)){
session_name("sitesession");
session_set_cookie_params(0);
session_start();
}
// make sure user login attempts are no more than 3 times
if (!isset($_SESSION['ip'])){
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
if (!isset($_SESSION['logintriesleft'])){
$_SESSION['logintriesleft'] = 3;
}
然后在页面中,我" require_once"登录脚本中包含以下内容:
if (isset($theaction) and ($theaction=="adminlogin")){
$email = $_REQUEST['email'];
$magickey = $_REQUEST['magickey'];
$sth = $DB_con->prepare('SELECT magickey FROM admin_users WHERE email = :email LIMIT 1');
$sth->bindParam(':email', $email);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_OBJ);
if (is_null($user->magickey) || hash_equals($user->magickey, crypt($magickey, $user->magickey))==false) {
$_SESSION['logintriesleft'] = --$_SESSION['logintriesleft'];
if ($_SESSION['logintriesleft'] > 0){
echo '<script>javascript:alert("Bad Login ('.$_SESSION['logintriesleft'].' more tries left before getting banned)...Please Try Again");</script>';
echo '<script>javascript:location.replace("'.$_SESSION['baseurl'].'");</script>';
}else{
echo '<script>javascript:alert("Too many bad login attempts. Contact the website administrator to reactivate your account");</script>';
echo '<script>javascript:location.replace("http://google.ca");</script>';
}
}
else {
$_SESSION["admin"] = "true";
$_SESSION["edit_content"] = "true";
echo '<script>javascript:alert("Successful login! Redirecting you back to the main page!");</script>';
echo '<script>javascript:location.replace("'.$_SESSION['baseurl'].$_SESSION['currentpage'].'");</script>';
break;
}
}
?>
我的退出代码是这样的:
case "logout":
$_SESSION = array(); // unset all of the session variables
// also delete the session cookie. This will destroy the session, not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
echo '<script>javascript:alert("Your are now logged out. Goodbye!");</script>';
echo '<script>javascript:location.replace("//www.google.ca");</script>';
break;
我认为我的第一段代码可能在查找用户的IP地址时有问题,但我不确定。就像我说的那样,直到我们两个人在同一台路由器上访问外部主机上的网站时,我才会遇到任何此类问题。
任何可能出错的想法?
感谢您的帮助。