// セッション開始 session_start(); // 既にログインしている場合にはメインページに遷移 if (isset($_SESSION['USERID'])) { header('Location: ../index.html'); exit; } $db['host'] = 'localhost'; $db['user'] = 'root'; $db['pass'] = ''; $db['dbname'] = 'test'; $error = ''; // ログインボタンが押されたら if (isset($_POST['signUp'])) { if (empty($_POST['username'])) { $error = 'ユーザーIDが未入力です。'; }else if (empty($_POST['password'])) { $error = 'パスワードが未入力です。'; } if (!empty($_POST['username']) && !empty($_POST['password'])) { $username = $_POST['username']; $password = $_POST['password']; $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); // idの重複とパスワードの桁数チェック function cheak($id,$count){ if($count > 0){ throw new Exception('そのユーザーIDは既に使用されています。'); } if ($id < 8) { throw new Exception('パスワードは8桁以上で入力してください。'); } } try{ $sqlname = 'SELECT * FROM userdata WHERE `name` = "$username"'; $ss = $pdo->query($sqlname); $count = $ss->fetchColumn(); $id = strlen($_POST['password']); cheak($id,$count); $stmt = $pdo->prepare('INSERT INTO `userdata`(`name`, `password`) VALUES (:username, :password)'); $pass = password_hash($password, PASSWORD_DEFAULT); $stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':password', $pass, PDO::PARAM_STR); $stmt->execute(); $_SESSION['USERID'] = $username; echo 'script> alert("登録が完了しました。"); location.href="main.php"; /script>'; } catch(Exception $e){ $error = $e->getMessage(); } } }