それは現実の世界のためのウェブサイトを作ることになると、簡単な登録フォームを持つことが不可欠です。 インターネットは会員のウェブサイトで実質的に構築されています。 私のphp member system tutorial seriesの一環として、phpで簡単な登録フォームを作成します。
非常に迅速かつゼロから書くのは簡単、この単純な登録フォームは、単にユーザー名、電子メール、およびパスワードで任意のユーザー登録をできるようになりますが、
私たちのphp登録ページのソースコードの非常に簡単な概要はこれです:
<?php // connect to the database // check for a user being logged in // process the registration form data ?> <html> display a header display the error message (if there is one) display the registration form </html>
phpで簡単な登録フォームを作成する方法
- 登録フォームのデータベースを作成する
- HTML/CSSで簡単な登録フォームを作成する
- phpを使用してMySQLデータベースに接続する
- 登録フォームの入力を処理する
- データベースに新しいユーザーアカウントを追加する
ステップ1:登録フォームのデータベースを作成する
多くの場合、ウェブサイトを作るための最初のステップは、データベースを作成することです。 そして、確かに、あなたはおそらく、後でデータベースに変更を加える必要があります。 しかし、最初にデータベースを設定すると、あなたに素晴らしい出発点を与える
私たちは、ユーザー名とパスワードを含むユーザーのアカウント情報のすべてを保 先に行くと、サーバー上のあなたのphpMyAdminコントロールパネルにログインします。 (phpMyAdminを初めて使用する場合は、phpMyAdminの紹介記事を参照してください)
php会員システムのデータベースフィールド
すべてのデータベースに名前が必要です。
注:phpMyAdminの使用方法とMySQLデータベースの仕組みについて、少なくとも基本的な理解があると仮定しています。 そうでない場合は、phpMyAdminの基本またはMySQLデータベースの操作をここで読むことができますHeyTuts.com.(これらのリンクは新しいタブで開きます)
簡単な登録フォームを作成しているので、データベースには7つのフィールドしか必要ありません。 こうすれば私達は十分な基本的な機能性をすぐに得る。 しかし、まだパスワードリセットフォームのような余分な機能を追加することができます。
- id-これは各ユーザーの一意の識別子になります。 Idフィールドが整数であり、主キーで自動増分に設定されていることを確認する必要があります。 これは必見です!!! より複雑なメンバーシステムに進むと、ユーザーのアカウントidを使用すると、データベースレコードを簡単にリンクできます。
- ユーザー名–これは自明である必要があります。 私は50文字のvarcharに設定しました。 非常にまれに、ユーザーは10-15文字より長いユーザー名を望んでいるので、50はそれを世話する必要があります。 しかし、これはまた、あなたのphpコードであなたの希望するユーザー名の長さを設定する能力を与えるでしょう。
- email–ユーザーのメールアドレス。 それを100文字のvarcharに設定します。
- パスワード–ユーザーのパスワードには基本的な暗号化を使用します。 したがって、50文字のvarcharはうまくいきます。 後で、md5()関数を使用して、簡単なセキュリティのための基本的なパスワードハッシュを作成することがわかります。
- date_created–これは、ユーザーがアカウントを作成したときのtime()値を格納します。
- last_login–ここでこのレコードを更新することで、ユーザーが最後にログインした時間を追跡できます。 再びtime()関数からのものになります。
- ステータス–アカウントの有効化ステータスを追跡します。 この値をチェックして、ユーザーがアカウントを有効にしたかどうかを確認し、それに基づいてログインするか、アカウントを有効にするための通知を
ステップ2:HTML/CSSで簡単な登録フォームを作る
データベースの設定で、ユーザーがアカウントを作成するために使用する実際の登録フォームを作成できます。 ほとんどすべてのウェブサイトのフォームと同様に、HTMLとCSSで作成します。
レジスタを作成します。webサーバー上のphpファイル
私は私の登録フォームページregisterを呼び出すつもりです。phpので、先に行くと、あなたのwebサーバー上でこのファイルを作成します。 Xampp(外部リンク)を使用して、localhost webサーバー上でこのメンバーシステム全体を作成することをお勧めします。
基本的なナビゲーションヘッダーを作成する
このphpメンバーシステムチュートリアルのヘッダーも簡単なものになります。 ちょうどいくつかの超基本的なナビゲーションのためのいくつかのリ 以下は、私たちのレジスタのための基本的なページの設定です。phpファイル。
<html> <head> <title>php member system | registration form</title> </head> <body> <h1>member system tutorial - register</h1> <a href="./index.php">Home</a> | <a href="./register.php">Register</a> | <a href="./login.php">Login</a> <hr /> <!-- error message code here --> <!-- registration form html code here --> </body></html>
実際の登録フォームを作成します
今、私たちは、ユーザーが見て、対話しようとしているフォームを作成することができます。 ユーザー名、パスワード、および電子メールアドレス:あなたは私たちのデータベースの設定に戻って考える場合は、我々は、ユーザーが入力することができる唯一の3つのフ フィールドが必要なラベルを表示するためのテキストを追加することを忘れないでください。
良い習慣のうち、私は自分のパスワードを確認するために、ユーザーのための追加のパスワードフィールドを追加したいです。 そして、ユーザーに必要なパスワードの強さを伝えるようにしてください。
ユーザーのアカウントの安全なパスワードを取得するには、少なくとも5文字の長さが必要です。 これらのいずれかの少なくとも一つの特殊文字で:!#$.,:;(). これは文句を言わない使用に最も安全なパスワードを与えますが、それはあなたの後に強力なパスワードを強制する方法のアイデアを与えます。
<form action="./register.php" class="form" method="POST"><h1>create a new account</h1><div class=""><?php// check to see if the user successfully created an accountif (isset($success) && $success == true){echo '<p color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<p>';}// check to see if the error message is set, if so display itelse if (isset($error_msg))echo '<p color="red">'.$error_msg.'</p>';?></div><div class=""><input type="text" name="username" value="" placeholder="enter a username" autocomplete="off" required /></div><div class=""><input type="text" name="email" value="" placeholder="provide an email" autocomplete="off" required /></div><div class=""><input type="password" name="passwd" value="" placeholder="enter a password" autocomplete="off" required /></div><div class=""><p>password must be at least 5 characters and<br /> have a special character, e.g. !#$.,:;()</font></p></div><div class=""><input type="password" name="confirm_password" value="" placeholder="confirm your password" autocomplete="off" required /></div><div class=""><input class="" type="submit" name="registerBtn" value="create account" /></div><p class="center"><br />Already have an account? <a href="<?php echo SITE_ADDR ?>/login">Login here</a></p></form>
あなたが気づいたら、私はちょうどユーザーのためにすべてをうまく整列させるために、簡単なテーブルに私たちの登録フォームを入れています。 ここで注意すべき重要なことは、フォームアクション(別名投稿)、テキストボックスの名前、および送信ボタンの名前です。
これらのフィールド名はすべて、ユーザーがフォームを送信した後にデータを取得するためにバックエンドスクリプトで重要です。 また、フォームメソッドPOSTは、GETのようにurlに送信するのではなく、ユーザーからフォームデータを非表示にすることに注意してください。
エラーメッセージを表示し、必要なときに
登録ページで、あなたとあなたのユーザーは、実際にエラーメッセージを表示するのに役立ちます。 必要に応じて。 私はそれをナビゲーションの下と登録フォームの上に置きます。 このメッセージは、ユーザーが何を間違っていたのか、アカウントを作成する前に修正する必要があるのかをユーザーに示します。
基本的に私がやろうとしているのは、named successと.error_msgという名前の2つの変数を作成することです。 これらの2つの変数が設定されているかどうかを簡単に確認します。 それらが設定されているかどうか(別名作成され、値が割り当てられているかどうか)に基づいて、該当するエラーメッセージが表示されます。
<?php // check to see if the user successfully created an account if (isset($success) && $success == true){ echo '<font color="green">Yay!! Your account has been created. <a href="./login.php">Click here</a> to login!<font>'; } // check to see if the error message is set, if so display it else if (isset($error_msg)) echo '<font color="red">'.$error_msg.'</font>'; else echo ''; // do nothing?>
アイデアは、データの処理中にエラーがある場合、error error_msg変数にエラーメッセージを設定することができ、それがユーザーに表示され、情報を処理します。 ユーザーが自分のアカウントを正常に作成した場合、$successをtrueに設定し、成功メッセージを緑色で表示します(緑色は常に良いので、私は正しいですか??).
ステップ3: Php
を使用してMySQLデータベースに接続すると、バックエンドのphpコードの一部にアクセスできます。 私たちは、あなたが任意のMySQLデータベース操作を行うことができます前に、あなたは、データベースに接続する必要があります。 ほとんどのwebサイトは、別の構成または接続スクリプトでデータベースに接続します。 だから私たちは同じことをします。
connectという名前の新しいphpスクリプトを作成します。phpとレジスタと同じディレクトリに保存します。phpファイル。
<?php $conn = mysqli_connect("localhost", "root", "password", "code_projects");?>
ステップ4:登録フォームの入力を処理します
今、この単純な登録フォームの肉とジャガイモまで。 送信後にフォームを処理するphpコード。
すでにデータベース接続スクリプトを作成しているので、require_once()関数を使用して接続スクリプトをロードすることができます。
<?php // include our connect script require_once("connect.php"); // check to see if there is a user already logged in, if so redirect them session_start(); if (isset($_SESSION) && isset($_SESSION)) header("Location: ./index.php"); // redirect the user to the home page?>
その後、phpセッションを使用して、ユーザーがログインしているかどうかを追跡します。 今のところ、我々はちょうどセッション変数が設定されているかどうかを確認します。 ログインフォームのチュートリアルでセッション変数を設定する方法について説明します。 ユーザーがログインしている場合は、ホームページにリダイレクトされます。
すべての登録フォームデータを取得
すべてのフォームデータを取得する準備ができたら、まず送信ボタンがクリックされたかどうかを確認します(フォー そうであれば、すべてのフォームデータを変数に格納します。 フォームが送信されなかった場合、ユーザーにフォームを表示する以外は何もしません。
フォームタイプのPOSTを使用しているため、phpコードを使用してPOSTデータを取得する必要があります。 フォームからのすべての「投稿された」データは、$_POST配列変数に含まれます。 その後、フォーム要素の名前を配列キーとして使用できます。 このように、あなたが探している特定のデータを取得することができます:
if (isset($_POST)){ // get all of the form data $username = $_POST; $email = $_POST; $passwd = $_POST; $passwd_again = $_POST; // next code block }
フォームデータの基本的なチェックを実行します
次に、ユーザーが登録フォームを完了したかどうかを確認します。 メールアドレス、ユーザー名、パスワードを確認します。 各変数が空の文字列ではないことを確認すると、そこにテキストがあることを意味しますよね?
次に、パスワードとパスワードがまったく同じテキストであることを確認します。 帽子およびすべて。 If文で行に3つの等号(===)を使用すると、文字列は大文字と小文字が一致します。
基本的には、fを比較”こんにちは”を”こんにちは”を用いた等号その真の結果です。 これは、当社のコードは”ありこんにちはとこんにちはは同じです。 しかし、3つの等号を使ってそれらを比較すると、私たちのコードは「いいえ! そこで止まれ それらの言葉は一致しません。 大きなol’偽!「理にかなっている?
// verify all the required form data was enteredif ($username != "" && $passwd != "" && $passwd_again != ""){ // make sure the two passwords match if ($passwd === $passwd_again){ // make sure the password meets the min strength requirements if ( strlen($passwd) >= 5 && strpbrk($passwd, "!#$.,:;()") != false ){ // next code block } else $error_msg = 'Your password is not strong enough. Please use another.'; } else $error_msg = 'Your passwords did not match.';}else $error_msg = 'Please fill out all required fields.';
次に、パスワードが強度要件を満たしていることを確認できます。 安全なパスワードのための私たちのohhhとても印象的な基準。 少なくとも5文字の長さで、少なくとも一つの特殊文字を使用しています。
strlen()を使用して、5文字の最小値を満たすのに十分な長さであることを確認します。 落ち着け 次に、strpbrk()関数を使用して、リスト内の特殊文字のいずれかが存在するかどうかを確認できます。 この関数は、特殊文字が存在しない場合にfalseを返します。 存在する場合は文字列を返します。
あなたは上の機能の詳細を読むことができますphp.net 参照。 基本的には、文字列に存在する特殊文字のリストをチェックするのは非常に迅速で簡単な方法です。 既存以外の私たちは本当にそれらを気にしないからです。
ステップ5:データベースに新しいユーザーアカウントを追加
すべてのフォームデータが良好で使用可能であることがわかったので、データベースチェックを開始 まず、ユーザー名がすでにデータベースにあるかどうかを確認します。 返されたレコードがゼロの場合、ユーザー名はデータベースにありません。 他に何かが返された場合は、ユーザー名が取得されます。
次に、作成しようとしているユーザーアカウントのデータベースレコードに保存する必要がある他のランダムデータの一部を保存するために、いくつかの追加 このコードブロックの下には、各変数の説明があります。
免責事項:このチュートリアルの目的のために、非常に複雑なパスワード暗号化を使用していないことを指摘したいと思います。 私は単にプレーンテキストでパスワードを保存しないという効果のためにそれをやっています(それをしないでください、それはちょうど悪いです)。 あなたは、より実質的かつ安全な何かをする方法を学びたい場合は、私たちのパスワードセキュリティのチュートリアルをチェックしてください。 私はphpを使用して、より安全なパスワードを作成し、保存するためのさまざまな方法について詳しく説明します。
// query the database to see if the username is taken$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 0){ // create and format some variables for the database $id = ''; $passwd = md5($passwd); $date_created = time(); $last_login = 0; $status = 1; // next code block}else $error_msg = 'The username <i>'.$username.'</i> is already taken. Please use another.';
- $id-データベースが割り当てる自動インクリメントidのプレースホルダーが必要です。
- pass passwd–md5()ハッシュを使用してユーザーのパスワードに基本的な暗号化を追加しています
- time date_created–time()関数を使用して、ユーザーがアカウントを作成した正確な瞬間にタイムスタンプを取得できます。 これは後でdate()
- date last_loginを使用して表示するために使用できます–後でこれを使用して、ユーザーがいつログインしたかを追跡します。 彼らはまだログインしていないので、我々はゼロに設定しなければなりません。
- $status–このフィールドを使用して、電子メールを介してアクティブ化したり、管理目的で無効にしたり、本当に何があなたのボートを浮かべるかなど、アカウ 私はデフォルトで1(one)に設定し、アクティブなアカウントを意味し、すぐにログインすることができます。
これで、最終的にユーザーのアカウントのデータベースレコードを作成できます。 挿入クエリを使用すると、データベースレコード情報をすべて慎重に一覧表示することができます。
クエリがどのように機能するかの基本を理解するのに助けが必要な場合。 または、一般的なデータベース操作でさえ、MySQLiデータベース操作に関する私の他のチュートリア
レコードを挿入した後、良い習慣として、レコードが実際に追加されたことを確認します(あなたが知らないので、何らかのエラーがあった可能性があ)ユーザー名が存在しないことを確認する前から、存在するかどうかを確認し、割り当てられたレコードを見つけた場合、新しいアカウントがデータベースに作成されたことがわかります。 最後に、ユーザーが登録を完了し、アカウントが作成されたため、true success変数をtrueに設定しました。
// insert the user into the databasemysqli_query($conn, "INSERT INTO users VALUES ( '{$id}', '{$username}', '{$email}', '{$passwd}', '{$date_created}', '{$last_login}', '{$status}')");// verify the user's account was created$query = mysqli_query($conn, "SELECT * FROM users WHERE username='{$username}'");if (mysqli_num_rows($query) == 1){ /* IF WE ARE HERE THEN THE ACCOUNT WAS CREATED! YAY! */ /* WE WILL SEND EMAIL ACTIVATION CODE HERE LATER */ $success = true;}else $error_msg = 'An error occurred and your account was not created.';
登録フォームの最後の仕上げ
今、私たちの全体の登録で。書かれたphpコードは、我々は、webブラウザからそれを表示することができます。 あなたも、それをテストし、あなたの新しい登録ページに自分のアカウントを作成することができます!
私たちの簡単な登録フォームを作成して、phpメンバーシステムの次の部分は、ログインフォームを作成することです。 ユーザーが自分のアカウントにログインできない場合、アカウントを作成するための登録フォームを持つことのポイントは何ですか?