我正在创建一个系统,我发送一个令牌(在PHP中生成并存储在MySQL数据库中)并使用form.on提交我将该令牌与证书一起验证。
问题在于处理所有这些的类文件。函数set_token()
表现得很荒谬。
每10-12秒设置一次令牌并无限制地存储它。甚至在我关闭浏览器之后。连接既没有终止,又从我不知道的来源中再次调用该功能。
这是类文件..
class auth {
private $uplink;
public function __construct(){
$this->uplink=new mysqli(HOST_NAME,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
}
public function __destruct(){
$this->uplink->close();
}
public function query_noreturn($q) {
$query = $q;
if($this->uplink->query($q)){
return true;
}
else {
return false;
}
}
public function gen($len){
$data="ASDFGHJKLQPOWERITYULZXCVMBNasdlkjfhgzmnxcbvqpwoeiuty_1597863420@";
$rgen='';
for($i=0;$i<=$len;$i++){
$rgen.=$data[rand(0,strlen($data)-1)];
}
$generate=hash('sha256',$rgen);
return $generate;
}
public function set_token(){
$token=$this->gen(20);
$f=time();
$query="INSERT INTO token_auth(token_val,token_tm)"."VALUES('$token','$f')";
if(($this->query_noreturn($query))){
return $token;
}
else{
return false;
}
}
}
这是第一次设置它的php文件。
$auth = new auth();
$key = $auth->set_token();