180 行
5.6 KiB
PHP
180 行
5.6 KiB
PHP
<?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);
|
||
}
|