qiuwen-rnrs/verify.php

180 行
5.6 KiB
PHP

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
error_reporting(0);
ini_set('display_errors', 0);
// 获取AK
session_start();
$qwUserId = $_SESSION['qwUserId'] ?? '';
$qwUserName = $_SESSION['qwUserName'] ?? '';
$qwUserMobile = $_SESSION['qwUserMobile'] ?? '';
$qwPhoneNumberIdd = $_SESSION['qwPhoneNumberIdd'] ?? '';
$qwUserConfirmTime = $_SESSION['qwUserConfirmTime'] ?? '';
$qwUserHash = $_SESSION['qwUserHash'] ?? '';
$qwUserInfoStatus = $_SESSION['qwUserInfoStatus'] ?? '';
require_once __DIR__ . \DIRECTORY_SEPARATOR . 'template.php';
require_once __DIR__ . \DIRECTORY_SEPARATOR . 'loadRequires.php';
require_once __DIR__ . \DIRECTORY_SEPARATOR . 'template.php';
use MediaWiki\OAuthClient\Client;
use MediaWiki\OAuthClient\ClientConfig;
use MediaWiki\OAuthClient\Consumer;
use MediaWiki\OAuthClient\Token;
$accessToken = new Token($_SESSION['access_key'], $_SESSION['access_secret']);
$conf = new ClientConfig($rnrsOAuthUrl);
$conf->setConsumer(new Consumer($rnrsConsumerKey, $rnrsConsumerSecret));
$conf->setUserAgent('Qiuwen/1.1 (MediaWikiOAuthClient/1.0; RNRS/1.0)');
$client = new Client($conf);
if ($qwUserHash) {
// 连接数据库
$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);
// 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']
);
$dbconn = null;
}
if (!isset($_SESSION['qwUserId']) || !isset($_SESSION['qwUserName']) || !isset($_SESSION['qwUserMobile']) || !isset($_SESSION['qwPhoneNumberIdd']) || !isset($_SESSION['qwUserInfoStatus'])) {
refreshPage('/');
exit(1);
} else {
// $replacedPhoneNumber = substr_replace($qwUserMobile, "****", -8, 4);
$qwUserInfoStatusNotice = '';
if ($qwUserInfoStatus != 0) {
if ($qwUserInfoStatus >= 4) {
$qwUserInfoStatusNotice = "<p><strong>提示:</strong>自您上次登记或修改实名信息以来,<u>您的用户名被更改</u>。新用户名已同步到系统内。</p>";
$qwUserInfoStatus -= 4;
}
}
$pageContent = <<<EOF
<form id="exportForm" action="smsVerify.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>
</p>
<p>
<em>您需要准备好旧手机号码、新手机号码以接收验证码。</em>
</p>
<p>
<em>目前,本系统仅支持中国大陆手机号码(+86,暂不支持其他国家或地区的手机号码。</em>
</p>
<p>
<em>为保证安全,此处不显示您的旧手机号。若您忘记了您的旧手机号,或者旧手机号已无法使用,请联系<code>staff@qiuwen.org</code>提出申诉。</em>
</p>
<p>
<label for="input_code">验证码</label>
<input type="text" name="input_code" id="input_code" />
<input type="button" id="button_acquirecode" value="获取验证码" />
</p>
<p>
<input type="submit" id="button_submit" value="验证实名信息" />
</p>
</form>
<p>
<em>提示:若出现无法收到短信的情况,可能是受网络状况波动或短信发送频次上限影响,请一段时间后再试。</em>
</p>
EOF;
$pageContent .= verifyJS();
pageTemplate('修改实名信息', $pageContent);
}