<?php
error_reporting(E_ERROR);
$login = new Login();
switch($_GET["action"]){
case "registerUser":
$r = $login->registerUser($_GET["username"],$_GET["password"],$_GET["repassword"],$_GET["registerKey"]);
break;
case "accessaccount":
$r = $login->accessaccount($_GET["username"],$_GET["password"]);
break;
case "generateRegisterKey":
$r = $login->generateRegisterKey($_GET["adminPassword"]);
break;
case "isPremium":
$r = $login->isPremium($_GET["username"]);
break;
case "IP":
$r = $login->IP($_GET["username"]);
break;
case "IPAddress":
$r = $login->IPAddress($_GET["username"],$_GET["registerKey"]);
break;
default:
$r = "ERROR:NO_actION";
}
echo $r;
class Login{
////LOCAL FUNCTION [->]
private function query($sql,$arg,$fetch = false){
require "connection.php";
$q = $db->prepare($sql);
$q->execute($arg);
return $fetch ? $q->fetch(2) : $q;
}
private function bcrypt($password){
return password_hash($password,PASSWORD_BCRYPT,["cost" => 10]);
}
private function userExist($username){
return $this->query("SELECT accountID FROM accounts WHERE username COLLATE latin1_bin LIKE ?",array($username),true)["accountID"];
}
private function isBanned($username){
return $this->query("SELECT isBanned FROM accounts WHERE accountID = ?",array($this->getaccountID($username)),true)["isBanned"];
}
private function getaccountID($username){
return $this->query("SELECT accountID FROM accounts WHERE username COLLATE latin1_bin LIKE ?",true)["accountID"];
}
////LOCAL FUNCTION [<-]
////USER FUNCTION [->]
public function registerUser($username,$password,$repassword,$registerKey){
if(empty($username) ||empty($password) || empty($registerKey) || empty($repassword)) return "ERROR:MISSING_PARAMETERS";
if(strlen($username)>20 || strlen($username) < 3) return "ERROR:username_TOO_SHORT";
if(strlen($password) < 3) return "ERROR:PASSWORD_TOO_SHORT";
if($this->userExist($username)) return "ERROR:username_TAKEN";
if($password != $repassword) return "ERROR:PASSWORDS_NOT_MATCH";
$this->query("INSERT INTO accounts(username,password) VALUES (?,?)",array($username,$this->bcrypt($password)));
return "OK:DONE";
}
public function accessaccount($username,$password){ //=login
if(empty($username) || empty($password)) return "ERROR:MISSING_PARAMETERS";
if(!$this->userExist($username)) return "ERROR:INVALID_CREDENTIALS";
if($this->isBanned($username)) return "ERROR:USER_BANNED";
$pass = $this->query("SELECT password FROM accounts WHERE username COLLATE latin1_bin LIKE ?",true);
return password_verify($password,$pass["password"]) ? "OK:LOGGED_IN" : "ERROR:INVALID_CREDENTIALS";
}
public function isPremium($username){
if(empty($username)) return "ERROR:MISSING_PARAMETERS";
return $this->query("SELECT isPremium FROM accounts WHERE accountID = ?",true)["isPremium"];
}
public function IP($username){
if(empty($username)) return "ERROR:MISSING_PARAMETERS";
return $this->query("SELECT IP FROM accounts WHERE accountID = ?",true)["IP"];
}
public function IPAddress($username,$registerKey){
if(empty($username) ||empty($registerKey)) return "ERROR:MISSING_PARAMETERS";
$this->query("UPDATE INTO accounts FROM accounts WHERE accountID = ? ",true)["IP"];
return "OK:DONE";
}
////USER FUNCTION [<-]
////REGISTER KEY FUNCTION [->]
public function generateRegisterKey($adminpassword,$size = 10){
if($adminpassword != "test") return "ERROR:NOT_ENOUGH_PRIVILEGES";
$exist=false;
do{
$alpha = "abcdefhijklmnopqrstuvwxyzABCDEFHIJKLMNOPQRSTUVWXYZ0123456789";
$key = "";
for($i = 0; $i<$size; $i++){
$key .= $alpha[mt_rand(0,strlen($alpha) - 1)];
}
if($this->keyExist($key)) $exist = true;
}while($exist);
$this->query("INSERT INTO registrationKeys(registerKey) VALUES(?)",array($key));
return $key;
}
private function keyExist($key){
return $this->query("SELECT registerKey FROM registrationKeys WHERE registerKey COLLATE latin1_bin LIKE ? AND username IS NULL",array($key),true)["registerKey"];
}
private function AssignKey($username,$key){
if(!$this->keyExist($key)) return false;
$this->query("UPDATE registrationKeys SET username = ? WHERE registerKey COLLATE latin1_bin LIKE ?",$key));
return true;
}
////REGISTER KEY FUNCTION [<-]
}
在我的网站上有一个按钮,用于设置某种“显示模式”, 当用户连续按下3次时,导航栏就会消失。
从功能上讲,它可以正常工作。
现在解决问题-
我希望保留“显示模式”,即使用户将刷新页面, 在上面的代码中,当用户按3次导航栏Disapperas按钮,但是当他刷新页面时,导航栏将返回。 我如何使其保持隐藏状态? 我需要添加什么?