Created
December 30, 2019 13:41
-
-
Save FiveYellowMice/a923322b2f3429362a088860b389637b to your computer and use it in GitHub Desktop.
FiveYellowMice 的提问箱
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function return_error($code, $message) { | |
http_response_code($code); | |
header('Content-Type: text/plain'); | |
echo $message."\n"; | |
die(); | |
} | |
if (in_array($_SERVER['REQUEST_METHOD'], ['HEAD', 'GET'])) { | |
$alert_type = null; | |
$alert_msg = null; | |
} elseif ($_SERVER['REQUEST_METHOD'] == 'POST') { | |
if (strlen($_POST['question'] ?? null) == 0) { | |
http_response_code(400); | |
$alert_type = 'danger'; | |
$alert_msg = "提问不能为空。"; | |
} elseif (strlen($_POST['question']) > 500) { | |
http_response_code(400); | |
$alert_type = 'danger'; | |
$alert_msg = "提问不能超过 500 个字符。"; | |
} elseif (strlen($_POST['email'] ?? null) > 100) { | |
http_response_code(400); | |
$alert_type = 'danger'; | |
$alert_msg = "OAO 真、真的有这样长的邮件地址嘛。"; | |
} else { | |
$ch = curl_init(); | |
curl_setopt($ch, CURLOPT_POST, true); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
curl_setopt($ch, CURLOPT_URL, 'https://api.telegram.org/bot<token>/sendMessage'); | |
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json; charset=utf-8' ]); | |
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ | |
'chat_id' => 123020835, | |
'text' => "提问箱:\n".$_POST['question']."\n\nEmail: ".($_POST['email'] ?? ''), | |
'disable_web_page_preview' => true, | |
])); | |
$tg_resp = json_decode(curl_exec($ch), true); | |
curl_close($ch); | |
if ($tg_resp['ok'] ?? null) { | |
$alert_type = 'success'; | |
$alert_msg = "发送成功。"; | |
$_POST['question'] = null; | |
$_POST['email'] = null; | |
} else { | |
http_response_code(500); | |
$alert_type = 'danger'; | |
$alert_msg = "发送失败。 ".($tg_resp['description'] ?? 'unknown'); | |
} | |
} | |
} else { | |
return_error(405, 'Method not allowed.'); | |
} | |
?><!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1"> | |
<title>提问箱</title> | |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> | |
</head> | |
<body> | |
<header class="pt-4 pb-1 px-2 bg-secondary text-light"> | |
<h1 class="text-center">提问箱</h1> | |
</header> | |
<div class="my-4 mx-auto px-2" style="max-width: 700px"> | |
<?php if ($alert_type) { ?> | |
<div class="alert alert-<?= $alert_type ?>" role="alert"><?= $alert_msg ?></div> | |
<?php } ?> | |
<p>这里是 FiveYellowMice 的提问箱,在这里可以匿名地向我提出问题,我愿意回答的话,就会回答啦。也不一定是问题,要是有想匿名说的话,在这里也可以发出。如果有被回答的话,该提问将与回答一起被发布到我的 <a href="https://twitter.com/FiveYellowMice" target="_blank">Twitter</a> 和 <a href="https://mastodon.xyz/@FiveYellowMice" target="_blank">Mastodon</a> 上。</p> | |
<p>如果担心 IP 地址被记录什么的,用代理之类的东西就可以了。</p> | |
<form method="post"> | |
<div class="form-group"> | |
<label for="form-question">提问:</label> | |
<textarea id="form-question" name="question" class="form-control" rows="2"><?= htmlspecialchars($_POST['question'] ?? '') ?></textarea> | |
</div> | |
<div class="form-group"> | |
<label for="form-email">邮件地址(选填):</label> | |
<input id="form-email" name="email" type="email" class="form-control" aria-describedby="form-email-description" value="<?= htmlspecialchars($_POST['email'] ?? '') ?>"> | |
<small id="form-email-description" class="form-text">若填写了邮件地址,在提问收到回答时将会收到邮件提醒,但我也会看到邮件地址,所以匿名大概就会被破坏了。</small> | |
</div> | |
<button type="submit" class="btn btn-primary d-block mx-auto">提交</button> | |
</form> | |
</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment