diff --git a/migration/index.php b/migration/index.php
index e493fa9..b926098 100644
--- a/migration/index.php
+++ b/migration/index.php
@@ -95,6 +95,8 @@ try {
$error_message[] = $e->getMessage();
}
if( !empty($_POST['btn_submit']) ) {
+ $_SESSION['form_data'] = $_POST;
+
if(safetext($serversettings["serverinfo"]["server_account_migration"]) === "true"){
$new_userid = safetext($_POST['new_userid']);
$password = safetext($_POST['password']);
@@ -403,17 +405,31 @@ if( !empty($_POST['btn_submit']) ) {
$datetime = date("Y-m-d H:i:s");
$username = safetext($json_account_data["userdata"]["user_name"]);
$mailadds = safetext($json_account_data["userdata"]["mail_adds"]);
- $profile = safetext($json_account_data["userdata"]["user_profile"]);
+ $profile = mb_substr(safetext($json_account_data["userdata"]["user_profile"]),0,1024);// 一応文字数制限
+
+ $userEnckey = GenUserEnckey($datetime);
+ $ivLength = openssl_cipher_iv_length('aes-256-cbc');
+ $randomBytes = random_bytes($ivLength);
+ $randomhash = hash('sha3-512', $randomBytes);
+ $iv = substr($randomhash, 0, $ivLength);
+
+ // メアドを暗号化する
+ if(!(empty($mailadds))){
+ $enc_mailadds = EncryptionUseEncrKey($mailadds, $userEnckey, $iv);
+ }else{
+ $enc_mailadds = "";
+ }
try {
$role = "user";
$admin = "none";
$hashpassword = password_hash($password, PASSWORD_DEFAULT);
- $loginid = sha1(uniqid(mt_rand(), true));
+ $LoginIdBytes = random_bytes(64);
+ $loginid = hash('sha3-512', $LoginIdBytes);
// SQL作成
- $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, headname, role, datetime, admin) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :headname, :role, :datetime, :admin )");
+ $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, headname, role, datetime, admin, encryption_ivkey) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :headname, :role, :datetime, :admin ,:encryption_ivkey)");
// アイコン画像
$stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR);
@@ -426,10 +442,12 @@ if( !empty($_POST['btn_submit']) ) {
$stmt->bindParam(':userid', $new_userid, PDO::PARAM_STR);
$stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR);
$stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR);
- $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR);
+ $stmt->bindParam(':mailadds', $enc_mailadds, PDO::PARAM_STR);
$stmt->bindParam(':profile', $profile, PDO::PARAM_STR);
$stmt->bindParam(':role', $role, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
+
+ $stmt->bindParam(':encryption_ivkey', $iv, PDO::PARAM_STR);
$stmt->bindParam(':admin', $admin, PDO::PARAM_STR);
@@ -486,12 +504,14 @@ if( !empty($_POST['btn_submit']) ) {
$_SESSION['userid'] = $new_userid;
$_SESSION['done'] = false;
}
+ $_SESSION['form_data'] = array();
$url = '../success';
header('Location: ' . $url, true, 303);
exit;
}else{
$_SESSION['userid'] = $new_userid;
$_SESSION['done'] = false;
+ $_SESSION['form_data'] = array();
$url = '../success';
header('Location: ' . $url, true, 303);
exit;
@@ -574,28 +594,28 @@ $pdo = null;
@@ -612,7 +632,7 @@ $pdo = null;
diff --git a/new.php b/new.php
index 7383fe8..ac4342f 100644
--- a/new.php
+++ b/new.php
@@ -102,6 +102,7 @@ if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true && isset
if( !empty($_POST['btn_submit']) ) {
+ $_SESSION['form_data'] = $_POST;
// 空白除去
$username = safetext($_POST['username']);
@@ -119,6 +120,9 @@ if( !empty($_POST['btn_submit']) ) {
$profile = safetext($_POST['profile']);
+ if( 1024 < mb_strlen($profile, 'UTF-8') ) {
+ $error_message[] = 'プロフィールは1024文字以内で入力してください。(INPUT_OVER_MAX_COUNT)';
+ }
if(safetext($serversettings["serverinfo"]["server_invitation"]) === "true"){
$invitationcode = safetext($_POST['invitationcode']);
@@ -209,44 +213,48 @@ if( !empty($_POST['btn_submit']) ) {
// アップロードされたファイル情報
$uploadedFile = $_FILES['image'];
- if(check_mime($uploadedFile['tmp_name'])){
+ if(!(empty($uploadedFile['tmp_name']))){
+ if(check_mime($uploadedFile['tmp_name'])){
- // アップロードされたファイルの拡張子を取得
- $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION);
-
- // EXIF削除
- delete_exif($extension, $uploadedFile['tmp_name']);
- // リサイズ
- resizeImage($uploadedFile['tmp_name'], 512, 512);
+ // アップロードされたファイルの拡張子を取得
+ $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION);
+
+ // EXIF削除
+ delete_exif($extension, $uploadedFile['tmp_name']);
+ // リサイズ
+ resizeImage($uploadedFile['tmp_name'], 512, 512);
- if(check_mime($uploadedFile['tmp_name']) == "image/webp"){
- // 新しいファイル名を生成(uniqid + 拡張子)
- $newFilename = uniqid() . '-'.$userid.'.webp';
- }else{
- // 新しいファイル名を生成(uniqid + 拡張子)
- $newFilename = uniqid() . '-'.$userid.'.' . $extension;
- }
- // 保存先のパスを生成
- $uploadedPath = 'usericons/' . $newFilename;
+ if(check_mime($uploadedFile['tmp_name']) == "image/webp"){
+ // 新しいファイル名を生成(uniqid + 拡張子)
+ $newFilename = uniqid() . '-'.$userid.'.webp';
+ }else{
+ // 新しいファイル名を生成(uniqid + 拡張子)
+ $newFilename = uniqid() . '-'.$userid.'.' . $extension;
+ }
+ // 保存先のパスを生成
+ $uploadedPath = 'usericons/' . $newFilename;
- // ファイルを移動
- $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath);
+ // ファイルを移動
+ $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath);
- if ($result) {
- $iconName = $uploadedPath; // 保存されたファイルのパスを使用
- } else {
- $errnum = $uploadedFile['error'];
- if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";}
- if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";}
- if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";}
- if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";}
- if($errnum === 6){$errcode = "TMP_FOLDER_NAI";}
- if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";}
- if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";}
- $error_message[] = 'アップロード失敗!(1)エラーコード:' .$uploadedFile['error'].'';
+ if ($result) {
+ $iconName = $uploadedPath; // 保存されたファイルのパスを使用
+ } else {
+ $errnum = $uploadedFile['error'];
+ if($errnum === 1){$errcode = "FILE_DEKASUGUI_PHP_INI_KAKUNIN";}
+ if($errnum === 2){$errcode = "FILE_DEKASUGUI_HTML_KAKUNIN";}
+ if($errnum === 3){$errcode = "FILE_SUKOSHIDAKE_UPLOAD";}
+ if($errnum === 4){$errcode = "FILE_UPLOAD_DEKINAKATTA";}
+ if($errnum === 6){$errcode = "TMP_FOLDER_NAI";}
+ if($errnum === 7){$errcode = "FILE_KAKIKOMI_SIPPAI";}
+ if($errnum === 8){$errcode = "PHPINFO()_KAKUNIN";}
+ $error_message[] = 'アップロード失敗!(1)エラーコード:' .$uploadedFile['error'].'';
+ }
+ }else{
+ $error_message[] = "使用できない画像形式です。(FILE_UPLOAD_DEKINAKATTA)";
}
}else{
- $error_message[] = "使用できない画像形式です。(FILE_UPLOAD_DEKINAKATTA)";
+ $error_message[] = "ファイルがアップロードできませんでした。(FILE_UPLOAD_DEKINAKATTA)";
}
}
@@ -378,95 +386,98 @@ if( !empty($_POST['btn_submit']) ) {
}
if( empty($error_message) ) {
- // トランザクション開始
- $pdo->beginTransaction();
- $datetime = date("Y-m-d H:i:s");
+ // トランザクション開始
+ $pdo->beginTransaction();
+ $datetime = date("Y-m-d H:i:s");
- $userEnckey = GenUserEnckey($datetime);
- $ivLength = openssl_cipher_iv_length('aes-256-cbc');
- $randomBytes = random_bytes($ivLength);
- $randomhash = hash('sha3-512', $randomBytes);
- $iv = substr($randomhash, 0, $ivLength);
+ $userEnckey = GenUserEnckey($datetime);
+ $ivLength = openssl_cipher_iv_length('aes-256-cbc');
+ $randomBytes = random_bytes($ivLength);
+ $randomhash = hash('sha3-512', $randomBytes);
+ $iv = substr($randomhash, 0, $ivLength);
- // メアドを暗号化する
- if(!(empty($mailadds))){
- $enc_mailadds = EncryptionUseEncrKey($mailadds, $userEnckey, $iv);
- }else{
- $enc_mailadds = "";
- }
+ // メアドを暗号化する
+ if(!(empty($mailadds))){
+ $enc_mailadds = EncryptionUseEncrKey($mailadds, $userEnckey, $iv);
+ }else{
+ $enc_mailadds = "";
+ }
- try {
+ try {
- $role = "user";
- $admin = "none";
- $hashpassword = password_hash($password, PASSWORD_DEFAULT);
- $loginid = sha1(uniqid(mt_rand(), true));
+ $role = "user";
+ $admin = "none";
+ $hashpassword = password_hash($password, PASSWORD_DEFAULT);
+ $LoginIdBytes = random_bytes(64);
+ $loginid = hash('sha3-512', $LoginIdBytes);
- // SQL作成
- $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, headname, role, datetime, admin, encryption_ivkey) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :headname, :role, :datetime, :admin ,:encryption_ivkey)");
+ // SQL作成
+ $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, headname, role, datetime, admin, encryption_ivkey) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :headname, :role, :datetime, :admin ,:encryption_ivkey)");
- // アイコン画像
- $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR);
+ // アイコン画像
+ $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR);
- // ヘッダー画像
- $stmt->bindValue(':headname', $headName, PDO::PARAM_STR);
+ // ヘッダー画像
+ $stmt->bindValue(':headname', $headName, PDO::PARAM_STR);
- // 他の値をセット
- $stmt->bindParam(':username', $username, PDO::PARAM_STR);
- $stmt->bindParam(':userid', $userid, PDO::PARAM_STR);
- $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR);
- $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR);
- $stmt->bindParam(':mailadds', $enc_mailadds, PDO::PARAM_STR);
- $stmt->bindParam(':profile', $profile, PDO::PARAM_STR);
- $stmt->bindParam(':role', $role, PDO::PARAM_STR);
- $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
-
- $stmt->bindParam(':encryption_ivkey', $iv, PDO::PARAM_STR);
-
- $stmt->bindParam(':admin', $admin, PDO::PARAM_STR);
-
- // SQLクエリの実行
- $res = $stmt->execute();
-
- // コミット
- $res = $pdo->commit();
-
- if(safetext($serversettings["serverinfo"]["server_invitation"]) === "true"){
- $pdo->beginTransaction();
-
- $stmt = $pdo->prepare("UPDATE invitation SET used = :used, datetime = :datetime WHERE code = :code;");
-
- $true = "true";
- $stmt->bindParam(':used', $true, PDO::PARAM_STR);
+ // 他の値をセット
+ $stmt->bindParam(':username', $username, PDO::PARAM_STR);
+ $stmt->bindParam(':userid', $userid, PDO::PARAM_STR);
+ $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR);
+ $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR);
+ $stmt->bindParam(':mailadds', $enc_mailadds, PDO::PARAM_STR);
+ $stmt->bindParam(':profile', $profile, PDO::PARAM_STR);
+ $stmt->bindParam(':role', $role, PDO::PARAM_STR);
$stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
- $stmt->bindValue(':code', $invitationcode, PDO::PARAM_STR);
+ $stmt->bindParam(':encryption_ivkey', $iv, PDO::PARAM_STR);
+
+ $stmt->bindParam(':admin', $admin, PDO::PARAM_STR);
- // SQLクエリの実行
+ // SQLクエリの実行
$res = $stmt->execute();
// コミット
$res = $pdo->commit();
+
+ if(safetext($serversettings["serverinfo"]["server_invitation"]) === "true"){
+ $pdo->beginTransaction();
+
+ $stmt = $pdo->prepare("UPDATE invitation SET used = :used, datetime = :datetime WHERE code = :code;");
+
+ $true = "true";
+ $stmt->bindParam(':used', $true, PDO::PARAM_STR);
+ $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR);
+
+ $stmt->bindValue(':code', $invitationcode, PDO::PARAM_STR);
+
+ // SQLクエリの実行
+ $res = $stmt->execute();
+
+ // コミット
+ $res = $pdo->commit();
+ }
+
+ } catch (Exception $e) {
+
+ // エラーが発生した時はロールバック
+ $pdo->rollBack();
}
- } catch (Exception $e) {
+ if ($res) {
+ // リダイレクト先のURLへ転送する
+ $_SESSION['userid'] = $userid;
- // エラーが発生した時はロールバック
- $pdo->rollBack();
- }
+ $_SESSION['form_data'] = array();//フォーム初期化
+ $url = 'authcodechk';
+ header('Location: ' . $url, true, 303);
- if ($res) {
- // リダイレクト先のURLへ転送する
- $_SESSION['userid'] = $userid;
- $url = 'authcodechk';
- header('Location: ' . $url, true, 303);
-
- // すべての出力を終了
- exit;
- } else {
- $error_message[] = '登録に失敗しました。(REGISTERED_DAME)';
- }
+ // すべての出力を終了
+ exit;
+ } else {
+ $error_message[] = '登録に失敗しました。(REGISTERED_DAME)';
+ }
// プリペアドステートメントを削除
$stmt = null;
@@ -541,52 +552,50 @@ $pdo = null;