LoginSignup
2
2

More than 5 years have passed since last update.

Webから取得したデータでサービスを作ってみる(Part2)

Posted at

JavaScriptで要ログインサイトのデータ収集サービスを作ってみるでデータ収集の機構を作ったので、それを用いたサイトを作ることにしました。(某音ゲーのスコアツールです。)

(作ったサイトはここになります)

やることリスト

  • 取得したデータを管理するDBに入れる
  • DBに入れたデータを見せる
  • ユーザ登録・ログイン・ログアウトをしてユーザごとに管理する

ユーザ登録

  • ログイン済みユーザはログイン後のメインページに遷移させる
  • ユーザ・パスワードを登録させる
    • パスワードはハッシュ化して登録(password_hashする)
    • 重複ユーザを許さない
addUser.php
<?php
session_start();
// 既にログインしている場合にはメインページに遷移
if (isset($_SESSION['XXXX'])) {
    header('Location: ShowData.php');
    exit;
}

$error = '';
// ログインボタンが押されたら
if (isset($_POST['signUp'])) {
    // user欄確認
    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'];
        $OuterREF = intval($_POST['OuterREF']);
        $pdo = CreatePDO();
        try{
            //------- DB確認----------
            // 登録作業+重複確認
            $res = SetUserData($pdo,$username,$password,$OuterREF);
            if($res == FALSE){
                $error = 'ユーザ名が重複しています';
            }else{
                $_SESSION['XXXX'] = $res;
                echo '<script>
                alert("登録が完了しました。");
                location.href="ShowData.php";
                </script>';
            }
        } catch(Exception $e){
            $error = $e->getMessage();
        }
    }
 }

// 登録+重複確認
function SetUserData($pdo,$userName,$password,$OuterREF){
    // 重複ユーザー名確認
    $SQL = '登録予定のユーザネームを含む件数のSQL';
    if($res = $pdo->query($SQL)){
        if($res->fetchColumn() > 0){
            // 同じ名前のユーザがいる
            return FALSE;
        }
    }
    // ユーザ数確認
    $SQL = 'SELECT COUNT(*) FROM  tableName';
    $allUser = 0;
    if($res = $pdo->query($SQL)){
        $allUser = $res->fetchColumn();
    }


    // ユーザ登録
    $stmt = $pdo->prepare('登録SQL');
    $stmt->bindParam(':UserName', $userName, PDO::PARAM_STR);
    // パスワードをハッシュ化して登録
    $stmt->bindParam(':pass',password_hash($password, PASSWORD_DEFAULT) , PDO::PARAM_STR);
    $stmt->execute();

    // UserID返却
    return sprintf('MSC%04d',$allUser);
}
?>
<!-- HTML省略(自身にPOSTするようなフォーム) -->

 次回

ログイン関連書きます

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2