1
0
mirror of https://github.com/Daichimarukana/uwuzu.git synced 2026-06-04 19:14:41 +00:00

Add files via upload

This commit is contained in:
だいちまる
2023-08-21 13:54:33 +09:00
committed by GitHub
parent ea8587e10f
commit 965d7b903c
8 changed files with 263 additions and 256 deletions
+21 -7
View File
@@ -9,6 +9,11 @@ function createUniqId(){
return base_convert($hashCreateTime,10,36);
}
function random($length = 32)
{
return substr(str_shuffle('1234567890abcdefghijklmnopqrstuvwxyz'), 0, $length);
}
require('db.php');
$servernamefile = "server/servername.txt";
@@ -45,11 +50,16 @@ try {
// 接続エラーのときエラー内容を取得する
$error_message[] = $e->getMessage();
}
// 管理者としてログインしているか確認
if( empty($_SESSION['admin_login']) || $_SESSION['admin_login'] !== true ) {
// ログインページへリダイレクト
header("Location: ./login.php");
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
header("Location: home/index.php");
exit;
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
header("Location: home/index.php");
exit;
}
require_once 'authcode/GoogleAuthenticator.php';
@@ -73,16 +83,19 @@ if( !empty($_POST['btn_submit']) ) {
$checkResult = $chkauthcode->verifyCode($secret, $userauthcode, $discrepancy);
if ($checkResult) {
if( empty($error_message) ) {
$backupcode = random();
$secret = $_SESSION['secretcode'];
// トランザクション開始
$pdo->beginTransaction();
try {
// SQL作成
$stmt = $pdo->prepare("UPDATE account SET authcode = :authcode WHERE userid = :userid");
$stmt = $pdo->prepare("UPDATE account SET authcode = :authcode,backupcode = :backupcode WHERE userid = :userid");
$stmt->bindValue(':authcode', $secret, PDO::PARAM_STR);
$stmt->bindValue(':backupcode', $backupcode, PDO::PARAM_STR);
// ユーザーIDのバインド(WHERE句に必要)
$stmt->bindValue(':userid', $userid, PDO::PARAM_STR);
@@ -111,6 +124,7 @@ if( !empty($_POST['btn_submit']) ) {
}
}
$userid = "";
$_SESSION['backupcode'] = $backupcode;
// リダイレクト先のURLへ転送する
$url = 'success.php';
header('Location: ' . $url, true, 303);
@@ -174,10 +188,10 @@ $pdo = null;
$name = $userid;
$qrCodeUrl = $authcode->getQRCodeGoogleUrl($name, $secret, $title);
$qrCodeUrl = $authcode->getQRCodeUrl($name, $secret, $title);
?>
<div class="authzone">
<img src="<?php echo $qrCodeUrl;?>">
<img src="qr/php/qr_img.php?d=<?php echo $qrCodeUrl?>">
</div>
<form class="formarea" enctype="multipart/form-data" method="post">
+13 -1
View File
@@ -32,6 +32,7 @@ $userid = $_SESSION['userid'];
// データベースに接続
try {
$option = array(
@@ -45,6 +46,17 @@ try {
// 接続エラーのときエラー内容を取得する
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
header("Location: home/index.php");
exit;
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
header("Location: home/index.php");
exit;
}
if( !empty($_POST['btn_submit']) ) {
$_SESSION['userid'] = $userid;
@@ -95,7 +107,7 @@ $pdo = null;
<body>
<div class="leftbox">
<div class="leftbox2">
<div class="logo">
<img src="img/uwuzulogo.svg">
</div>
+96 -52
View File
@@ -20,12 +20,6 @@ $row["authcode"] = "";
$ruserid = "";
$rpassword = "";
$userid = "";
$_SESSION["userid"]="";
$password = null;
$_SESSION["password"]="";
session_start();
@@ -47,60 +41,18 @@ try {
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_SESSION['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_SESSION['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット
$username = $_SESSION['username']; // セッションに格納されている値をそのままセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_COOKIE['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_COOKIE['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_COOKIE['userid']; // クッキーから取得した値をセット
$username = $_COOKIE['username']; // クッキーから取得した値をセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
}
if( !empty($_POST['btn_submit']) ) {
$userbackupcode = $_POST['userbackupcode'];
$options = array(
// SQL実行失敗時に例外をスルー
@@ -116,11 +68,65 @@ if( !empty($_POST['btn_submit']) ) {
require_once 'authcode/GoogleAuthenticator.php';
$result = $dbh->prepare("SELECT authcode,loginid,username FROM account WHERE userid = :userid");
$result = $dbh->prepare("SELECT authcode,loginid,username,backupcode FROM account WHERE userid = :userid");
$result->bindValue(':userid', $userid);
// SQL実行
$result->execute();
if(!(empty($userbackupcode))){
$row = $result->fetch();
if($row["backupcode"] === $userbackupcode){
$pdo->beginTransaction();
try {
$touserid = $userid;
$datetime = date("Y-m-d H:i:s");
$msg = "バックアップコードを使用しログインされました!\nバックアップコード変更のために二段階認証を再設定することを強くおすすめします。\nまた、もしバックアップコードを利用してログインした覚えがない場合は「その他」より全てのセッションを終了し、設定画面よりパスワードを変更し、二段階認証を再設定してください!";
$title = '🔴バックアップコード使用のお知らせ🔴';
$url = '/settings';
$userchk = 'none';
// 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)");
$stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
// SQLクエリの実行
$res = $stmt->execute();
// コミット
$res = $pdo->commit();
} catch(Exception $e) {
// エラーが発生した時はロールバック
$pdo->rollBack();
}
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['loginid'] = $row["loginid"];
$_SESSION['username'] = $row["username"];
$_SESSION['password'] = "";
// リダイレクト先のURLへ転送する
$url = '/home';
header('Location: ' . $url, true, 303);
// すべての出力を終了
exit;
}else{
$error_message[] = "そのバックアップコードは使用できません。";
}
}else{
if($result->rowCount() > 0) {
$row = $result->fetch();
@@ -138,6 +144,38 @@ if( !empty($_POST['btn_submit']) ) {
$checkResult = $chkauthcode->verifyCode($tousercode, $userauthcode, $discrepancy);
if ($checkResult) {
$pdo->beginTransaction();
try {
$touserid = $userid;
$datetime = date("Y-m-d H:i:s");
$msg = "アカウントにログインがありました。\nもしログインした覚えがない場合は「その他」よりセッションを終了し、パスワードを変更し、二段階認証を再設定してください。";
$title = '🚪ログイン通知🚪';
$url = '/settings';
$userchk = 'none';
// 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)");
$stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
// SQLクエリの実行
$res = $stmt->execute();
// コミット
$res = $pdo->commit();
} catch(Exception $e) {
// エラーが発生した時はロールバック
$pdo->rollBack();
}
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['loginid'] = $row["loginid"];
@@ -159,6 +197,7 @@ if( !empty($_POST['btn_submit']) ) {
}else{
$error_message[] = 'データの取得が出来ませんでした。再度お試しください。';
}
}
}
@@ -203,6 +242,11 @@ $pdo = null;
<p>二段階認証コード</p>
<div class="p2">6桁のコードを入力してください。</div>
<input id="profile" type="number" placeholder="123456" class="inbox" name="usercode" value="">
</div>
<div>
<p>バックアップコード</p>
<div class="p2">もし二段階認証が出来ない場合は8桁英数字のバックアップコードを入力してください。</div>
<input id="profile" type="text" placeholder="通常は入力しなくて大丈夫です。" class="inbox" name="userbackupcode" value="">
</div>
<input type="submit" class = "irobutton" name="btn_submit" value="次へ">
</form>
+31 -14
View File
@@ -21,22 +21,8 @@ $row["password"] = array();
$ruserid = array();
$rpassword = array();
$userid = null;
$_SESSION["userid"]="";
$password = null;
$_SESSION["password"]="";
session_start();
// 管理者としてログインしているか確認
if( empty($_SESSION['admin_login']) || $_SESSION['admin_login'] !== true ) {
// ログインページへリダイレクト
header("Location: ./login.php");
exit;
}
// データベースに接続
try {
@@ -108,6 +94,37 @@ try {
if( !empty($_POST['btn_submit']) ) {
$pdo->beginTransaction();
try {
$touserid = $userid;
$datetime = date("Y-m-d H:i:s");
$msg = "アカウントにログインがありました。\nもしログインした覚えがない場合は「その他」よりセッションを終了し、パスワードを変更してください。";
$title = '🚪ログイン通知🚪';
$url = '/settings';
$userchk = 'none';
// 通知用SQL作成
$stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)");
$stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR);
$stmt->bindParam(':msg', $msg, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR);
$stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR);
$stmt->bindParam(':title', $title, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
// SQLクエリの実行
$res = $stmt->execute();
// コミット
$res = $pdo->commit();
} catch(Exception $e) {
// エラーが発生した時はロールバック
$pdo->rollBack();
}
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['loginid'] = $userData["loginid"];
+2 -60
View File
@@ -4,76 +4,18 @@
require('db.php');
session_start();
try {
$option = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_MULTI_STATEMENTS => false
);
$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
} catch(PDOException $e) {
// 接続エラーのときエラー内容を取得する
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_SESSION['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_SESSION['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット
$username = $_SESSION['username']; // セッションに格納されている値をそのままセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_COOKIE['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_COOKIE['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_COOKIE['userid']; // クッキーから取得した値をセット
$username = $_COOKIE['username']; // クッキーから取得した値をセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
}
$servernamefile = "server/servername.txt";
//------------------------
+3 -46
View File
@@ -42,58 +42,15 @@ try {
// 接続エラーのときエラー内容を取得する
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_SESSION['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_SESSION['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット
$username = $_SESSION['username']; // セッションに格納されている値をそのままセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_COOKIE['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
header("Location: home/index.php");
exit;
}elseif($_COOKIE['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_COOKIE['userid']; // クッキーから取得した値をセット
$username = $_COOKIE['username']; // クッキーから取得した値をセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/");
exit;
}
}
@@ -229,7 +186,7 @@ $pdo = null;
<!--アカウント関連-->
<div>
<label for="password">パスワード</label>
<input onInput="checkForm(this)" id="password" class="inbox" type="password" name="password" value="<?php if( !empty($_SESSION['password']) ){ echo htmlentities( $_SESSION['password'], ENT_QUOTES, 'UTF-8'); } ?>">
<input onInput="checkForm(this)" id="password" class="inbox" type="password" name="password" maxlength="32" value="<?php if( !empty($_SESSION['password']) ){ echo htmlentities( $_SESSION['password'], ENT_QUOTES, 'UTF-8'); } ?>">
</div>
<input type="submit" name="btn_submit" class="irobutton" value="ログイン">
+55 -44
View File
@@ -27,50 +27,6 @@ $stmt = null;
$res = null;
$option = null;
if(isset($_COOKIE["username"])){
$_SESSION["username"]=$_COOKIE["username"];
}else{
$_SESSION["username"]="";
}
if(isset($_COOKIE["userid"])){
$_SESSION["userid"]=$_COOKIE["userid"];
}else{
$_SESSION["userid"]="";
}
if(isset($_COOKIE["password"])){
$_SESSION["password"]=$_COOKIE["password"];
}else{
$_SESSION["password"]="";
}
if(isset($_COOKIE["mailadds"])){
$_SESSION["mailadds"]=$_COOKIE["mailadds"];
}else{
$_SESSION["mailadds"]="";
}
if(isset($_COOKIE["profile"])){
$_SESSION["profile"]=$_COOKIE["profile"];
}else{
$_SESSION["profile"]="";
}
//$username = array();
//$userid = array();
//$realname = array();
//$yominame = array();
//$password = array();
//$mailadds = array();
//$profile = array();
// データベースに接続
try {
$option = array(
@@ -85,6 +41,61 @@ try {
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_SESSION['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: login.php");
exit;
}elseif($_SESSION['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット
$username = $_SESSION['username']; // セッションに格納されている値をそのままセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/index.php");
exit;
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', $_COOKIE['userid']);
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: ../login.php");
exit;
}elseif($_COOKIE['loginid'] === $res["loginid"]){
// セッションに値をセット
$userid = $_COOKIE['userid']; // クッキーから取得した値をセット
$username = $_COOKIE['username']; // クッキーから取得した値をセット
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, time() + 60 * 60 * 24 * 14);
setcookie('username', $username, time() + 60 * 60 * 24 * 14);
setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14);
setcookie('admin_login', true, time() + 60 * 60 * 24 * 14);
header("Location: home/index.php");
exit;
}
}
if( !empty($_POST['btn_submit']) ) {
+10
View File
@@ -1,5 +1,10 @@
<?php
$servernamefile = "server/servername.txt";
if(!(empty($_SESSION['backupcode']))){
$backupcode = $_SESSION['backupcode'];
}else{
$backupcode = null;
}
?>
<!DOCTYPE html>
@@ -29,6 +34,11 @@ $servernamefile = "server/servername.txt";
<p><br>いぇ~い!</p>
<p>88888888888</p>
<p>アカウント登録が完了しました!</p>
<?php
if(!(empty($backupcode))){?>
<p>バックアップコードは以下のものです!<br>以下のコードでスマートフォンをなくしてしまったなどのもしものときにログインいただけます。<br>絶対に大切に保管してください!<br>また、そのバックアップコードは絶対に公開しないでください。</p>
<p><?php echo $backupcode;?>
<?php }?>
<div class="btnbox">
<a href="login.php" class="sirobutton">ログイン</a>