0, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Lax' ]); 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(); } //ログイン認証--------------------------------------------------- blockedIP($_SERVER['REMOTE_ADDR']); $is_login = uwuzuUserLogin($_SESSION, $_COOKIE, $_SERVER['REMOTE_ADDR'], "user"); if(!($is_login === false)){ header("Location: ../home/"); exit; } //------------------------------------------------------------- if( !empty($_POST['btn_submit']) ) { $userid = safetext($_POST['userid']); $mailadds = safetext($_POST['mailadds']); if(!empty(H_CAPTCHA_ONOFF && H_CAPTCHA_ONOFF == "true")){ if(isset($_POST['h-captcha-response'])){ $hcaptcha_token = safetext($_POST['h-captcha-response']); if($hcaptcha_token){ $captcha_data = [ 'secret' => safetext(H_CAPTCHA_SEAC_KEY), 'response' => $hcaptcha_token, 'sitekey' => safetext(H_CAPTCHA_SITE_KEY) ]; $options = [ 'http' => [ 'method'=> 'POST', 'header'=> 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($captcha_data, '', '&') ] ]; $hCaptcha_result = json_decode(file_get_contents('https://hcaptcha.com/siteverify', false, stream_context_create($options)),true); if(!($hCaptcha_result["success"] == true)){ $error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)"; } }else{ $error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)"; } }else{ $error_message[] = "hCaptchaであなたが人間である確認ができませんでした。(ERROR)"; } } if(!empty(CF_TURNSTILE_ONOFF && CF_TURNSTILE_ONOFF == "true")){ if(isset($_POST['cf-turnstile-response'])){ $CF_Turnstile_token = safetext($_POST['cf-turnstile-response']); if($CF_Turnstile_token){ $CF_Turnstile_data = [ 'secret' => safetext(CF_TURNSTILE_SEAC_KEY), 'response' => $CF_Turnstile_token ]; $CF_Turnstile_options = [ 'http' => [ 'method'=> 'POST', 'header'=> 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($CF_Turnstile_data, '', '&') ] ]; $CF_Turnstile_result = json_decode(file_get_contents('https://challenges.cloudflare.com/turnstile/v0/siteverify', false, stream_context_create($CF_Turnstile_options)),true); if(!($CF_Turnstile_result["success"] == true)){ $error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)"; } }else{ $error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)"; } }else{ $error_message[] = "CloudflareTurnstileであなたが人間である確認ができませんでした。(ERROR)"; } } $options = array( // SQL実行失敗時に例外をスルー PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // デフォルトフェッチモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) // SELECTで得た結果に対してもrowCountメソッドを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); $result = $dbh->prepare("SELECT userid, mailadds, loginid, authcode, encryption_ivkey, datetime FROM account WHERE userid = :userid"); $result->bindValue(':userid', $userid); // SQL実行 $result->execute(); // ... (前略) // IDの入力チェック if( empty($userid) ) { $error_message[] = 'ユーザーIDを入力してください。(USERID_INPUT_PLEASE)'; } else { if( empty($mailadds) ) { $error_message[] = 'メールアドレスを入力してください。(INPUT_PLEASE)'; } if(!(preg_match("/^[a-zA-Z0-9_]+$/", $userid))){ $error_message[] = "IDは半角英数字で入力してください。(「_」は使用可能です。)(USERID_DONT_USE_WORD)"; } if(empty($error_message)){ if($result->rowCount() > 0) { $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する if(!(empty($row["encryption_ivkey"]))){ $userEnckey = GenUserEnckey($row["datetime"]); $dec_mailadds = DecryptionUseEncrKey($row["mailadds"], $userEnckey, $row["encryption_ivkey"]); }else{ $dec_mailadds = $row["mailadds"]; } if($row["userid"] == $userid){ if($dec_mailadds == $mailadds){ if(!empty(MAIL_CHKS)){ if(MAIL_CHKS == "true"){ $_SESSION['userid'] = $userid; $_SESSION['mailadds'] = $dec_mailadds; $url = 'startrecovery.php'; header('Location: ' . $url, true, 303); // すべての出力を終了 exit; } } if(empty($row["authcode"])){ $_SESSION['userid'] = ""; $url = 'badrecovery.php'; header('Location: ' . $url, true, 303); // すべての出力を終了 exit; }else{ $_SESSION['userid'] = $userid; $_SESSION['mailadds'] = $dec_mailadds; $url = 'startrecovery.php'; header('Location: ' . $url, true, 303); // すべての出力を終了 exit; } } else{ $error_message[] = 'IDまたはメールアドレスが違います(ID_OR_MAILADDS_CHIGAUYANKE)'; } }else{ $error_message[] = 'IDまたはメールアドレスが違います(ID_OR_MAILADDS_CHIGAUYANKE)'; } } else { $error_message[] = 'IDまたはメールアドレスが違います(ID_OR_MAILADDS_CHIGAUYANKE)'; } } } } // データベースの接続を閉じる $pdo = null; ?>