さてさてサイト開発ノート――ユーザー登録と登録2015年5月21日


基本的なユーザー管理機能は複雑ではありませんが、データベース設計、フォーム提出、データ取得、phpなどの動的言語、データベースアクセス、動的データ表示など、動的Webサイト開発の知識に関連しています.一、データベースの设计まず私达のユーザーの登录する情报は1つの地方まで保存する必要があって、后で登录する时やっと取り出して対比することができて、通常はデータベースの中で保存して、一般的にデータベースの表の设计は第3の范式を満たす必要があって、ここで私达はただ1つの最も简単なユーザーの构造で、登录のユーザー名と登录のパスワードを含みました.
  • 表名:t_user
  • ログインユーザーフィールド:name(一意のフィールドで、サイト全体でこの名前を呼ぶ人は一人しかいません.同名でニックネームフィールドを追加する必要がある場合は、ログイン名が異なり、ニックネームが同じです)
  • ログインユーザーパスワード:password
  • 二、フォームの提出はユーザーに登録させるか、登録するにはまず1つのインタフェースが必要で、この入力の内容はフォームであることを理解することができて、ユーザーに対して登録して、私たちのページコードは以下の通りです:
      <!--    login.html    login.php      -->
      <form method="post" action="addUser.php">
              :<input type="text" name="name"><br>
             :<input type="password" name="password"><br>
        <input type="submit" value="  ">
      </form>

    上のコードから、formとformに含まれる内容がフォームを形成していることがわかります.フォームを最初のhtmlの最小フレームワークに入れると、簡単なフォーム提出ページを形成することができます.methodはhttpプロトコルのいくつかの方法で、put、get、deleteなどがあります.ファイルをアップロードしないときは、ここをpostに書けばいいです.Actionはフォームコミットの処理ページで、一般的なページはhtmlまたはhtmlで終わります.ここではphpです.php言語を使用してデータを取得し、データベースにアクセスする必要がありますが、これらの機能は一般的にhtmlまたはjavascriptではできません(node.jsは言いません).formタグにはinputタグがあり、これはhtmlの入力コントロールであり、タイプはテキスト(text)、パスワード(password)などであり、inputタグには属性があり、フォーム処理ページはこの属性の値でユーザー入力値を取得する.最後のフォーム内のコントロールはコミットボタン(type="submit")であり、このボタンをクリックするとユーザーデータが処理ページにコミットされ、ここでaction="addUser.php"である.三、データ取得ユーザの編集が完了する、コミットをクリックすると、addUserにデータが転送される.php、動的言語でコミットデータを取得します.ここではphpを使用します.phpはhtmlにphp構文を埋め込むと理解できます.php言語はラベルで識別します.phpにおける内部変数の通過_POSTはpostが提出したデータを取得し、コードは以下の通りである.
    $name1 = $_POST['name'];
    $password1 = $_POST['password'];

    簡単じゃないの?これが変数であることを示し、[]は配列であることを示し、nameとpasswordは名前であり、フォーム内のコントロールnameコントロールの値でもある.四、データベースアクセスの上でユーザーの入力情報を取得して、私達はこれらの情報を持続化する必要があって、つまりデータベースに保存して、データベースアクセスは一般的にsql言語を使って、データ挿入の言語は一般的にinsert into tab_ですname(field1, field2, f3, f4) values(v1, v2, v3, v4);この例のユーザー登録には、次のパッチを使用します.
    "insert into t_user(name, password) values('".$name."', '".$password."')"

    しかし、sql接合はsql注入のリスクがあるため、事前コンパイルを使用してパラメータバインドを行うのが安全です.コードは以下の通りです.
    $name1 = $_POST['name'];
    $password1 = $_POST['password'];
    $mysql = new mysqli("localhost","dbloginname","dbpassword","defaultschemal");
    $stmt = $mysql->prepare("insert into t_user(name, password) values(?, password(?))");
    $stmt->bind_param('ss', $name1, $password1);
    $stmt->execute();
    $stmt->close();
    $mysql->close();

    上のsqlのつなぎ合わせは使いますか?プレースホルダは、パラメータをバインドしてbind_を呼び出す必要があることを示します.paramが対応するデータ'ss'に入力すると、データ型が表示されます.ここでは文字列(s)の2つです.他のタイプはマニュアルを参照してください.後にパラメータが入力された値です.文の中にmysql関数password()を使って、パスワードを加工して、密文を保存することを意味して、このようにユーザーの情報はもっと秘密にします.最後に、リソースを閉じてください.これでユーザー登録が完了します.五、ユーザー登録ユーザーの登録と登録の流れの差は多くなく、ユーザーは登録情報を提出し、処理ページはデータ検証を行い、検証結果に基づいて登録状態を変更する.違いは以下の通りで、ユーザー登録はデータ検証であり、前にデータを保存し、ここでデータを照会し、コードは以下の通りである.
    $name = $_POST['name'];
    $password = $_POST['password'];
    $stmt = $mysql->prepare("select * from t_user where name=? and password=password(?)");
    $stmt->bind_param('ss', $name, $password);
    $stmt->execute();
    $stmt->store_result();
    if($stmt->num_rows > 0) {
        echo "login success";
        session_start();
        $_SESSION["name"]=name;
        $_SESSION["nickname"]=name;
    } else {
        echo "login failure.";
    }

    上記のコードは、ユーザー名とパスワードが一致するレコードがある場合にログインに成功し、そうでなければログインに失敗することを意味します.ログインに成功した後、私たちは後続の操作でどのようにログイン状態を取得しますか?一般的にはセッションまたはこのクッキーを使用してステータスを設定できます.ここではセッションを使用します.   
    session_start();
    $_SESSION["name"]=name;
    $_SESSION["nickname"]=name;

    次回はセッションをチェックしてログインしたかどうかを判断します.
    function is_login() {
        $ret = isset($_SESSION["name"]);
        return $ret;
    }

    はい、ユーザー登録とログインは基本的に完了しましたが、これは簡単な実現にすぎません.また、データ検証などの最適化が必要な場合は、皆さんに改善してもらいましょう.
     
    /*********************************
    *     :http://www.aihaiyo.com
    **********************************/