-
Notifications
You must be signed in to change notification settings - Fork 0
/
form.class.php
63 lines (51 loc) · 1.41 KB
/
form.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
class form
{
//biến lưu trữ token sinh tự động
private $formKey;
//biến lưu trữ lại token cũ
private $old_formKey;
function __construct()
{
//lưu lại token lấy từ session
if(isset($_SESSION['form_key']))
{
$this->old_formKey = $_SESSION['form_key'];
}
}
//hàm sinh token
private function generateKey()
{
//lấy địa chi ip user
$ip = $_SERVER['REMOTE_ADDR'];
// sinh số ngẫu nhiên
$uniqid = uniqid(mt_rand(), true);
//Return the hash
return md5($ip . $uniqid);
}
//hàm xuất token ra html
public function outputKey()
{
$this->formKey = $this->generateKey();
//lưu token vào session
$_SESSION['form_key'] = $this->formKey;
//xuất thẻ input chứa token ra html
echo "<input type='hidden' name='form_key' id='form_key' value='".$this->formKey."' />";
}
//hàm kiểm tra token
public function validate()
{
//kiểm tra xem token cũ có trùng với token được submit từ form ko
if($_POST['form_key'] == $this->old_formKey)
{
// token hợp lệ
return true;
}
else
{
// token không hợp lệ
return false;
}
}
}
?>