这个提交包含在:
WaitSpring 2024-04-16 14:33:16 +08:00
父节点 870cd32e07
当前提交 d5e5a51301
共有 6 个文件被更改,包括 159 次插入128 次删除

查看文件

@ -29,139 +29,155 @@ if (isset($_POST['checker'])) {
$qwUserName = $_SESSION['qwUserName'];
$qwPhoneNumberIdd = $_SESSION['qwPhoneNumberIdd'];
$qwPhoneNumber = $_SESSION['qwPhoneNumber'];
session_destroy();
$oldVerified = $_SESSION['oldVerified'] ?? false;
$newVerified = $_SESSION['newVerified'] ?? false;
// 连接数据库
$dsn = "$rnrsDatabaseType:host=$rnrsDatabaseServer;dbname=$rnrsDatabaseName";
try {
$dbconn = new PDO($dsn, $rnrsDatabaseUser, $rnrsDatabasePass);
} catch (PDOException $e) {
echo "打开数据库错误:" . $e->getMessage();
}
$dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 设置变量
$cur_time = time();
$qwRandStr = $rnrsHashSalt;
$qwRandStrHash = hash('sha3-256', $qwRandStr);
$qwUserHash = hash('sha3-256', $qwUserId . $cur_time . $qwRandStrHash);
// 压入数据
try {
$sql = "INSERT INTO `rnrs_users` (`rnrsu_userid`, `rnrsu_username`, `rnrsu_mobile_idd`, `rnrsu_mobile`, `rnrsu_bot`, `rnrsu_bot_parent`, `rnrsu_confirm_time`, `rnrsu_hash`) VALUES ($qwUserId, '$qwUserName', '$qwPhoneNumberIdd', '$qwPhoneNumber', 0, NULL, $cur_time, '$qwUserHash') ON DUPLICATE KEY UPDATE `rnrsu_mobile_idd` = '$qwPhoneNumberIdd', `rnrsu_mobile` = '$qwPhoneNumber';";
$tempret = $dbconn->query($sql);
} catch (PDOException $e) {
$dbconn = null;
echo "转存实名信息时错误:" . $e->getMessage();
if ($_POST['stage'] === 'reg' && $oldVerified !== true) {
alertAndBack('验证码错误。');
exit(1);
} else if ($_POST['stage'] === 'verify' && $newVerified !== true) {
alertAndBack('验证码错误。');
exit(1);
}
// Put verification into user preferences
$rnrsApiUrl = preg_replace('/index\.php.*/', 'api.php', $rnrsOAuthUrl);
$rnrsApiQueryUrl = "$rnrsApiUrl?action=query&meta=tokens&format=json";
$rnrsApiToken = json_decode($client->makeOAuthCall(
$accessToken,
$rnrsApiQueryUrl
))->query->tokens->csrftoken;
if (($_POST['stage'] === 'reg' && $oldVerified === true) || ($_POST['stage'] === 'verify' && $newVerified === true)) {
session_destroy();
// Set rnrsverify locally
$rnrsApiParamsUserOptionsState = [
'optionname' => "rnrsverify",
'optionvalue' => "1",
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsState, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsState, 'action' => 'globalpreferences']
);
// 连接数据库
$dsn = "$rnrsDatabaseType:host=$rnrsDatabaseServer;dbname=$rnrsDatabaseName";
try {
$dbconn = new PDO($dsn, $rnrsDatabaseUser, $rnrsDatabasePass);
} catch (PDOException $e) {
echo "打开数据库错误:" . $e->getMessage();
}
$dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Set rnrsverifyuserid locally
$rnrsApiParamsUserOptionsID = [
'optionname' => "rnrsverifyuserid",
'optionvalue' => "$qwUserId",
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsID, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsID, 'action' => 'globalpreferences']
);
// 设置变量
$cur_time = time();
$qwRandStr = $rnrsHashSalt;
$qwRandStrHash = hash('sha3-256', $qwRandStr);
$qwUserHash = hash('sha3-256', $qwUserId . $cur_time . $qwRandStrHash);
// Set rnrsverifytime locally
$rnrsApiParamsUserOptionsTime = [
'optionname' => "rnrsverifytime",
'optionvalue' => $cur_time,
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsTime, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsTime, 'action' => 'globalpreferences']
);
// 压入数据
try {
$sql = "INSERT INTO `rnrs_users` (`rnrsu_userid`, `rnrsu_username`, `rnrsu_mobile_idd`, `rnrsu_mobile`, `rnrsu_bot`, `rnrsu_bot_parent`, `rnrsu_confirm_time`, `rnrsu_hash`) VALUES ($qwUserId, '$qwUserName', '$qwPhoneNumberIdd', '$qwPhoneNumber', 0, NULL, $cur_time, '$qwUserHash') ON DUPLICATE KEY UPDATE `rnrsu_mobile_idd` = '$qwPhoneNumberIdd', `rnrsu_mobile` = '$qwPhoneNumber';";
$tempret = $dbconn->query($sql);
} catch (PDOException $e) {
$dbconn = null;
echo "转存实名信息时错误:" . $e->getMessage();
exit(1);
}
// Set rnrsverifyhash locally
$rnrsApiParamsUserOptionsHash = [
'optionname' => "rnrsverifyhash",
'optionvalue' => $qwUserHash,
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsHash, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsHash, 'action' => 'globalpreferences']
);
// Put verification into user preferences
$rnrsApiUrl = preg_replace('/index\.php.*/', 'api.php', $rnrsOAuthUrl);
$rnrsApiQueryUrl = "$rnrsApiUrl?action=query&meta=tokens&format=json";
$rnrsApiToken = json_decode($client->makeOAuthCall(
$accessToken,
$rnrsApiQueryUrl
))->query->tokens->csrftoken;
// Set rnrsverify locally
$rnrsApiParamsUserOptionsState = [
'optionname' => "rnrsverify",
'optionvalue' => "1",
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsState, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsState, 'action' => 'globalpreferences']
);
// Set rnrsverifyuserid locally
$rnrsApiParamsUserOptionsID = [
'optionname' => "rnrsverifyuserid",
'optionvalue' => "$qwUserId",
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsID, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsID, 'action' => 'globalpreferences']
);
// Set rnrsverifytime locally
$rnrsApiParamsUserOptionsTime = [
'optionname' => "rnrsverifytime",
'optionvalue' => $cur_time,
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsTime, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsTime, 'action' => 'globalpreferences']
);
// Set rnrsverifyhash locally
$rnrsApiParamsUserOptionsHash = [
'optionname' => "rnrsverifyhash",
'optionvalue' => $qwUserHash,
'token' => $rnrsApiToken,
'format' => 'json',
];
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsHash, 'action' => 'options']
);
$client->makeOAuthCall(
$accessToken,
$rnrsApiUrl,
true,
[...$rnrsApiParamsUserOptionsHash, 'action' => 'globalpreferences']
);
// 压入数据
try {
$sql = "INSERT INTO `rnrs_log` (`rnrsl_userid`, `rnrsl_username`, `rnrsl_mobile_idd`, `rnrsl_mobile`, `rnrsl_bot`, `rnrsl_bot_parent`, `rnrsl_confirm_time`, `rnrsl_hash`) VALUES ($qwUserId, '$qwUserName', '$qwPhoneNumberIdd', '$qwPhoneNumber', 0, NULL, $cur_time, '$qwUserHash');";
$tempret = $dbconn->query($sql);
} catch (PDOException $e) {
$dbconn = null;
echo "转存实名日志时错误:" . $e->getMessage();
exit(1);
}
// 压入数据
try {
$sql = "INSERT INTO `rnrs_log` (`rnrsl_userid`, `rnrsl_username`, `rnrsl_mobile_idd`, `rnrsl_mobile`, `rnrsl_bot`, `rnrsl_bot_parent`, `rnrsl_confirm_time`, `rnrsl_hash`) VALUES ($qwUserId, '$qwUserName', '$qwPhoneNumberIdd', '$qwPhoneNumber', 0, NULL, $cur_time, '$qwUserHash');";
$tempret = $dbconn->query($sql);
} catch (PDOException $e) {
$dbconn = null;
echo "转存实名日志时错误:" . $e->getMessage();
exit(1);
}
$dbconn = null;
$homePage = preg_replace('/index\.php.*/', '', $rnrsOAuthUrl);
$pageContent = <<<EOF
$homePage = preg_replace('/index\.php.*/', '', $rnrsOAuthUrl);
$pageContent = <<<EOF
<p>您已经完成实名验证流程。</p>
<p><a href="$homePage">返回求闻百科首页</a></p>
EOF;
pageTemplate('完成', $pageContent);
exit(0);
pageTemplate('完成', $pageContent);
exit(0);
} else {
echo "请求方式错误。";
exit(1);
}
} else {
echo "请求方式错误。";
exit(1);

查看文件

@ -2,6 +2,6 @@
function pageCSS()
{
echo <<<EOF
<style>*{margin:0;padding:0}body,html{min-height:100vh}html{width:100%;background:#fff;color:#000;font-family:"Noto Serif","Source Serif","Noto Serif SC","Source Han Serif SC",Times New Roman,Times,STSong,SimSun,serif;line-height:1.75}body{display:flex;margin:0 auto;max-width:83vw;flex-wrap:wrap;flex-direction:column;justify-content:space-between}header{margin:10vh 0 0;padding-bottom:1em;border-bottom:5px solid #36c}a img{border:0}main{display:flex;margin:0 auto;min-width:70vw;flex-wrap:wrap;flex-direction:column}h1{margin-top:.5em;margin-bottom:.5em;font-size:1.25em}p{margin:.5em 0}ul{margin:.5em 0 .5em 2em}li{margin:.25em 0}a{color:#36c;text-decoration:none}a:hover{text-decoration:underline}code{padding:0 .25em;border:1px solid #aaa;border-radius:.25em;background-color:#eee;color:#c3b}em,footer{color:#777;font-style:normal}footer{margin:0 0 10vh;padding-top:1em;border-top:1px solid #eaecf0;font-size:.9em}.footer-links a{margin-right:.5em;white-space:nowrap}.footer-buttons{display:flex;margin-top:.5em;gap:.5em;flex-wrap:wrap;flex-direction:row;justify-content:flex-end}label{display:inline;margin-right:.7em;width:auto}input[type=checkbox]{width:1.25em;height:1.25em}input[type=text]{padding:6px 8px;line-height:1.25}input[type=button],input[type=submit],input[type=text]{border:1px solid #a2a9b1;border-radius:4px;background:#fff;color:#000}input[type=button],input[type=submit]{display:inline-block;box-sizing:border-box;margin:0;padding:5px 12px;max-width:28.75em;min-width:4em;min-height:32px;vertical-align:middle;text-align:center;font-weight:700;font-size:.85em;font-family:inherit;line-height:1.25em;cursor:pointer}input#button_submit{background:#36c;color:#fff}input[type=button][disabled=disabled],input[type=submit][disabled=disabled]{background:#ccc}input[name=checker],input[name=userid],label[for=checker],label[for=userid]{display:none}small{font-size:85%}</style>
<style>*{margin:0;padding:0}body,html{min-height:100vh}html{width:100%;background:#fff;color:#000;font-family:"Noto Serif","Source Serif","Noto Serif SC","Source Han Serif SC",Times New Roman,Times,STSong,SimSun,serif;line-height:1.75}body{display:flex;margin:0 auto;max-width:83vw;flex-wrap:wrap;flex-direction:column;justify-content:space-between}header{margin:10vh 0 0;padding-bottom:1em;border-bottom:5px solid #36c}a img{border:0}main{display:flex;margin:0 auto;min-width:70vw;flex-wrap:wrap;flex-direction:column}h1{margin-top:.5em;margin-bottom:.5em;font-size:1.25em}p{margin:.5em 0}ul{margin:.5em 0 .5em 2em}li{margin:.25em 0}a{color:#36c;text-decoration:none}a:hover{text-decoration:underline}code{padding:0 .25em;border:1px solid #aaa;border-radius:.25em;background-color:#eee;color:#c3b}em,footer{color:#777;font-style:normal}footer{margin:0 0 10vh;padding-top:1em;border-top:1px solid #eaecf0;font-size:.9em}.footer-links a{margin-right:.5em;white-space:nowrap}.footer-buttons{display:flex;margin-top:.5em;gap:.5em;flex-wrap:wrap;flex-direction:row;justify-content:flex-end}label{display:inline;margin-right:.7em;width:auto}input[type=checkbox]{width:1.25em;height:1.25em}input[type=text]{padding:6px 8px;line-height:1.25}input[type=button],input[type=submit],input[type=text]{border:1px solid #a2a9b1;border-radius:4px;background:#fff;color:#000}input[type=button],input[type=submit]{display:inline-block;box-sizing:border-box;margin:0;padding:5px 12px;max-width:28.75em;min-width:4em;min-height:32px;vertical-align:middle;text-align:center;font-weight:700;font-size:.85em;font-family:inherit;line-height:1.25em;cursor:pointer}input#button_submit{background:#36c;color:#fff}input[type=button][disabled=disabled],input[type=submit][disabled=disabled]{background:#ccc}input[name=checker],input[name=stage],input[name=userid],label[for=checker],label[for=stage],label[for=userid]{display:none}small{font-size:85%}</style>
EOF;
}

查看文件

@ -21,6 +21,8 @@ if (!isset($_SESSION['qwUserId']) || !isset($_SESSION['qwUserName'])) {
<form id="exportForm" action="confirm.php" method="post">
<label for="checker"></label>
<input type="text" name="checker" id="checker" title="checker" value="1" />
<label for="stage"></label>
<input type="text" name="stage" id="stage" title="stage" value="reg" />
<p>
<em>您好,$qwUserName 。请输入新的实名信息。</em>
</p>

查看文件

@ -147,12 +147,16 @@ if ($act == 'UserLoginCode') {
$pn = $_POST['pn'] ?? '';
if (($code == $_SESSION['verificationCode']) && ($idd == $_SESSION['qwPhoneNumberIdd']) && ($pn == $_SESSION['qwPhoneNumber'])) { //验证码进行比对
unset($_SESSION['verificationCode']);
unset($_SESSION['oldVerified']);
$_SESSION['newVerified'] === true;
echo 1; // 验证成功
} else {
echo 2; // 验证码错误
}
} else { // 验证码的时间大于当前时间,代表失效了
unset($_SESSION['verificationCode']);
unset($_SESSION['oldVerified']);
unset($_SESSION['newVerified']);
echo 3; // 验证码失效了
}
}
@ -213,12 +217,16 @@ if ($act == 'UserLoginCode') {
$code = $_POST['code'] ?? '';
if ($code == $_SESSION['verificationCode']) { // 验证码进行比对
unset($_SESSION['verificationCode']);
unset($_SESSION['newVerified']);
$_SESSION['oldVerified'] === true;
echo 1; // 验证成功
} else {
echo 2; // 验证码错误
}
} else { // 验证码的时间大于当前时间,代表失效了
unset($_SESSION['verificationCode']);
unset($_SESSION['oldVerified']);
unset($_SESSION['newVerified']);
echo 3; // 验证码失效了
}
} else {

查看文件

@ -4,7 +4,7 @@ ini_set('display_errors', 0);
session_start();
$qwUserName = $_SESSION['qwUserName'] ?? '';
$verificationCode = $_SESSION['verificationCode'] ?? '';
$oldVerified = $_SESSION['oldVerified'] ?? false;
require_once __DIR__ . \DIRECTORY_SEPARATOR . 'template.php';
@ -12,7 +12,7 @@ require_once __DIR__ . \DIRECTORY_SEPARATOR . 'idd.php';
$qwIddSelect = returnIdd();
if (!isset($_POST['checker']) || !isset($_POST['input_code'])) {
if (!isset($_POST['checker']) || !isset($_POST['input_code']) || !isset($_POST['stage'])) {
echo "本页面应由验证既有实名信息页面调用。";
exit(1);
}
@ -20,9 +20,9 @@ if (!isset($_POST['checker']) || !isset($_POST['input_code'])) {
if (!isset($_SESSION['qwUserName'])) {
refreshPage('/');
exit(1);
} else if ($verificationCode !== $_POST['input_code']) {
alertAndBack('验证码错误。');
} else {
}
if ($_POST['stage'] === 'verify' && $oldVerified === true) {
$pageContent = <<<EOF
<form id="exportForm" action="confirm.php" method="post">
<label for="checker"></label>
@ -69,4 +69,7 @@ if (!isset($_SESSION['qwUserName'])) {
EOF;
$pageContent .= updateJS();
pageTemplate('更新实名信息', $pageContent);
} else {
alertAndBack('验证码错误。');
exit(1);
}

查看文件

@ -43,14 +43,16 @@ if (!isset($_SESSION['qwUserId']) || !isset($_SESSION['qwUserName']) || !isset($
<form id="exportForm" action="update.php" method="post">
<label for="checker"></label>
<input type="text" name="checker" id="checker" title="checker" value="1" />
<label for="stage"></label>
<input type="text" name="stage" id="stage" title="stage" value="verify" />
<label for="userid"></label>
<input type="text" name="userid" id="userid" title="userid" value="$qwUserId" />
$qwUserInfoStatusNotice
<p>
<em>您好,$qwUserName 请输入新的实名信息。</em>
<em>您好,$qwUserName 接下来,您需要验证您现有的实名信息。</em>
</p>
<p>
<em>接下来,您需要验证您现有的实名信息;您需要准备好旧手机号码、新手机号码以接收验证码。</em>
<em>您需要准备好旧手机号码、新手机号码以接收验证码。</em>
</p>
<p>
<em>目前,本系统仅支持中国大陆手机号码(+86),暂不支持其他国家或地区的手机号码。</em>