-
Notifications
You must be signed in to change notification settings - Fork 0
/
bingmemory.php
120 lines (97 loc) · 2.88 KB
/
bingmemory.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
///// Setup required:
define('DB_HOST', getenv('DB_HOST'));
define('DB_USERNAME', getenv('DB_USERNAME'));
define('DB_PASSWORD', getenv('DB_PASSWORD'));
define('DB_NAME', getenv('DB_NAME'));
define('DELETE_PASSWORD', getenv('DELETE_PASSWORD'));
/////
function set_code_exit($code)
{
http_response_code($code);
exit();
}
// Executes SQL with prepared queries & returns result.
// Bind values are supplied as an array here, which are converted to varargs with the splat (...) operator when calling bind_param
function execute_sql($sql, $type_string='', $bind_vals_array=[], $throw_error=False)
{
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if ($mysqli->connect_errno)
{
set_code_exit(500);
}
$prepared_statement = $mysqli->prepare($sql);
if(count($bind_vals_array) > 0)
{
$prepared_statement->bind_param($type_string, ...$bind_vals_array);
}
$prepared_statement->execute();
$errno = $prepared_statement->errno;
$response = $prepared_statement->get_result();
$prepared_statement->close();
$mysqli->close();
// All non SELECT queries respond with False. Must determine if an error has occurred with errno. A non-zero errno is bad.
if($response === False && $errno !== 0)
{
if($throw_error === False)
{
set_code_exit(500);
}
else
{
throw new Exception('SQL Error');
}
}
return $response;
}
if (isset($_GET['store']))
{
$hexText = $_GET['store'];
$hexTextArray = explode("00", $hexText);
foreach($hexTextArray as $splitHexText)
{
if(strlen($splitHexText) > 0)
{
if(strlen($splitHexText) % 2 !== 0)
{
$splitHexText = substr($splitHexText, 0, strlen($splitHexText)-1);
}
echo "Saving..." . $splitHexText . "<br>";
execute_sql('INSERT INTO memory_bank (message_text) VALUES (?)', 's', [$splitHexText]);
}
}
echo 'Message saved';
exit();
}
if (isset($_GET['read']))
{
$empty_db_message = "No messages saved at this time...\n";
$decoded_messages = "";
$response = execute_sql('SELECT message_text FROM memory_bank');
while(TRUE)
{
$row = $response->fetch_assoc();
if($row !== null)
{
$decoded_messages = $decoded_messages . hex2bin($row['message_text']) . "\n";
}
else
{
break;
}
}
if(strlen($decoded_messages) === 0)
{
$decoded_messages = $empty_db_message;
}
echo $decoded_messages;
}
if (isset($_GET['delete']))
{
$password = $_GET['delete'];
if($password === DELETE_PASSWORD)
{
execute_sql('DELETE FROM memory_bank');
exit();
}
}